Помогите Заставить игрока идти за другим игроком

  • Автор темы Автор темы Kurumi
  • Дата начала Дата начала

Kurumi

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
Kurumi
Всем привет.
Возможно ли каким-то образом заставить игрока идти за другим игроком?
Может быть, можно надеть на игрока1 поводок, чтобы игрок2 мог идти, а игрок1 следовал за ним?
 
Всем привет.
Возможно ли каким-то образом заставить игрока идти за другим игроком?
Может быть, можно надеть на игрока1 поводок, чтобы игрок2 мог идти, а игрок1 следовал за ним?
Как вариант, добавлять velocity с определенной скоростью и дальностью, в зависимости от дистанции второго игрока
 
Два игрока или 1 игрок и 1 NPC?
 
Последнее редактирование:
Ну так даже если и напишешь, то если игрок будет шевелиться то его колбасить во все стороны
 
Ну так даже если и напишешь, то если игрок будет шевелиться то его колбасить во все стороны
Не думаю что это будет проблемой. Самое главное, чтобы игрок2 мог тащить игрока1 даже против его воли
 
даже против его воли
Вот в этом и проблема.
У меня сейчас единственный адекватный вариант - вселять игрока, которого тащат, в арморстенд или NPC.
И уже тащить эту "куклу", а не самого игрока.
Для самого игрока это будет выглядеть так, будто он действительно не может пошевелиться.
А с куклой получится уже так: чем длиннее расстояние между ведущим и куклой - тем сильнее на куклу действует вектор, направленный в сторону ведущего.
Конкретные значения проще всего подбирать на практике...
 
Вот в этом и проблема.
У меня сейчас единственный адекватный вариант - вселять игрока, которого тащат, в арморстенд или NPC.
И уже тащить эту "куклу", а не самого игрока.
Для самого игрока это будет выглядеть так, будто он действительно не может пошевелиться.
А с куклой получится уже так: чем длиннее расстояние между ведущим и куклой - тем сильнее на куклу действует вектор, направленный в сторону ведущего.
Конкретные значения проще всего подбирать на практике...
Я не понимаю, как это должно выглядеть =(
 
Можно банальнее - сажать игрока на vehicle без возможности дизмаунта.
просто командой игрока сажать вагонетку а игрок за собой оставляет рельсы и едет за ним изи

Я хз че я ша написал)
 
просто командой игрока сажать вагонетку а игрок за собой оставляет рельсы и едет за ним изи

Я хз че я ша написал)
Самое простое решение из всех, что я слышал

Я не понимаю, как это должно выглядеть =(
Ну, задавай конкретные вопросы, а мы ответим
 
Вот в этом и проблема.
У меня сейчас единственный адекватный вариант - вселять игрока, которого тащат, в арморстенд или NPC.
И уже тащить эту "куклу", а не самого игрока.
Для самого игрока это будет выглядеть так, будто он действительно не может пошевелиться.
А с куклой получится уже так: чем длиннее расстояние между ведущим и куклой - тем сильнее на куклу действует вектор, направленный в сторону ведущего.
Конкретные значения проще всего подбирать на практике...
Ещё можно установить игроку нулевую скорость, тогда сам он не сможет двигаться, но есть тут подводные камни, игрока тогда придётся телепортировать, а это не всегда можно плавно сделать.
 
Ещё можно установить игроку нулевую скорость, тогда сам он не сможет двигаться, но есть тут подводные камни, игрока тогда придётся телепортировать, а это не всегда можно плавно сделать.
Да и по прыжкам не всё так гладко. Конечно, уже давно есть какие-то костыли на запрет прыжков, но без понятия, как они работают. Кажется, что-то по типу отрицательного эффекта прыгучести или левитации. Но тут опять же встанет вопрос о том, как игрока тянуть принудительно в какую-либо сторону...
 
Да и по прыжкам не всё так гладко. Конечно, уже давно есть какие-то костыли на запрет прыжков, но без понятия, как они работают. Кажется, что-то по типу отрицательного эффекта прыгучести или левитации. Но тут опять же встанет вопрос о том, как игрока тянуть принудительно в какую-либо сторону...
Телепортами.
Короче тут как и всегда есть 2 стула, выбирай любой, всё равно сядешь на оба.
 
Через NMS относительно плавно получится, если вот так:
]CODE=java[
private boolean moveToNextPoint(Player player)
{
Iterator<Location> it = inMove.get(player);
if(!it.hasNext())
{
parent.toNextChain(player, this.chainNumber);
return false;
}
Location destination = it.next();
if(destination.distance(player.getLocation())>7.0)
player.teleport(destination);
Vector moveVector = destination.toVector().subtract(player.getLocation().toVector());
EntityPlayer entity = ((CraftPlayer)player).getHandle();
entity.checkMovement(moveVector.getX(), moveVector.getY(), moveVector.getZ());

entity.move(moveVector.getX(), moveVector.getY(), moveVector.getZ());
entity.e();
if(moveVector.length()>1)
player.setVelocity(moveVector.normalize());
else
player.setVelocity(moveVector);

if(type==ChainType.UNLOOKABLE)
{
entity.yaw = destination.getYaw();
entity.pitch = destination.getPitch();
}
return true;
}
]/CODE[
 
Назад
Верх