Bukkit: Giving player velocity to another
所以我有这个代码:
playerB.setVelocity(vel);
这使玩家B 获得玩家A 的速度。问题是玩家 B 经常与玩家 A 的位置不同步,如果玩家彼此相距超过一个街区左右,玩家 B 根本不会移动,除非玩家 A 跳跃。
将玩家 B 传送到玩家 A 非常麻烦,因为他们需要能够移动鼠标。
谁能指出我正确的方向来解决这个问题?
我认为使用速度永远不会让你成功。相反,我会尝试使用传送,但用 playerB 的值覆盖 playerA 位置的 Yaw 和 Pitch 字段以允许"自由鼠标移动":
1 2 3 4 5 6 7 8 9 10 11 | @EventHandler public void onMove(PlayerMoveEvent event) { if (event.getPlayer().equals(playerA)) { Location loc = event.getPlayer().getLocation(); loc.setPitch(playerB.getLocation().getPitch()); loc.setYaw(playerB.getLocation().getYaw()); playerB.teleport(loc); } } |
我假设您正在尝试构建一些代码,让 playerB 跟随 playerA。为什么不计算两个玩家之间的位置差异,并用它来构造一个新的向量呢?
例如:
1 2 | Location difference = playerA.getLocation().subtract(playerB.getLocation()); playerB.setVelocity(difference.toVector()); |
因此,这将不断(不断地意味着每次调用这段代码)将玩家 B 的速度设置为这个新向量,并让他朝那个方向前进。