Формула / математические расчеты для перемещения игрока вперед на основе направления движения - PullRequest
0 голосов
/ 29 апреля 2018

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

Таким образом, если мы говорим, что M - это направление, в котором находится игрок, а M переходит от 0,00000 до 5,9999999, а затем возвращается к 0,000, при этом верно следующее:

0 = North
1.5 = West
3 = South
4.5 = East

Если бы я хотел переместить игрока на север, я бы сделал y + количество, на юге было бы y - количество, а если я хочу переместить игрока на восток, я бы сделал x - количество, а на западе было бы x + количество .

Так что перемещать игрока вперед легко, когда он смотрит в абсолютном направлении, например, M равно 0, поэтому я просто добавляю, скажем, 5 к координате y. Но если игрок стоит лицом к лицу, скажем, 1.2, то есть почти на западе, что бы я добавил к X и Y, чтобы точно переместить их вперед, предположительно, я бы добавил, скажем, 5 к x и некоторый процент от 5 к y.

Нужна помощь тех, кто умеет разбираться с подобными вещами, и любая помощь очень ценится. Псевдо-код и помощь любого рода приветствуется, спасибо всем!

1 Ответ

0 голосов
/ 29 апреля 2018

Если x и y - текущие координаты, dir - текущее направление в ваших 1-6 единицах, а amount - расстояние для перемещения, ваши новые координаты будут

angle = dir * pi / 3
newx = x + amount * sin(angle)
newy = y + amount * cos(angle)

Если вы действительно хотите просто уменьшить, просто удалите x и y из формул.

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

Также обратите внимание, что ваши направления значений угла направления и направления увеличения координат x и y не являются стандартными. Поэтому тех, кто знает триг, могут спутать с использованием cos с координатой x и sin для координаты y, поскольку они не являются стандартными. Но это то, что нужно в вашем случае. Как только что отметил @HighPerformanceMark в комментарии, вам следует рассмотреть возможность изменения углов направления и координат x и y на нечто более стандартное. Тот, который он предлагает, 0 градусов для севера и 90 градусов для востока, является стандартным в навигации. Другой стандарт, используемый в тригонометрии, составляет 0 градусов или радиан для восточной стороны и пи / 2 радиана или 90 градусов для северной части.

...