获取启动播放器的准确方向
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() 的目标块)
我正在制作一个插件,将玩家扔向他的光标(十字准线)。
我已经使用 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() 的目标块)