当连续快速按相反方向时,加速度为零。

2024-10-01 00:31:20 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的英雄类(玩家控制的类)中运行每个更新的代码:

self.speedx += ((self.dirx * self.maxspeed) - self.speedx) * self.acc
self.x+=self.speedx
self.speedy += ((self.diry * self.maxspeed) - self.speedy) * self.acc
self.y+=self.speedy

这是我的事件获取程序代码:

if event.type == KEYUP:
            if event.key == K_RIGHT:
                active.dirx=0
            if event.key == K_LEFT:
                active.dirx=0
            if event.key == K_UP:
                active.diry=0
            if event.key == K_DOWN:
                active.diry=0
        if event.type == KEYDOWN:
            if event.key == K_RIGHT:
                active.dirx=1
            if event.key == K_LEFT:
                active.dirx=-1
            if event.key == K_UP:
                active.diry=-1
            if event.key == K_DOWN:
                active.diry=1

问题是,当我向右走一段时间(或向上),然后放开并快速按相反的方向(向左,向下),我的加速度为零。如果这场比赛没有太多的反射,而且我不能让球员在战斗中拉屎的话,这就不是什么问题了

有什么解决办法吗?如果我不够清楚就说


Tags: keyselfrighteventiftypeleftactive
1条回答
网友
1楼 · 发布于 2024-10-01 00:31:20

可能是在KEYUP之前接收到相反的KEYDOWN事件。我会保护KEUP事件处理,以确保没有发生相反的KEYDOWN。比如:

if event.key == K_RIGHT and active.dirx == 1:
      active.dirx=0

...

相关问题 更多 >