Тригонометрия и столкновения / отражение в игре понг - PullRequest
0 голосов
/ 05 января 2012

Ради забавы я делаю Понг на Python с Pygame. У меня возникли проблемы с отражениями.

Таким образом, мяч имеет угол, связанный с ним. Поскольку положительный у вниз, этот угол вниз. Если мяч ударяет по верхней или нижней стенке, я могу просто отрицать угол, и он будет отражаться правильно, но проблема в левой и правой стенках. Я не могу понять тригонометрию о том, как изменить угол в этом случае. В настоящее время я пробую комбинации приведенного ниже фрагмента, но безуспешно.

 self.angle = -(self.angle - math.pi/2)

Я приложил код. Вы можете попробовать это сами. Только не забудьте вынуть модуль «framerate», который я еще не включил или не использовал. Буду признателен за любой вклад. Спасибо!

Ответы [ 2 ]

1 голос
/ 05 января 2012

Вы захотите взглянуть на Угол падения .

enter image description here

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

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

0 голосов
/ 05 января 2012

Вы должны использовать:

math.pi - angle
...