2016-07-04 12 views
3

私は学校でゲーム制作者のための簡単なレベルのプラットフォームを作っています。JSの加減速

右矢印キーを押したままにすると、文字が徐々に右に移動し、最大速度に達するまでスピードアップします。矢印キーが離されるまで、最大速度で移動し続けます。解放されると、キャラクターは徐々に減速して停止する。

私はスピードを上げることができますが、キーが離されると、キャラクターはスローダウンして停止するのではなく、瞬時にジャンプして停止します。力がdraw()に少し、1コールに1回減少の代わりに単一の呼び出しで0までずっと減少しているように

var maxSpeed = 10; 
    var xForce = 0; 
    var CharaXPos = 10; 
    var CharaYPos = 200; 

var draw = function() { 
    background(255, 0, 0); 
    image(getImage("creatures/Winston"), CharaXPos, CharaYPos, 50, 50); 
     if (keyIsPressed && keyCode === RIGHT) { 
      CharaXPos = CharaXPos + xForce; 
      xForce = xForce + 0.25; 
       if (xForce >= maxSpeed && keyIsPressed) { 
        xForce = maxSpeed; 
       } 
       } 

     if (!keyIsPressed) { 
        while (xForce > 0) { 
         CharaXPos = CharaXPos + xForce; 
         xForce = xForce - xForce*0.25; 
        }} 
}; 
+0

ありがとうございました!私はその小数点値が減少していてゼロにはならないことを知っていましたが、2つの異なるコンピュータでこのコードを2回反復している間にいくつかの異なる保存が混ざりました。 (私はもはやコンピュータの1つにアクセスできなかったので、以前のセーブでそれを使用しなければならなかった) – Marco

答えて

0

変更ifステートメントにwhileループ:ここ

は私のコードですdraw()

また、xForce = xForce - xForce*0.25については、xForceを0に近づけて近づけないように注意してください。わずかxForce = xForce - 0.25(あなたの加速コードの反対)を試してみてください。

関連する問題