沿鼠标方向移动对象

时间:2014-08-04 03:47:49

标签: java

我有一个子弹类和一个算法可以将我的子弹移动到我按下的位置,但是当点击它时,如何让子弹继续通过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;

}

1 个答案:

答案 0 :(得分:0)

子弹的实例变量不应该是moveTo_,而是velocitydirection。 从子弹位置和目标位置计算构造函数中的direction(即角度)。 velocity也可能是静态常量,具体取决于您的用例。

如果是一个选项,我强烈建议使用物理或游戏引擎。这些问题在这些引擎中已经解决了一百次。它们可以帮助您完成这些基本任务,并帮助您专注于实际问题。