2012-01-05 3 views
0

Для удовольствия я делаю понг в Питоне с Пигамом. У меня возникли проблемы с размышлениями.Тригонометрия и столкновения/отражение в игре Понг

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

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

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

+0

Код указан здесь: http://dl.dropbox.com/u/7264839/code/pong.py – ballaw

ответ

0

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

math.pi - angle 
1

Вы хотите посмотреть в Angle of Incidence.

enter image description here

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

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

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