我正在尝试使用操作脚本2.0制作一个简单的平台游戏,但是我从键盘获取输入时遇到了问题。我有两个函数“myKeyDown”和“myKeyUp”,无论何时按下/释放键都会被调用。获取已发布密钥的代码
keyListener.onKeyDown = function(){
myKeyDown();
}
keyListener.onKeyUp = function(){
myKeyUp();
}
该函数检查使用Key.getCode()方法按下哪个键。它适用于myKeyDown,但它是myKeyUp的bug。如果(例如)我先按A(向左移动),然后W(跳跃),然后释放W然后释放A,则会发生错误。玩家不会停止移动(即使这是您释放时发生的情况A)
我明白这里的问题。 Key.getcode返回最后一个按键的代码,我想要的是最后释放的键的代码。我一直在寻找像这样的功能小时,但我还没有找到任何东西。
这里有两个myKeyDown和myKeyUp功能
function myKeyDown(){
//A
if(Key.getCode() == 65){
velX=-3;
}else
//D
if(Key.getCode() == 68){
velX=3;
}else
//W
if(Key.getCode() == 87){
if(isInAir == false){
jump();
}
}
}
function myKeyUp(){
//A
if(Key.getCode() == 65){
if(velX==-3){
velX=0;
}
}else
//D
if(Key.getCode() == 68){
if(velX==3){
velX=0;
}
}
}
混合事件和投票,老是出问题。即使您存储了密钥的状态,您也可以在事件处理程序启动时受到处理。如果你的谷歌动作多个键,你会得到一些想法。 –