如何确定碰撞是新的还是从最后一帧继续

时间:2013-05-02 23:46:56

标签: javascript html5 canvas if-statement createjs

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

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

1 个答案:

答案 0 :(得分:0)

每个对象都有一个int,recently collided

如果发生碰撞,请将两个对象上的recently collided都设置为2

在每个帧的开头,将所有对象的recently collided减1,最小为0

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

*我认为'正好1'也可以。似乎只有“三个球同时或几乎同时碰撞”的情况才会发生。