我正在编写一个游戏,我希望角色在按住空格键后向其跳跃一段时间后跳跃,然后将电荷添加到跳跃中。
然而,我目前所拥有的代码只能在50%的时间内运行,如果玩家同时按住一个方向移动按钮,它几乎无限期无效。
function greenTimerHandler(e:TimerEvent){
if(spacePressed&&downBumping){
charge += 3;
if(charge >= 50){
charge = 50;
}
} else if(!spacePressed&& downBumping) {
greenSlimeJump(charge);
greenSlimeTimer.stop();
}
}
//And the jump function
function greenSlimeJump(greenCharge){
ySpeed = greenCharge * -1.5
slimeAmt -= Math.floor(greenCharge * 0.25);
charge = 0;
}
downBumping只是一个基于播放器底部的hitTestPoint的布尔碰撞值...
有什么方法可以让它实际上比现在更多地运行跳转功能?它甚至会在下次尝试跳转时保持充电值,并且永远不会减去slimeAmt值,因为代码似乎完全跳过了绿色跳转功能。
下面是downBumping代码:
if(back.collisions.hitTestPoint(player.x + downBumpPoint.x, player.y +
downBumpPoint.y, true)){
downBumping = true;
} else {
downBumping = false;
}
并且按下了计时器/空间:
if(e.keyCode == 32 && slimeAction){
spacePressed = true;
if(slimeType == 1 && downBumping){
greenSlimeTimer.start();
}
}