关于 java:Bukkit: 将玩家速度赋予另一个人

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 的速度设置为这个新向量,并让他朝那个方向前进。