如何在Processing中实现支持多键同时按下的2D俯视移动系统?
解决多键同时按下仅响应最后按键的问题
你的问题根源出在Player类的update()方法中使用了else if语句。else if会导致一旦某个条件成立,后续的条件就不会被检查,因此同一时间只能响应一个方向的按键。
修复方法
修改Player类的update()方法,将所有else if替换为独立的if语句:
void update(){ if(up){ y -=7.5; } if(down){ y +=7.5; } if(left){ x -=7.5; } if(right){ x +=7.5; } }
原理说明
使用独立的if语句后,每帧都会检查所有方向的按键状态,多个方向的按键可以同时生效,这样就能实现斜向移动等多键组合操作。之前的Pong游戏因为只需要单轴移动(比如 paddle 只能上下),所以else if是可行的,但俯视视角游戏需要支持多轴同时移动,因此必须改用独立的条件判断。
另外,你的keyPressed()和keyReleased()方法中的else if没有问题,因为每个按键事件都是单独触发的,不会影响多键状态的记录。
内容的提问来源于stack exchange,提问作者Np3
相关产品推荐
相关产品推荐

