获取启动播放器的准确方向

Get exact looking direction to launch player

我正在制作一个插件,将玩家扔向他的光标(十字准线)。 我已经使用 player.getLocation().getYaw() 使其工作,但由于某些原因偏航有时是负的。

我尝试做的是

player.setVelocity(new Vector(2.0f, 1.3f, Math.cos(player.getLocation().getYaw() * 180 / Math.PI)));

它只有 50% 的时间有效。

您也可以简单地使用 player.setVelocity(player.getLocation().getDirection()) 将玩家扔向他们面对的 crosshair/the 方向。您可以通过各种方式操纵方向向量来改变跳跃行为,例如通过将向量乘以常数 increase/decrease jump/push.

的力

一种可行的替代方法是从目标块的坐标中减去玩家的坐标(或相反)。有更好的方法来做到这一点,但尝试不止一种方法永远不会有坏处! 这是一个如何编写的简单示例:

victim.setVelocity(new Vector((epicenter.getLocation().getX() - victim.getLocation().getX())/4,(epicenter.getLocation().getY() - victim.getLocation().getY())/4,(epicenter.getLocation().getZ() - victim.getLocation().getZ())/4));

(在示例中,受害者是玩家,epicenter 是 p.getTargetBlock() 的目标块)