У меня есть Entity
экземпляр, который обновляется каждый тик игры. Давайте просто предположим, что сущность постоянно движется вперед. Я хотел бы иметь возможность дать угол объекта функции, которая заставляет его двигаться в этом направлении:
moveForward(90);
должен заставить их двигаться вправо. Если бы я объявил мое вращение как глобальные int
, то делать
moveForward(rotation);
rotation++;
заставит его проследить маленький круг своим движением.
Как я могу это сделать? Я предполагаю, что это включает векторную математику; Я не знаю ничего, поэтому краткое объяснение было бы хорошо.
источник
Другой ответ на данный момент неверен, чтобы правильно перемещаться по плоскости на основе поворота, вы делаете следующее:
Однако я бы порекомендовал сделать переменную для cos / sin, которую вы обновляете только при изменении поворота, чтобы вы не вычисляли ее 4 раза за такт.
StrafeSpeed будет двигаться из стороны в сторону, forwardSpeed для движения вперед вдоль вашего вращения.
редактировать: тесселоде делает то же самое, за исключением того, что у него нет движения из стороны в сторону.
источник
Вы сказали, что тики обновлений, так что я предполагаю, что у вас нет переменной частоты кадров. Если так:
х + = скорость * математика (угол)
у + = скорость * математика.син (угол)
Если вы используете переменную частоту кадров, вам нужно также умножить на дельта время.
источник