Java中的归航导弹行为

emm*_*001 2 java loops 2d

也许是一个初学者的问题,但谢谢你的阅读.我正在开发一款2d Java游戏,其中我有使用以下代码跟踪对象位置的导弹.我希望导弹在距离目标达到一定的最小位移时停止归航,此时它们应该直线下降.现在,只要导弹在最小位移范围内,导航行为就会关闭,如果位移增加,导弹行为会再次开启.我希望这种行为只能关闭一次,在导弹的剩余寿命期间保持不变.我怎么能做到这一点?

public void home(int targetX, int targetY, int scale){
    int dy = targetY - y;
    int dx = targetX - x;
    double speed, sep;

    sep = Math.sqrt(dx * dx + dy * dy);
    speed = scale/sep;

    if(dy > 50 || dx > 50){
        x += dx * speed;
        y += dy * speed;
    }
    else{
        x += 0;
        y += scale;
    }
}
Run Code Online (Sandbox Code Playgroud)

Mac*_*Mac 6

添加成员变量,例如boolean homing = true.然后,将条件更改为以下内容:

if (dy < 50 && dx < 50)
    homing = false;

if(homing){
    x += dx * speed;
    y += dy * speed;
}
else{
    x += 0;
    y += scale;
}
Run Code Online (Sandbox Code Playgroud)

你基本上只需要打破导弹行为与其状态之间的相互依赖.

  • @ emmett9001:不要在`home`方法中初始化变量,而是在类构造函数中初始化它.或者,真的,任何其他方法**但**'home`.想想看,如果你有一个"发射"方法或类似的东西,只要导弹首次发射时就会调用,*这是放置'homing = true`的理想位置. (2认同)
  • 非常感谢你的帮助!我觉得也许我应该能够自己解决这个问题......但是,谢谢你. (2认同)