2009-05-28 2 views
0

У меня есть шар, перемещающийся внутри куба, и я обнаруживаю, что он выходит за пределы куба (с ограничивающей сферой и ограничивающей рамкой). Теперь я хотел бы определить, с какой стороны мяч уходит. Затем я мог перенаправить мяч в правильном направлении. Как я могу сделать это с помощью «мировой» матрицы шара?Обнаружение столкновений XNA

Должен ли я отслеживать координаты мяча самостоятельно или я должен выводить их из мировой матрицы?

ответ

2

Я начал бы с столкновения. У вас есть шесть плоскостей (каждая пара [точка, нормальный единичный вектор]) и шар (пара [точка, радиус]).

Проверьте точку против каждой плоскости. Чтобы сделать это, вычтите единичный вектор, увеличенный радиусом сферы, плоскости от точки. (Point - = PlaneUnitVector * radius)

Теперь, с некоторой векторной математикой, вы можете видеть, на какой стороне плоскости он включен.

Затем вы используете единичный вектор плоскости для расчета отказов.

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

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