也许是一个初学者的问题,但谢谢你的阅读。我正在开发一款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;
}
}
答案 0 :(得分:6)
添加成员变量,例如boolean homing = true
。然后,将条件更改为以下内容:
if (dy < 50 && dx < 50)
homing = false;
if(homing){
x += dx * speed;
y += dy * speed;
}
else{
x += 0;
y += scale;
}
你基本上只需要打破导弹行为与其状态之间的相互依赖。