Я строю простую игру для Android. И я застрял на обнаружении направления столкновения двух шаров. У меня есть движущегося мяча и фиксированный шар B. Бал A намного меньше B.Определить направление мячей после столкновения
Меня не волнует масса двух шаров. После столкновения двух шаров, мяч B исчезает, а мяч A меняет направление!
Я хочу что-то вроде этого ..
Вот мой текущий код:
private void collision(Ball a, Ball b){
if(b.isVisible){
double d = Math.sqrt((a.cx - b.cx)*(a.cx - b.cx) + (a.cy - b.cy)*(a.cy - b.cy));
if(d <= a.radius + b.radius) {
b.isVisible = false;
if(a.dx * b.dx < 0 && a.dy * b.dy < 0){
a.dx = - a.dx;
a.dy = - a.dy;
b.dx = - b.dx;
b.dy = - b.dy;
} else if(a.dx * b.dx < 0){
a.dx =- b.dx;
a.dx = - b.dx;
} else if(a.dy * b.dy < 0){
a.dy = - a.dy;
b.dy = - b.dy;
} else{
a.dx = - a.dx;
a.dy = - a.dy;
b.dx = - b.dx;
b.dy = - b.dy;
}
}
}
}
Но это просто меняет направление шара В
Итак, я найти лучшее решение. Кто-нибудь поможет? Большое спасибо!
Я думаю, вы имеете в виду, что хотите ** рассчитать ** направление. Поскольку «b» исчезнет, почему бы не вывести его из кода. Вам нужно вычислить угол A, ударяющий B, потому что он находится перпендикулярно этому углу, что он будет отскакивать. –