yon*_*ead 1 python rendering pygame python-3.x
所以我正在 pygame 中制作一个 2D 像素艺术游戏,正如您所假设的,我所有的精灵纹理看起来都非常小。我想知道是否有一种方法可以在我的游戏中全局缩放所有内容,而不必单独缩放每个精灵或弄乱坐标。每个精灵都会在一个网格上移动:一个单位是 16x16 像素,例如,当我的玩家精灵移动时,它只会向 16 像素的方向移动。
这是我的主要脚本:
import sys
from pygame.locals import *
import pygame
from game.sprites import Ghost
pygame.init()
WINDOW_WIDTH = 640
WINDOW_HEIGHT = 640
DES_WIDTH = 64
DES_HEIGHT = 64
COL_BG = (46, 48, 55)
COL_FG = (235, 229, 206)
X = 1000
Y = 1000
win = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))
pygame.display.set_caption("Through The Doors")
running = True
paused = False
# INITIALIZE SPRITES
player = Ghost()
all_sprites = pygame.sprite.Group()
all_sprites.add(player)
clock = pygame.time.Clock()
while running:
clock.tick(30)
if not paused:
win.fill(COL_BG)
all_sprites.update()
all_sprites.draw(win)
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
keys = pygame.key.get_pressed()
if keys[pygame.K_RIGHT]:
player.go_right()
elif keys[pygame.K_LEFT]:
player.go_left()
elif keys[pygame.K_UP]:
player.go_up()
elif keys[pygame.K_DOWN]:
player.go_down()
pygame.display.flip()
pygame.quit()
Run Code Online (Sandbox Code Playgroud)
我确实有更多的精灵要加载,但我想先解决缩放问题。
我想知道是否有一种方法可以在我的游戏中全局扩展所有内容,而不必单独扩展每个精灵 [...]”
不,没有办法。您必须单独缩放每个坐标、每个尺寸和每个表面。PyGame 用于以像素为单位的图像(表面)和形状。无论如何,放大图像将导致模糊、模糊或锯齿状(Minecraft)外观。
有没有办法我可以制作一个单独的表面,然后将它放在基础窗口表面的顶部,然后缩放它?
是的当然。
创建要在 ( )上绘制的Surfacewin。使用pygame.transform.scale()或pygame.transform.smoothscale()将其缩放到窗口大小和blit实际显示Surface ( display_win):
display_win = pygame.display.set_mode((WINDOW_WIDTH*2, WINDOW_HEIGHT*2))
win = pygame.Surface((WINDOW_WIDTH, WINDOW_HEIGHT))
while running:
# [...]
if not paused:
win.fill(COL_BG)
all_sprites.update()
all_sprites.draw(win)
# [...]
scaled_win = pygame.transform.smoothscale(win, display_win.get_size())
# or scaled_win = pygame.transform.scale(win, display_win.get_size())
display_win.blit(scaled_win, (0, 0))
pygame.display.flip()
Run Code Online (Sandbox Code Playgroud)
最小的例子:
repl.it/@Rabbid76/PyGame-UpScaleDisplay
| 归档时间: |
|
| 查看次数: |
284 次 |
| 最近记录: |