将物体从A点移动到B点,以恒定速度沿直线移动

时间:2011-01-12 13:37:43

标签: java android

基本上我一直试图做的是让一个物体(玩家)从角度直线射出一颗子弹,然后继续,所以如果“枪”指向一个角度为35度(0度位于屏幕右侧,加上360度逆时针方向),然后子弹将以恒定速度(比如5)从原点以该角度行进。

因为我一直在做我的动作的方式是我有一个叫做更新的功能,可以处理所有的绘图,什么不可以,然后当它运动时,它只会添加垂直速度和水平速度已经存在的x和y并且它太难以尝试并解决它,因此它增加了一个合适的水平和垂直速度,以恒定速度在该角度移动,所以任何帮助将不胜感激。 -Heath

1 个答案:

答案 0 :(得分: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等等。)

希望这会有所帮助。