1

所以我正在用 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 类中。

4

1 回答 1

0

你介意把负责运动的代码部分放在一边吗?

另外,检查你把东西放在屏幕上的位置,你想创建一个变量,将它设置为图像,然后调用那个 var。至于它只在向左移动时发生,请确保左侧脚本与右侧相同,但 - 而不是 +。

于 2018-11-11T02:37:14.123 回答