也许是初学者的问题,但感谢您的阅读。我正在开发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;
    }
}

最佳答案

添加一个成员变量,例如boolean homing = true。然后,将您的条件更改为如下所示:

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

if(homing){
    x += dx * speed;
    y += dy * speed;
}
else{
    x += 0;
    y += scale;
}


您基本上只需要打破导弹行为与其状态之间的相互依赖关系。

关于java - 用Java归巢导弹行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5124730/

10-09 03:28