簡體   English   中英

沿鼠標方向移動對象

[英]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_ ,而是velocitydirection 根據項目符號位置和目標位置,計算構造函數中的direction (即角度)。 velocity也可能是靜態常數,具體取決於您的用例。

如果可以選擇,我強烈建議您使用物理引擎或游戲引擎 這些問題已經在那些引擎中解決了一百次。 它們使您擺脫了這些基本任務,並幫助您專注於實際問題。

暫無
暫無

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

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