簡體   English   中英

將物體以勻速直線從A點移動到B點

[英]Moving an object from point A to point B in a straight line at a constant speed

所以基本上我一直在嘗試做的是讓一個物體(玩家)從它的角度直線發射子彈,然后繼續前進,所以如果“槍”指向 35 度角度(屏幕右側的 0 度加起來為逆時針方向為 360),那么子彈將以恆定速度(例如 5)從原點以該角度行進。

因為我一直在做我的運動的方式是我有一個叫做 update 的函數,它可以處理所有的繪圖,什么不是。 然后當涉及到移動時,它只會為已經存在的 x 和 y 添加一個垂直速度和一個水平速度,而試圖解決它實在是太難了,因此它添加了一個合適的水平和垂直速度來移動該角度以恆定速度運行,因此將不勝感激。 -希思

也許你可以讓你的 update() 方法來測量自上次調用以來的時間,並根據它更新子彈的位置?
這將使子彈以近似恆定的速度移動。 (鑒於 FPS 足夠大)

編輯2:

 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 等。)

希望這會有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM