繁体   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