Я сейчас нахожусь в процессе написания такой игры, как Breakout, и мне было интересно, как правильно отскочить от поверхности шара.
Я пошел наивным способом поворота скорости на 90 градусов, который был:
[vx, vy] -> [-vy, vx]
Что (что неудивительно) не сработало так хорошо. Если я знаю положение и скорость мяча, а также точку, в которую мяч попадет (но вместо этого он отскочит), как я могу отскочить от него?
Ограничения:
- Я использую целочисленную математику (без FP
в любом месте)
- Все мои поверхности просты
плоские поверхности (вертикальные,
горизонтальный или блок)
- Я хочу отскочить только под углом 90 градусов
- Все столкновения являются чисто упругими (это прорыв - нет необходимости в трении и т. Д.)
Мне не нужен код для конкретного языка. Если бы кто-нибудь мог предоставить небольшую математическую формулу о том, как правильно это сделать, это бы сработало для меня.
Спасибо!