【发布时间】:2015-04-15 00:03:29
【问题描述】:
我有一个太空侵略者风格的游戏,它运行良好,但是当我按下一个键来移动我的玩家的飞船时,外星人会减速,直到松开键。这是因为按下键时运行的代码比不按下键时运行的代码多(显然)。这是我按键时运行的代码
keys = pygame.key.get_pressed()
if keys[pygame.K_UP]:
objShip.move(1)
elif keys[pygame.K_RIGHT]:
objShip.move(2)
elif keys[pygame.K_DOWN]:
objShip.move(3)
elif keys[pygame.K_LEFT]:
objShip.move(4)
调用如下代码
def move(self, d):
self.direction = d
if self.direction == 1:
self.image = pygame.image.load("shipu.png").convert()
if self.yco >= 0:
self.yco -= 1
if self.xco >= 884:
self.xco = 860
有没有一种方法可以平衡外星人的速度,而不涉及将等待命令(或空循环或其他任何东西)放入 else 语句以充当制造延迟?
我可以把所有的代码都放在这里,但是现在有点长,所以我想我会尝试一下,以防有明显的我遗漏的东西。
【问题讨论】:
-
你打算做什么样的运动?您想要静态速度还是使用加速度的变化速度?
-
我只是想让船在按键时以固定的速度移动(目前是1像素)
-
然后设置静态速度为
self.speed = 1。然后从位置上加减。 -
我已经这样做了,只是硬编码为 1 个像素,而不是添加 1 个像素的属性