2016-05-11 9 views
1

私のいとこのための簡単なポケモンゲームを作っています。ちょっとピカチュウが右から走って来て、灰が右に動く。コリジョン検出

スペースバーを押したときの問題は、pokébalが左から右に飛んできますが、衝突は検出されません。

私を助けることができますか?ここで コード:

JS:

function goPika() { 
    $("#pika").animate({ left : '5px' }, 2500); 
    setInterval(function(){ 
    checkPosition(); 
    }, 100); 

    function checkPosition() { 
    var positionPika = $("#pika").position().left; 
    } 
} 

function Throw() { 
    $("#bal").animate({ marginLeft : "96%" }, 1000); 
    setInterval(function(){ 
    checkPositionBal(); 
    }, 100); 

    function checkPositionBal(){ 
    var positieBal = $("#bal").position().left; 
    var positieBalCol = (positionBal + 200); 
    console.log(positionBalCol); 
    } 
}; 


function catch() { 
    if (positionBalCol == positionPika) { 
    console.log("collision"); 
    } 
} 
+0

変数名と関数名を英語で入力すると、英語のスピーカーがコードをよりよく理解できるようになります。また、機能コードのスタックスニペットを追加できますか? – Tschallacka

+0

あなたはタイミング問題の何らかの種類、おそらくconsole.logの位置を想像して、それらがいつでも一致するかどうかを確認します。私は、ボールが動かされたときに衝突検知が既に逃しているという気持ちを持っています。 – PeterS

+0

実際にcatchをどこで実行しますか? – Glubus

答えて

0

最初のものがある:別の答えで指摘のように、キャッチはJavaScriptで予約語であるので、投げるです...

、あなたの変数関数の外側に表示される必要があります(上部に宣言されています)。

次に、「アニメート」でボールを移動すると、実際の移動を制御することはできません。 UIは物理的性質を反映するべきであり、反対ではない。

あなたは上記のすべてでし考える代わりに

var positionBalCol = 0; 
var dt = 30.0; 
setInterval(function() { 
    positionBalCol += velocity * dt 
}, dt); 

を考えてみましょう、あなたはまだあなたの衝突テストで、持っている問題です。

if (positionBalCol == positionPika) 

があるため、時間を通じて蓄積しますpositionBalCol上のいくつかの丸めの浮動小数点数を使用して、おそらく本当のことはありません。

変更するには、すべての機能にアクセスできるようにそれらのための関数の外であなたの変数を宣言する必要が

if (Math.abs(positionBalCol == positionPika) < 1.0E-4) // or whatever suitable threshold 
+0

Thanxとcatchとthrowはオランダでしたが、私はそれらを翻訳しなければなりません – studentInNeed

+0

次に "throwBall"と "catchBall" –

0

への条件。例えば:

var positionBalCol, 
    positionPika; 

function checkPosition() { 
    positionPika = $("#pika").position().left; 
} 

checkPosition関数のこの記憶positionPika外部。この方法で、後でそれを使ってpositionBalColと比較することができます。

関連する問題