Arcade的帧率问题

时间:2018-11-11 02:11:54

标签: python python-3.x

因此,我正在使用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);

注意:这适用于类,因此这些功能在播放器类内部。

1 个答案:

答案 0 :(得分:0)

您介意将代码中负责运动的部分放在一边吗?

还要检查在屏幕上放置内容的位置,要创建变量,将其设置为图像并调用该变量。至于仅在向左移动时发生的情况,请确保左脚本与右脚本相同,但是--而不是+。