基本上我一直试图做的是让一个物体(玩家)从角度直线射出一颗子弹,然后继续,所以如果“枪”指向一个角度为35度(0度位于屏幕右侧,加上360度逆时针方向),然后子弹将以恒定速度(比如5)从原点以该角度行进。
因为我一直在做我的动作的方式是我有一个叫做更新的功能,可以处理所有的绘图,什么不可以,然后当它运动时,它只会添加垂直速度和水平速度已经存在的x和y并且它太难以尝试并解决它,因此它增加了一个合适的水平和垂直速度,以恒定速度在该角度移动,所以任何帮助将不胜感激。 -Heath
答案 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等等。)
希望这会有所帮助。