Bukkit: Giving player velocity to another
所以我有这个代码:
Vector vel = playerA.getVelocity();
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 的速度设置为这个新向量,并让他朝那个方向前进。
来源:https://www.codenong.com/34975044/