gpt4 book ai didi

java - 确定 "Overlap"时出现问题

转载 作者:太空宇宙 更新时间:2023-11-04 15:00:35 26 4
gpt4 key购买 nike

因此,我一直在尝试寻找一种方法来确定我正在编写的 Java 游戏的图像中的“重叠”。现在我知道我可以创建一个盒子来跟随包含它的训练器,然后使用包含点来查看训练器的盒子是否包含汽车/口袋妖怪的点,但我正在尝试找到解决此问题的替代方法。我尝试使用嵌套的 If 语句,但这些似乎不起作用。如果我的编码有问题,或者我的思维方式有错误,请告诉我。下面是嵌套 if 的示例。

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 语句都是毫无意义的。相反,您可能只想检查两个对象中心之间的差异是否小于 50 像素。您可以使用绝对差轻松检查这一点。

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());
}

关于java - 确定 "Overlap"时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22611623/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com