スペースバーを押してジャンプアップを少し充電した後、キャラクターがジャンプしてジャンプするゲームを書いています。その後、ジャンプに料金が追加されます。
ただし、現在実行しているコードは約 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();
}
}