所以我正在用 Arcade 制作一个平台游戏 2D 游戏,出于某种原因,我的游戏总是以 30 FPS 而不是 60 FPS。
不仅如此,当我按下左箭头键将我的角色向左移动时,它会下降到 ~4 FPS。
我的运动系统的代码(我必须制作一个相机)
def update(self, x):
# update player
if self.player != None:
self.player.real_x += self.player.movement
self.player.center_y -= gravityConstant
由于相机,我使用“real_x”变量而不是使用“center_x”。忽略重力不会加速并始终使角色以恒定速度下落的事实(将解决该问题)。
播放器将始终位于屏幕中央:
self.player.center_x = self.x / 2;
起初我以为是精灵的运动造成了延迟,但当我添加重力时,我注意到问题只是 X 轴运动。当角色因重力而下落时,它以 30 FPS 的速度运行,但当它向任何不是 Y (X, -X) 的方向移动时,它会将游戏速度减慢到 ~4 FPS。
我的电脑虽然很糟糕,但我认为这不是这个帧率问题的责任。
规格: 处理器:1.58 GHz RAM:3.99 / 4.00 GB
编辑:左右运动都会发生这种情况。移动是通过 arcade.Window 类处理的。
功能代码:
def onKeyDown(self, symbol):
if symbol == arcade.key.LEFT:
self.movement = -self.walk_speed;
elif symbol == arcade.key.RIGHT:
self.movement = self.walk_speed;
elif symbol == arcade.key.UP:
self.jumping = True;
def onKeyUp(self, symbol):
if symbol == arcade.key.LEFT:
self.movement = 0;
elif symbol == arcade.key.RIGHT:
self.movement = 0;
elif symbol == arcade.key.UP:
self.jumping = False;
on_key_press 和 on_key_release 的代码:
def on_key_press(self, symbol, modifier):
if self.player != None:
self.player.onKeyDown(symbol);
def on_key_release(self, symbol, modifier):
if self.player != None:
self.player.onKeyUp(symbol);
注意:这适用于类,因此这些函数位于 Player 类中。