Таким образом, по сути, я пытаюсь сделать объект (игрок), чтобы выстрелить из пули по прямой, а затем продолжить, так что, если "пистолет" указывается на угол 35 градусов (при этом 0 градусов находится справа от экрана, добавляя до 360 оборотов против часовой стрелки), тогда пуля будет двигаться с постоянной скоростью (скажем, 5) под этим углом от начала координат.
Поскольку способ, которым я занимался, - это функция, называемая обновлением, которая будет обрабатывать весь чертеж, а что нет, а затем, когда дело доходит до движения, оно просто добавит вертикальную скорость и горизонтальную скорость до уже существующие x и y, и это было слишком сложно, чтобы попытаться обойти его, чтобы он добавлял подходящую горизонтальную и вертикальную скорость для перемещения под этим углом с постоянной скоростью, поэтому любая помощь будет оценена. -Heath
Может быть, вы можете сделать свой метод update() для измерения времени с момента последнего вызова и обновить местоположение пули на основе этого?
Это сделало бы пулю двигаться с постоянной скоростью. (учитывая, что FPS достаточно велик)
EDIT2:
public class Bullet { // speed is in units/second // angle is in radians double x; double y; double sv; double sh; public Bullet(double x, double y, double angle, double speed) { this.x = x; this.y = y; sv = Math.sin(angle)*speed; sh = Math.cos(angle)*speed; last_updated = System.currentTimeMillis(); } long last_updated; public void update() { long time_elapsed = System.currentTimeMillis() - last_updated; last_updated = System.currentTimeMillis(); this.x += this.hs*(this.time_elapsed/1000) this.y += this.vs*(this.time_elapsed/1000) } }
Возможно, вам нужно будет сыграть с углом, чтобы сделать его подходящим для вашей системы координат. (что-то вроде отрицания угла, добавления/вычитания Pi и т.д.)
Надеюсь, это поможет.