Как заставить объект двигаться относительно себя - PullRequest
0 голосов
/ 08 октября 2018

Я пытаюсь создать игру, в которой вы используете клавиши w, s, a, d, и я хочу, чтобы персонажи двигались относительно себя.

Вместо того, чтобы двигаться вверх или вниз в направлении X или Y, он движется вперед и назад или поворачивается слева направо.Вроде как как движется игра Tank Trouble.

Если у кого-то есть идеи, как это сделать, пожалуйста, дайте мне знать!

1 Ответ

0 голосов
/ 08 октября 2018

Есть несколько разных подходов, которые вы можете использовать для решения этой проблемы:

  • Если вы когда-либо имеете дело только с прямыми углами, например, если поворот направо всегда поворачивает вас на 90 градусов кправильно, тогда вы можете использовать перечисление, чтобы отслеживать, в каком направлении вы находитесь.Измените это перечисление, когда вы нажимаете влево или вправо, и используйте это перечисление, чтобы выбрать направление движения, когда вы нажимаете вверх или вниз.

  • Если вам нужно иметь дело с большим количеством углов, например, еслиповорот вправо поворачивает только на 1 градус вправо, тогда вам нужно использовать некоторую базовую тригонометрию, чтобы отследить направление, в котором находится пользователь.

Для второго подхода вы должны исследовать полярные координаты .Вместо того, чтобы использовать координаты X и Y непосредственно в вашем движении, вы бы использовали угол и скорость.Тогда функции cos() и sin() предоставят вам x и y на основе этих значений.

Примерно так:

float deltaX = cos(angle) * speed;
float deltaY = sin(angle) * speed;
player.x += deltaX;
player.y += deltaY;

Затем вы захотите изменить angle и speed переменных, когда пользователь нажимает клавишу.

...