繁体   English   中英

Java Angle Math:检查玩家看起来如何靠近物体

[英]Java Angle Math: Check how near the player looks to object

我正在编写Minecraft Bukkit插件,需要一种方法来计算从0到360的输入数字,以显示自定义指南针。 因此,如果玩家直接注视对象(不应处理查看高度或位置高度),则该数字将为0;如果玩家的后背注视该对象,则该数字将为180。

我已经成功计算了我需要的两个数字:

  1. 播放器的绝对视角。 当玩家朝北看时为0,朝南看为180。

  2. 玩家位置和对象位置之间的位置角。 使用Math.atan2获取这些位置的[X,Z]之间的角度。

这两个值似乎计算正确。 但是我不知道该怎么做才能得到我最初描述的数字。 尝试减法,加法。 有任何想法吗?

两者之间应该是不同的-如果玩家向北看,并且物体delta x,delta z的方位角为45度,则针应该位于45处(45 == 0)的前面和右边玩家向南看,并且物体x,z为45,则指针应位于225或-135(= 45-180)的左侧和左侧。

检查是否已将Math.atan2的结果转换为度,以便以相同单位减去值,并且轴约定一致。 表示+ ve x轴是东方,+ ve z轴是南方。 方位角0,北由atan2(0,1)给出,这意味着您应该使用Math.toDegrees(Math.atan2(deltaX, -deltaZ))来获取方位。

在做这些事情时,编写覆盖案例的六个单元测试并玩弄标牌来查看效果要容易得多。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM