2016-01-24 2 views
3

Так что у меня этот кодBukkit: Давать скорость игрока к другому

Vector vel = playerA.getVelocity(); playerB.setVelocity(vel);

Что дает playerB скорость playerA, проблема в том, playerB часто получает unsycned от позиции playerA, и если игроки больше чем блок или так далеко друг от друга, playerB вообще не перемещается, если PlayerA не прыгает. Teleporting playerB to playerA очень глючный, поскольку они должны быть способны перемещать мышь

Может кто-нибудь указать мне в правильном направлении, чтобы это исправить? Спасибо в продвинутом

+0

не является событием для ввода нового блока? Вы можете установить скорость, как только они войдут в новый блок. – Jire

+0

Не могли бы вы сделать 1 плеер на другом, я не думаю, что соединение будет достаточно быстрым, чтобы делать то, что вы хотите сделать, вы также можете использовать зрительный режим, если это сработает. – Dallen

ответ

0

Я предполагаю, что вы пытаетесь создать код, который заставит playerB следовать за игроком. Почему бы не рассчитать разницу мест между двумя игроками и использовать это для создания нового вектора?

Например:

Location difference = playerA.getLocation().subtract(playerB.getLocation()); 
playerB.setVelocity(difference.toVector()); 

Таким образом, это будет постоянно (постоянно означает каждый раз, когда кусок коды называется) установить скорость playerB этого нового вектор, и заставить его продвинуться в этом направлении.

0

Я не думаю, что использование скорости всегда приведет вас к успеху. Вместо этого я хотел бы попробовать использовать телепорт, но переопределить поля рыскания и тангажа о местоположении playerA с значениями playerB, чтобы позволить «свободному движению мыши»:

@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); 
    } 
} 
Смежные вопросы