[英]Move Object in direction of mouse
我有一個項目符號類和一個將項目符號移動到按下位置的算法,但是當單擊該項目符號時,如何使項目符號繼續經過mouse_x和mouse_y?
在“我的更新”方法中:
float xSpeed = (MoveToX - x) / 9;
float ySpeed = (MoveToY - y) / 9;
this.x += xSpeed;
this.y += ySpeed;
這是我第一次創建項目符號時:
Bullet(int Mx, int My){
c = Color.red;
MoveToX = Mx;
MoveToY = My;
MoveToX += Board.cam.camX;
MoveToY += Board.cam.camY;
Mx是單擊鼠標X。 與y相同。
編輯:這是我的最終產品:一切正常
Bullet(int Mx, int My){
c = Color.red;
MoveToX = Mx + Board.cam.camX;
MoveToY = My + Board.cam.camY;
int speed = 5;
float distance = (float) Math.sqrt(Math.pow(MoveToX - x, 2) + Math.pow(MoveToY - y, 2));
amountToMoveX = (((MoveToX - x) / distance) * speed);
amountToMoveY = (((MoveToY - y) / distance) * speed);
}
public void update(){
x += amountToMoveX;
y += amountToMoveY;
}
子彈的實例變量不應是moveTo_
,而是velocity
和direction
。 根據項目符號位置和目標位置,計算構造函數中的direction
(即角度)。 velocity
也可能是靜態常數,具體取決於您的用例。
如果可以選擇,我強烈建議您使用物理引擎或游戲引擎 。 這些問題已經在那些引擎中解決了一百次。 它們使您擺脫了這些基本任務,並幫助您專注於實際問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.