2017-02-03 9 views
0

2dプラットフォーマーを構築していますが、スペースバーを押したままプレイヤーを長くジャンプさせようとしています。今プレイヤーは上下に飛び越えることができますが、あなたがキーを押したままにすると、そのユニバーサルロボットの持つ効果のようなものです。これをどうやってやりますか? Imはフェイザーなどを使用していません。ほとんどのチュートリアルでは、これを使用しています。Javascriptの長時間ジャンプスプライト?

 var gameEngine = this.game; 

if (gameEngine.keyMap["Space"] && !this.jumping) { //only jump if not already in mid jump 

    this.jumping = true; 
    this.animationCurrent.elapsedTime = 0; 
    this.game.space = false; 
} 

if (this.jumping) { 

    if (this.animationCurrent.isDone()) { 
     this.animationCurrent.elapsedTime = 0; 
     this.jumping = false; 
    } 

    var jumpDistance = this.animationCurrent.elapsedTime/
     this.animationCurrent.totalTime; 

    var totalHeight = 150; 

    if (jumpDistance > 0.5) 
     jumpDistance = 1 - jumpDistance; 
    var height = totalHeight * (-4 * (jumpDistance * jumpDistance - jumpDistance)); 
    this.y = this.ground - height; 
    console.log(this.y); 
} 
+0

あなたはonkeypressedを使用していますか?もしそうなら、これはおそらく設計上可能ではないでしょう。 onkeydownを使っていますか?もしそうならば、これによりジャンプの高さをボーナスとして時間をかけて調整することができます。 +150、+15、+5、+ 1のようになる。 –

+0

@TravisJ私はonkeydownを使用しています – thatsnifty

答えて

1

ジャンプキーを押し続けると、文字が徐々に減少するようにシステムを実装する必要があります。

現時点ではアニメーションに飛び跳ねる高さがあるようですね。まさにこの理由には理想的ではありません。物を微調整することは、ボールの痛みになります。物理学に基づくアプローチがさらに必要です。封筒の擬似コードの

基本的なバック:

旧スタイル一定のジャンプ運動:

const JUMP_STRENGTH = 100; 
const GRAVITY = 10; 

onJumpKeyupPress(){ 
    if(play.canJump) 
    player.transform.up.velocity = JUMP_STRENGTH; 

} 

gameTick(){ 
    if(!player.onGround) 
    { 
     player.up.velocity -= GRAVITY 
     player.y += player.up.velocity; 
    } 
    else{ 
     player.up.velocity = 0; 
    } 
} 

あなたが見ることができるように、これは、プレイヤキャラクタ残業にプルダウンする重力を使用しています。ユーザがジャンプ鍵保持けれども

ビガージャンプジャンプ押し込むときには、すべての力を一度に適用される。この例では

const JUMP_STRENGTH = 100; 
const GRAVITY = 10; 

var jumpStrength = 0; 

onJumpKeyupPress(){ 
    if(play.canJump) 
    jumpStrength = JUMP_STRENGTH; 
} 

gameTick(){ 
    if(!player.onGround) 
    { 
     if(jumpKeyIsStillPressed){ 
      player.up.velocity += jumpStrength; 
      jumpStrength /= 2; 
     } 
     player.up.velocity -= GRAVITY; 
     player.y += player.up.velocity; 
    } 
    else{ 
     player.up.velocity = 0; 
     jumpStrength = 0; 
    } 
} 

を、ユーザがそれぞれに半分になる100の最初のジャンプ強度を取得します重力が強くなるまで点検してください。

うまくいけば、私は十分にクリアされました!

+0

これはかなりうまくいきます!私の唯一の問題は、ジャンプするのではなく、ジャンプすることです。どうすればこの問題を解決できますか? – thatsnifty

+0

私はそれを理解したと思う、私はplayer.y + = player.up.velocityをplayer.y- = player.up.velocityに変更した – thatsnifty

+0

ジャンプを速くする方法はありますか?重力を変えても、それは超ゆっくりと上がります。 – thatsnifty

関連する問題