Перемещение объекта из точки A в точку B по прямой линии с постоянной скоростью

1

Таким образом, по сути, я пытаюсь сделать объект (игрок), чтобы выстрелить из пули по прямой, а затем продолжить, так что, если "пистолет" указывается на угол 35 градусов (при этом 0 градусов находится справа от экрана, добавляя до 360 оборотов против часовой стрелки), тогда пуля будет двигаться с постоянной скоростью (скажем, 5) под этим углом от начала координат.

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

Теги:

1 ответ

1
Лучший ответ

Может быть, вы можете сделать свой метод 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 и т.д.)

Надеюсь, это поможет.

  • 0
    Я мог бы попробовать это, но у меня все еще нет движения должным образом
  • 0
    Не могли бы вы опубликовать код для этого метода? Где-то вроде pastebin.com. Тогда мы сможем посмотреть на это и предложить что-нибудь.
Показать ещё 7 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню