Java “确定”的问题;重叠“;
因此,我一直在试图找到一种方法来确定我正在编写的java游戏图像中的“重叠”。现在我知道我可以创建一个框来跟随包含它的培训师,然后使用包含点来查看培训师的框是否包含汽车/口袋妖怪的点,但我正在尝试找到一种替代方法。我尝试使用嵌套的If语句,但这些语句似乎不起作用。如果我的编码有问题,或者我的思维方式有错误,请告诉我。下面是嵌套ifs的一个示例Java “确定”的问题;重叠“;,java,if-statement,nested,contains,Java,If Statement,Nested,Contains,因此,我一直在试图找到一种方法来确定我正在编写的java游戏图像中的“重叠”。现在我知道我可以创建一个框来跟随包含它的培训师,然后使用包含点来查看培训师的框是否包含汽车/口袋妖怪的点,但我正在尝试找到一种替代方法。我尝试使用嵌套的If语句,但这些语句似乎不起作用。如果我的编码有问题,或者我的思维方式有错误,请告诉我。下面是嵌套ifs的一个示例 if (trainer.getPy() == squirtle.getPy() & trainer.getPx() == squirtle.get
if (trainer.getPy() == squirtle.getPy() & trainer.getPx() == squirtle.getPx()){
if (trainer.getPy() >= squirtle.getPy() - 50)
if (trainer.getPy() <= squirtle.getPy() + 50)
if (trainer.getPx() >= squirtle.getPx() -50)
if (trainer.getPx() <= squirtle.getPx() + 50)
trainer.dead();
Skully skull = new Skully (trainer.getPx(), trainer.getPy());
}
if (trainer.getPy() == pikachu.getPy() & trainer.getPx() == pikachu.getPx()){
if (trainer.getPy() >= pikachu.getPy() - 50)
if (trainer.getPy() <= pikachu.getPy() + 50)
if (trainer.getPx() >= pikachu.getPx() -50)
if (trainer.getPx() <= pikachu.getPx() + 50)
trainer.dead();
Skully skull = new Skully (trainer.getPx(), trainer.getPy());
}
if(trainer.getPy()==squirtle.getPy()&trainer.getPx()==squirtle.getPx()){
如果(trainer.getPy()>=squirtle.getPy()-50)
如果(trainer.getPy()=squirtle.getPx()-50)
if(trainer.getPx()=pikachu.getPy()-50)
if(trainer.getPy()=pikachu.getPx()-50)
if(trainer.getPx()问题在于,第一个条件检查两个对象是否处于完全相同的位置,因此之后所有更宽松的if语句都是毫无意义的。相反,您可能只想检查两个对象中心之间的差值是否小于50px。您可以使用绝对值轻松检查这一点差别
if (Math.abs(trainer.getPy() - squirtle.getPy()) < 50 &&
Math.abs(trainer.getPx() - squirtle.getPx()) < 50) {
trainer.dead();
Skully skull = new Skully (trainer.getPx(), trainer.getPy());
}
if(Math.abs(trainer.getPy()-squirtle.getPy())<50&&
Math.abs(trainer.getPx()-squirtle.getPx())<50){
trainer.dead();
Skully skull=新Skully(trainer.getPx(),trainer.getPy());
}
这很有道理。我不是那样想的。非常感谢!