这是我的Hero类中的代码(播放器控制的那个),它运行每次更新:
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
这是我的事件getterizer代码:
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
问题在于,当我向右走(或向上)然后放开并快速按相反方向(向左,向下)时,我对该方向的加速度变为零。如果游戏不涉及很多反射并且我不能让玩家在战斗中挣扎,这不会是一个大问题。
任何解决方案?如果我不够清楚就说。
答案 0 :(得分:0)
可能是在KEYUP之前收到了相反的KEYDOWN事件。我会保护KEUP事件处理,以确保没有发生相反的KEYDOWN。类似的东西:
if event.key == K_RIGHT and active.dirx == 1:
active.dirx=0
...