这是我的英雄类(玩家控制的类)中运行每个更新的代码:
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
问题是,当我向右走一段时间(或向上),然后放开并快速按相反的方向(向左,向下),我的加速度为零。如果这场比赛没有太多的反射,而且我不能让球员在战斗中拉屎的话,这就不是什么问题了
有什么解决办法吗?如果我不够清楚就说
可能是在KEYUP之前接收到相反的KEYDOWN事件。我会保护KEUP事件处理,以确保没有发生相反的KEYDOWN。比如:
相关问题 更多 >
编程相关推荐