0

我有这个功能可以检测到对象之间的碰撞。它在 Ticker (FPS 60) 内调用。只要两个对象在一起,if 语句就会运行。我认为这与自动收报机有关,它运行 if 每一帧。解决这个问题的最佳方法是什么,例如当两个物体发生碰撞时,人得到一分而不是四分或十分。

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两个对象都设置为 2

在每一帧开始时,recently collided将所有对象减 1 到最小值 0

如果发生碰撞并且recently collided两个对象上的值都为 1 或更高*,则不要添加点/播放声音但仍会递增recently collided

*我认为“正好 1”也可以。这似乎只在“三个球同时或几乎同时碰撞”的情况下才重要。

于 2013-05-02T23:50:57.990 回答