您好我正在制作一个用Java测试的游戏,我想制作一些东西,但不知道如何。 所以我有4个动画,用于指导动物(实体)和玩家的上/下/左/右方向和位置。
我想让动物一直看向玩家,但不知道如何制作它。如果我使用'if entity.x> player.x'它会看到正确的一面但是不能向下看或向上看?
希望你不知道我的意思,请回答:D
答案 0 :(得分:0)
你已经到了一半了。你想要做的是确定玩家所处动物的位置。
让我们首先制作一个枚举来封装这个
enum Direction { NORTH, EAST, SOUTH, WEST };
正如你所说,你可以检查玩家是在动物的左侧还是右侧。
if(player.getX() > animal.getX()) {
animal.setDirection(Direction.EAST);
} else {
animal.setDirection(Direction.WEST);
}
同样,你可以用Y坐标和北/南方向做同样的事情。
if(player.getY() > animal.getY()) {
animal.setDirection(Direction.NORTH);
} else {
animal.setDirection(Direction.SOUTH);
}
现在,我们如何判断是否应该使用第一张支票或第二张支票?好吧,想一想。如果你住在你所在的“北方”,你可能不是直的北方,而是大多数北方 - 当然,北方比东方更远,例如。那么一个好的检查就是“主导方向是什么” - 即。如果你住在北方,而不是东方,你说你住在北方。那你怎么检查呢?那么,你说你必须从北/南到你的地方的距离大于你必须在东/西旅行的距离。在代码中:
if(Math.abs(animal.getX() - player.getX()) > Math.abs(animal.getY() - player.getY())) {
//More east-west than north-south - do EAST-WEST check
} else {
//More north-south than east-west - do NORTH-SOUTH check
}
因此,结合这个给出最终结果:
if(Math.abs(animal.getX() - player.getX()) > Math.abs(animal.getY() - player.getY())) {
//More east-west than north-south - do EAST-WEST check
if(player.getX() > animal.getX()) {
animal.setDirection(Direction.EAST);
} else {
animal.setDirection(Direction.WEST);
}
} else {
//More north-south than east-west - do NORTH-SOUTH check
if(player.getY() > animal.getY()) {
animal.setDirection(Direction.NORTH);
} else {
animal.setDirection(Direction.SOUTH);
}
}
你完成了!如果您还有其他问题,请与我们联系。