0

オブジェクト間の衝突を検出するこの機能があります。ティッカー (FPS 60) 内で呼び出されます。if ステートメントは、2 つのオブジェクトが一緒にある限り実行されます。これはティッカーと関係があり、フレームごとに if を実行していると思います。たとえば、2 つのオブジェクトが衝突したときに、その人が 4 点または 10 点ではなく 1 点を獲得するようにするには、これを修正する最善の方法は何でしょうか。

function collDec(){

    var minDistance = 10 + 10;
    var xDist = circle.x - arrow.x;
    var yDist = circle.y - arrow.y;
    var distance = Math.sqrt(xDist*xDist + yDist*yDist);
    if (distance < minDistance) {
        Lpoints.text = "Points: " + ++pointsAm;  
        //console.log("HIT"); 
        var dingSound = createjs.Sound.play("sound/ding.mp3"); 
            //reset(); 
    }  
} // End of collDec
4

1 に答える 1

0

各オブジェクトにintを持ち、recently collided

衝突が発生した場合は、recently collided両方のオブジェクトの both を 2に設定します

すべてのフレームの開始時に、recently collidedすべてのオブジェクトを 1 ずつ減少させ、最小値を 0 にします。

衝突が発生し、recently collided両方のオブジェクトで 1 以上* の場合、ポイントを追加したりサウンドを再生したりせずに、 をインクリメントしますrecently collided

※「ちょうど1」でもいいと思います。「3 つのボールが同時にまたはほぼ同時に衝突する」場合にのみ問題になるようです。

于 2013-05-02T23:50:57.990 に答える