Два утверждения Пифагора замедляют вашу игру? На 25fps? Что-то не так - это должно быть , а не .
Полностью удалите обнаружение столкновений и убедитесь, что вы получаете 25fps обратно, затем добавляйте операторы по одной строке, пока замедление не появится снова.
Убедитесь, что вы не вызываете свой код коллизии более одного раза (ну, дважды) за кадр.
Помните, что вы можете проверить на столкновение без использования Math.sqrt
:
function circlesTouching(circle1:Point, circle1Radius:Number, circle2:Point, circle2Radius:Number):Boolean {
var dx:Number = circle1.x - circle2.x;
var dy:Number = circle1.y - circle2.y;
var minDist:Number = circle1Radius + circle2Radius;
return (dx*dx) + (dy*dy) < (minDist * minDist);
}
(Вам все еще понадобится sqrt для разрешения столкновения, но это должно быть довольно редко.)
Однако, по моему опыту, несмотря на то, что Math.sqrt
- самая медленная часть Пифагора, он все еще достаточно быстр для управления двумя вызовами на кадр со скоростью 25 кадров в секунду. Похоже, что-то еще не так.