有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java获得了启动播放器的精确方向

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

我想做的是

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

它只有50%的时间有效


共 (2) 个答案

  1. # 1 楼答案

    一种可行的方法是从目标区块的坐标中减去玩家的坐标(或者反过来)。有更好的方法可以做到这一点,但尝试不止一种方法是没有坏处的! 下面是一个如何编写的快速示例:

    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));
    

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

  2. # 2 楼答案

    您也可以简单地使用player.setVelocity(player.getLocation().getDirection())将玩家朝着他们的十字线/他们面对的方向扔。可以通过各种方式操纵方向向量来更改跳跃行为,例如,将向量乘以常数以增加/减少跳跃/推的力