2017-06-13 14 views
1

p5.jsにいくつかの単純な強制実装を使用しようとしていますが、私はその概念を念頭に置いていますが、私のコードでは単純なエラーを見落としてしまったようです。これが今の私のコードです:あなたが見ることができるように、オブジェクトは二度跳ねるんが、それは完全に画面をオフに浮かぶ衝突検出の実装が正常に動作しない

var x = 0; 
var y = 0; 
var grav = new p5.Vector(0, 13, 0); 
var bounce = new p5.Vector(0, -13, 0); 
var isbounce = false; 
var ymax = 0; 

function setup() { 
    createCanvas(600, 400); 
} 

function draw() { 
    console.log(ymax, isbounce); 
    background(0); 
    fill(255); 
    ellipse(200, y, 50, 50); 

    if (y < 376 && isbounce == false) { 
     y += grav.y; 
    } 
    if (y >= 376) { 
     isbounce = true; 
    } 
    if (isbounce == true) { 
     y += bounce.y; 
     if (y == ymax) { 
      isbounce = false; 
      ymax++; 
     } 
    } 
} 

JSfiddle

。私はこれを説明することはできません、私はコンソールを見て、それは2度だけバウンスを確認した(isbounceをtrueに設定し、再びfalseとtrue)。私が期待しているのは、isbounceは、オブジェクトが地面に当たるたびにtrueに設定され、y値がymaxに達するたびにfalseに設定されることです(エネルギー損失を刺激するたびに減少します)。私はこれが軍隊の実装が簡単だと思っていましたが、なぜうまくいかないのか困惑しています。

+0

恥知らずの自己宣伝:衝突検出に関する[こちらのチュートリアル](http://happycoding.io/tutorials/processing/collision-detection)が役立つかもしれません。最初の部分ではエッジコリジョン検出について説明します。これはProcessingのために書かれていますが、P5.jsではすべてがほぼ同じです。 –

+0

@KevinWorkman私は提案を感謝しますが、私の問題は実際に衝突の検出ではありませんでした。私は自分の重力の実装に​​問題があると思ったが、誤った演算子を使用して見落としてしまった。素晴らしいチュートリアル。 – YSbakker

+0

私は迷惑にならないようにしようとしています。あなたが移動してもうこれについて考える気がないなら、それは完全に大丈夫です。しかし、受け入れられた答えのように、あなたの問題は間違いなく衝突検出コード(エッジとの衝突を検出)でした。 –

答えて

0

if (y == ymax) {if (y <= ymax) {に置き換えて、画面上部で跳ね返るようにします。

関連する問題