2013-08-16 2 views
2

Я моделирую объекты в прототипе игры в виде кругов. Каждый объект имеет массу, радиус, скорость и местоположение. Два объекта не имеют одинаковой массы и радиуса.Взгляд столкновения между кругами

У меня есть следующий код, который должен рассчитать упругое столкновение между ними, но я заметил, что результаты всегда бывают так, как если бы круги ударили друг друга.

private void handleCollision(JumpObject a, JumpObject b) { 
     double newVelAX = (a.getVelocity().x * (a.getMass() - b.getMass()) + (2 * b.getMass() * b.getVelocity().x)) 
       /(a.getMass() + b.getMass()); 
     double newVelAY = (a.getVelocity().y * (a.getMass() - b.getMass()) + (2 * b.getMass() * b.getVelocity().y)) 
       /(a.getMass() + b.getMass()); 
     double newVelBX = (b.getVelocity().x * (b.getMass() - a.getMass()) + (2 * a.getMass() * a.getVelocity().x)) 
       /(a.getMass() + b.getMass()); 
     double newVelBY = (b.getVelocity().y * (b.getMass() - a.getMass()) + (2 * a.getMass() * a.getVelocity().y)) 
       /(a.getMass() + b.getMass()); 

     a.getVelocity().setLocation(newVelAX, newVelAY); 
     b.getVelocity().setLocation(newVelBX, newVelBY); 
} 

мне нужно иметь дело со случаем, когда один из кругов ударяет другой под скользящим углом (я могу сделать диаграмму позже, если это необходимо), например, когда небольшой круг едва вмятины краю более крупный круг.

Как изменить мой алгоритм столкновений для учета где один круг попадает в другой?

+0

Вы должны 'atan2', наряду с расстоянием между центрами. – SLaks

+0

Вы за какую-то физику? Практически невозможно заставить код работать без понимания физики. – Beta

ответ

4
+0

Это хорошие ссылки. Третий, в gamedev.tutsplus, фактически воспроизводит именно ту проблему, которая у меня есть. Если вы посмотрите, как работает их последняя демоверсия, вы заметите, что столкновения с отражением делают то же самое, что и прямые. У кода столкновений с кругом обработки, похоже, есть материал, который мне нужен. –

+0

Мое окончательное решение включало в себя импорт класса Vector2D для обработки некоторой математики. Я могу вычислить векторную математику, но выполнение всего триггера также меня перепутало. –

+0

@MartinCarney Похоже, проблема с симуляцией на gamedev.tutsplus исправлена. –

Смежные вопросы