如何解决2d阵列跟踪播放器移动到实体周围的特定空间
好吧,所以我需要一个数组的帮助,我有一个2D数组,玩家可以移动通过它,现在我随机生成一个实体,并且玩家应该能够与之交互。我有一条相当长的if语句,该语句跟踪玩家是否接近实体,但是无法在触发提示的地方增大范围。这个if语句很长,有时会缠住我的头,但这很令人沮丧,如下所示:
if(((getPlayerX() == getEntityX() - getPlayerRange()) || (getPlayerX() == getEntityX() + getPlayerRange()) || (getPlayerX() == getEntityX())) && ((getPlayerY() == getEntityY() - getPlayerRange()) || (getPlayerY() == getEntityY() + getPlayerRange()) || (getPlayerY() == getEntityY()))){
但是,当范围增加到2(从其默认值1开始)时,此功能将不再起作用。我想实现这一点,以便具有较高范围的玩家仍可以与此实体进行互动。有没有一种更简单的方法可以更有效地做到这一点?
解决方法
那这样的事情呢?
int xDistance = Math.abs(getPlayerX() - getEntityX());
int yDistance = Math.abs(getPlayerY() - getEntityY());
if (xDistance <= getPlayerRange() && yDistance <= getPlayerRange()){ ... }
计算绝对距离,然后与玩家范围进行比较。
即使代码比当前版本更多,我认为即使在1的范围内,它也更具可读性。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。