因此,我正在使用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;
起初,我以为是Sprite的运动引起了滞后,但是当我添加重力时,我注意到问题仅在于X轴运动。当角色由于重力而掉落时,它以30 FPS的速度运行,但是当它向不是Y(X,-X)的任何方向移动时,则会将游戏速度减慢到4 FPS。
虽然我的计算机非常糟糕,但我认为这不是造成帧速率问题的原因。
规格: 处理器:1.58 GHz 内存: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);
注意:这适用于类,因此这些功能在播放器类内部。
答案 0 :(得分:0)
您介意将代码中负责运动的部分放在一边吗?
还要检查在屏幕上放置内容的位置,要创建变量,将其设置为图像并调用该变量。至于仅在向左移动时发生的情况,请确保左脚本与右脚本相同,但是--而不是+。