Нужен лучший способ сделать угол мяча в игре понг
Я делаю клон понг, чтобы попрактиковаться в кодировании, и я застрял в том, чтобы заставить шар менять угол при ударе веслом.
Моя текущая реализация имеет deltaX и deltaY для мяча, который перемещается вместе с игровым циклом для перемещения мяча. То, как я это сделал, заключается в том, что если вы бьете по мячу, когда весло движется, deltaY увеличивается или уменьшается в зависимости от направления весла, но это не кажется естественным для игры.
Кто-нибудь знает лучший способ сделать это?
1 ответ
Первое, что я хотел бы сделать, это изменить deltaX и deltaY на ballAngle и deltaSpeed. Таким образом, вы бы перешли от прямоугольной системы координат к полярной. Из-за характера движения мяча (движется по прямой линии и меняет угол линии при каждом ударе), это облегчит вашу работу. Отныне вам нужно будет только изменить BallAngle, чтобы обновить направление мяча.
Однако вам придется обновить функцию, которая рисует шарики, чтобы она могла вернуться от полярных к прямоугольным координатам, чтобы вы могли отобразить ее на экране. Немного тригонометрии средней школы позволит вам вычислить дельты положения экрана в зависимости от вашего угла и скорости:
newPosition = oldPosition + movementVector
с:
movementVector.x = deltaSpeed*cos(ballAngle)
movementVector.y = deltaSpeed*sin(ballAngle)
Конечно, эти уравнения могут нуждаться в некоторой модификации, основанной на том, что вы измеряете угол шара.
Теперь, чтобы изменить угол мяча при каждом столкновении с веслом, нужно только увеличивать или уменьшать угол мяча в зависимости от того, к какой части весла он касается, а математика в функции рисования должна заботиться об обновлении x и y. позиции реально.
Надеюсь, это поможет.