我有这个功能来检测物体之间的碰撞。它在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
答案 0 :(得分:0)
每个对象都有一个int,recently collided
如果发生碰撞,请将两个对象上的recently collided
都设置为2
在每个帧的开头,将所有对象的recently collided
减1,最小为0
如果两个对象发生碰撞并且recently collided
为1或更高*,请不要添加点/播放声音,但仍然会增加recently collided
。
*我认为'正好1'也可以。似乎只有“三个球同时或几乎同时碰撞”的情况才会发生。