Скажем, у меня есть вектор (x, y), и он выровнен относительно начала координат (скажем, указывая на 30 градусов вверх).
Если я хочу переместить этот вектор на одну единицу относительно направления (то есть, на одну единицу вперед, на 30 градусов вверх), как мне поступить?
Я работаю над созданием простой игры от третьего лица, и я хотел бы иметь возможность вращать персонажа и перемещать его вперед независимо от поворота, и я вроде как потерян, как это сделать.
EDIT:
После того, как на этот вопрос был дан ответ, я пошел дальше и выяснил, как получить движение назад, влево и вправо, поэтому я решил, что я добавлю это сюда для справки, если кому-то понадобится помощь.
Учитывая код Гюнтера2,
Чтобы получить движение назад, просто вычтите смещение из текущей позиции:
position -= displacement;
Чтобы получить левое движение, измените переменные смещения на
displacement.x = (float)Math.Sin(angle + PI/2);
displacement.y = (float)Math.Cos(angle + PI/2);
Замените PI / 2 на 90, если Sin / Cos принимает градусы вместо радианов.
Затем вычтите смещение:
position -= displacement;
Чтобы получить правильное движение, просто выполните те же шаги, но добавьте новое смещение:
position += displacement;