Здесь я вижу множество ответов на эту загадку, но каждый раз, когда я пытаюсь реализовать ответы, они, похоже, не работают. Я хотел ответить на некоторые из ответов, но не смог. Возможно это из-за моего уровня репутации?
В любом случае, это простая проблема с координатами для игры. Просто для большинства, но не для меня. (сосать в математике .. хардкор)
У меня есть космический корабль в середине экрана. Он не двигается отдельно от вращения (user.fAngle). Он имеет скорость (user.dVelocity), которая используется исключительно для расчета его местоположения в мире.
Прямо сейчас у меня есть корабль, движущийся со скоростью 1. Это означает, что куда бы он ни шел, он движется с этой скоростью (опять же, исключительно для целей координат карты). Пока не замедляется или не ускоряется ... но в конечном итоге будет. Таким образом, скорость в конечном итоге будет изменяющейся переменной.
Вот что у меня сейчас ..
double radians = (Math.PI / 180) * ( user.fAngle);
worldX = (int)(worldX + user.dVelocity * Math.cos(radians));
worldY = (int)(worldY + user.dVelocity * Math.sin(radians));
user.fangle конечно = 0-359
worldX и worldY начинаются с 0, когда вы начинаете игру. Я пытаюсь модифицировать worldX и worldY каждый кадр, основываясь на угле корабля и жестко заданной скорости.
По большей части это работает. Но странно то, что в определенные моменты координаты замерзают. Или они остановятся на 0 и не перейдут в негативы. Опять же, это происходит только в определенное время и под определенными углами.
Другая проблема, которую я вижу, заключается в том, что, когда числа меняются, они всегда меняются с постоянной скоростью. Другими словами, допустим, север равен 0. Если я двигаюсь под углом 5, переменная worldY должна сильно изменяться, но worldX должна немного изменяться. Этого не происходит.
В своей отладке я убедился, что user.fAngle действительно находится в диапазоне 0-359. Я не уверен, что еще проверить.
Спасибо за чтение, и я ценю помощь.