Java中的寻的导弹行为
也许是一个初学者的问题,但谢谢你的阅读。我正在开发一个2d Java游戏,在这个游戏中,我使用以下代码跟踪一个对象的位置。我希望导弹在距离目标达到一定的最小位移时停止寻的,在这一点上它们应该垂直落下。现在,只要导弹在最小位移范围内,寻的行为就会关闭,如果位移增加,寻的行为就会再次打开我希望该行为只关闭一次,在导弹的剩余寿命内保持关闭状态。我如何才能做到这一点Java中的寻的导弹行为,java,loops,2d,Java,Loops,2d,也许是一个初学者的问题,但谢谢你的阅读。我正在开发一个2d Java游戏,在这个游戏中,我使用以下代码跟踪一个对象的位置。我希望导弹在距离目标达到一定的最小位移时停止寻的,在这一点上它们应该垂直落下。现在,只要导弹在最小位移范围内,寻的行为就会关闭,如果位移增加,寻的行为就会再次打开我希望该行为只关闭一次,在导弹的剩余寿命内保持关闭状态。我如何才能做到这一点 public void home(int targetX, int targetY, int scale){ int dy = t
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;
}
}
添加成员变量,例如
布尔归位=true
。然后,将条件更改为以下内容:
if (dy < 50 && dx < 50)
homing = false;
if(homing){
x += dx * speed;
y += dy * speed;
}
else{
x += 0;
y += scale;
}
if(dy<50&&dx<50)
归位=假;
如果(归位){
x+=dx*速度;
y+=dy*速度;
}
否则{
x+=0;
y+=刻度;
}
基本上,您只需要打破导弹行为和状态之间的相互依赖关系。我尝试过这个,但遇到了一个问题。编译器会抱怨,因为如果第一条语句的计算结果为false,“homing”将没有值。然后我尝试在方法的顶部初始化“homing”,但true和false的起始值都会产生错误的行为。谢谢你的回答。知道我至少在正确的轨道上是有帮助的。@emmett9001:不要在
home
方法中初始化变量,而是在类构造函数中初始化它。或者,真的,除了home
之外的任何其他方法。想想看,如果你有一个launch
方法或类似的东西,每当导弹第一次发射时都会被调用,那是放置homing=true
的理想地方。非常感谢你的帮助!我觉得也许我应该能够自己解决这个问题…但还是谢谢你。@emmett9001:总是很乐意帮助:)@emmett9001-如果这个答案解决了你的问题,也许你可以将这个问题标记为已解决?可能属于gamedev.se。。。