Я провел около часа исследования, как заставить NPC «отталкивать» , что означает убегать от игрока в Unity3d. Везде, где я ищу это, я нахожу массу вещей о том, как заставить NPC бежать к игроку, но никогда не отталкивать. Я новичок в разработке игр, поэтому понятия не имею, как это делать.

dugofound 18 Авг 2020 в 15:58

2 ответа

Лучший ответ

В этом ответе я постараюсь как можно лучше объяснить написанный мною код.

Векторы — это просто массивы чисел с плавающей запятой. Vector2 содержит два числа с плавающей запятой, Vector3 содержит 3 числа с плавающей запятой . В Unity Vector3 используется для позиций и направлений.

Vector3 direction = NPCPosition — playerPosition;

Создаем направление Vector3. Берем Vector3 NCPPosition — playerPosition. Итак, почему мы это делаем? Представьте себе две точки в одной строке. скажем, вы хотите получить расстояние, которое должна пройти вторая точка на линии, чтобы достичь первой точки. Допустим, первая точка находится на расстоянии 1 дюйма от начальной точки линии.

Как заставить моба двигаться в нужном направлении в Майнкрафт ПЕ | Tower Defense Bedrock Edition

Допустим, вторая точка находится на расстоянии 2 дюймов от начальной точки линии. Итак, в каком направлении должна двигаться вторая точка, чтобы уйти от первой точки? Что ж, направо. И как это рассчитать? Мы берем положение точки, которую хотим переместить, и вычитаем положение точки, от которой хотим уйти.

Это даст нам значение (1). Это означает, что мы можем переместиться на 1 дюйм вправо. Если бы точки находились на разных позициях, допустим, точка, которую мы хотим переместить, находится на 2, а точка, от которой мы хотим отойти, на 5, вычисление выше вернет -3. Это означает, что мы могли бы переместить -3 дюйма в вправо (3 дюйма влево), чтобы отойти от точки.

Теперь давайте сделаем это для всех осей (x, y и z). Получим Вектор 3 с направлением, в котором мы хотим двигаться (от игрока).

Во второй строке

direction.y = 0;

Мы устанавливаем ось y равной нулю. Зачем? В Unity ось Y представляет собой вверх и вниз. И поскольку мы не хотим, чтобы NPC просто улетал (если он выше игрока) и отставал от земли (когда он ниже игрока), мы устанавливаем эту ось равной нулю.

Я забыл эту строку в своем предыдущем ответе:

direction = Vector3.Normalize(direction);

В этой строке мы делаем направление на самом деле просто направлением (извините за плохое объяснение этого). И это потому, что мы учитываем разницу в глобальном пространстве между объектами th и хотим, чтобы NPC просто удалялся с постоянной скоростью. Если бы мы не писали эту строку, скорость NPC изменилась бы при изменении расстояния до игрока.

Читайте также:  Как видеть крафты в Майнкрафте

В следующей строке

NPCTransform.rotation = Quaternion.Euler(direction);

Поворачиваем NPC подальше от игрока. И почему там этот Quaternion.Euler ()? Ну, мы не можем установить вращение на Вектор, мы должны сначала сделать из него Кватернион. Кватернион в Unity используется для вращения.

В последней строке мы фактически перемещаем NPC.

NPCTransform.Translate(transform.forward * NPCSpeed);

В Unity есть много способов переместить объект. Если вы хотите, чтобы у NPC была гравитация (в случае, если он откуда-то упадет, а не просто парил в воздухе: D), вы должны добавить Rigidbody к NPC и проверить «использовать гравитацию». В этом случае последняя строка будет выглядеть вот так вместо NPCTransform.Translate (transform.forward * NPCSpeed) ;:

Как задать путь для НПС в Майнкрафт ПЕ — (Способ 1 из 3/Туториал Minecraft PE) НПС ходит…


NPCRigidbody.AddForce(direction * NPCSpeed);

При использовании преобразования для перемещения NPC мы использовали бы строку выше:

Метод translate перемещает преобразование (объект (в нашем случае NPC)) на указанную нами позицию. Итак, что мы передаем в этом методе? Мы прошли в этом:

Поскольку этот метод перемещает объект на позицию, мы добавляем transform.forward * NPCSpeed. Здесь мы просто берем направление и умножаем его на скорость, с которой мы хотим, чтобы NPC двигался. (скорость — это число, обычно плавающее).

Таким образом, если бы вы использовали преобразование для перемещения NPC, код выглядел бы так:

Vector3 direction = NPCPosition — playerPosition; direction.y = 0; direction = Vector3.Normalize(direction); NPCTransform.rotation = Quaternion.Euler(direction); NPCTransform.Translate(transform.forward * NPCSpeed);

И вот так, если бы вы использовали Rigidbody для перемещения NPC:

Vector3 direction = NPCPosition — playerPosition; direction.y = 0; direction = Vector3.Normalize(direction); NPCTransform.rotation = Quaternion.Euler(direction); NPCRigidbody.AddForce(direction * NPCSpeed);

Я надеюсь, что объяснение достаточно хорошее. 🙂

Zoedingl 19 Авг 2020 в 12:14

Возьмите позиции Vector3 игрока и NPC и выполните следующие вычисления:

Vector3 direction = NPCPosition — playerPosition; direction.y = 0; direction = Vector3.Normalize(direction); NPCTransform.rotation = Quaternion.Euler(direction); //MOVE NPC forward (the calculations above calculate the direction away from the player) NPCTransform.Translate(NPCTransform.position + (transform.forward * NPCSpeed));

Надеюсь, это помогло. 🙂

Если что-то непонятно, просто спросите меня. : D

Изменить: я добавил direction = Vector3.Normalize (direction); линия.

Источник: question-it.com

Как заставить мобов работать вместо себя? Вышел мод Custom NPS для Minecraft 1.8.4

Custom NPC

Изобилие модификаций – вот что делает игры по-настоящему успешными. Увлекательнейший геймплей, ультрасовременная графика, кооперативный режим – все это рано или поздно приедается, да и, в общем-то, не имеет значения, если игрок не может добавить в свое любимое развлечение ту или иную деталь, которой, по его мнению, не хватает. И даже такая игра как Майнкрафт не является исключением – именно изобилию модификаций всемирно известная виртуальная песочница и обязана своей популярностью.

Читайте также:  Как построить грядку в Майнкрафте

Одной из последних и без преувеличения наиболее интересных модификация является Custom NPS. Благодаря данному апгрейду процесс выполнения рутинных задач в майнкрафт упрощается в десятки раз. Так, например, всеми ненавистных процесс добычи камня или дерева можно будет доверить мобам, освободив тем самым свое внимания для решения более интересных игровых задач. По сути, данная модификация превращает мобов в настоящую прислугу.

Custom NPC

Причем их навыки не ограничиваются простой добычей элементарных ресурсов. Охота на других мобов, рыбалка, поиск редких элементов, посев и сбор урожая, приручение и разведение животных – все это теперь за вас сделает ваша собственная армия мобов! Помимо всего прочего, мобам можно будет задать свой игровой скин из других модификаций, установить уровни их умений в том или ином ремесле, и даже собственноручно заполнить их инвентарь какими-нибудь уникальными игровыми предметами, например, алмазным мечом.

Для установки Custom NPC потребуется скачать minecraft 1.8.4 и forge соответствующей версии. Теоретически данная модификация может работать с любой версией игры, однако на деле это не всегда так — разработчик создавал её именно под версию 1.8.4, посему наиболее стабильная работа данного мода наблюдается именно в этой версии.

Итак скачиваем CustomNPC для minecraft 1.8.4. После загрузки файлы модификации следует расположить в папке mods вашей игры.

Custom NPC

Смотрите, что у нас есть ещё:

  • MinePainter для Minecraft – почувствуй себя художником!
  • Меняем погоду в Майнкрафт
  • Подробная инструкция по установке пакетов текстур, модов и шейдеров MineCraft
  • Новые ресурсы, монстры и даже девушки в OreSpawn Mod

Нет комментариев

Нажмите, чтобы отменить ответ.

Кто мы такие?

Разделы сайта

  • Bukkit (12)
  • Антигриф (2)
  • Настройка (3)
  • Телепортация (5)
  • Новости (64)
  • Обновления (55)
  • Новости (53)
  • Сервер (53)
  • Сервисы (4)
  • Ловушки (2)
  • Механизмы (15)
  • Постройки (19)
  • Редстоун (3)
  • Фермы (3)
  • Counter-Strike (3)
  • Cтроительство (19)
  • IT/Софт (52)
  • SEO (8)
  • Steam (2)
  • Авто/Мото (56)
  • Аксессуары (25)
  • бизнес (113)
  • Бытовая техника (14)
  • Велосипеды (2)
  • Дом (41)
  • другие игры (149)
  • еда (34)
  • Животные (3)
  • Здоровье (78)
  • интернет (154)
  • Интерьер (11)
  • казино (442)
  • Книги (4)
  • Компьютерная техника (20)
  • Криптовалюта (11)
  • мебель (17)
  • Медицина (25)
  • Мода и Стиль (11)
  • Мода и стиль (36)
  • недвижимость (19)
  • Новости (2)
  • Обзоры (7)
  • Оборудование (26)
  • Образование (18)
  • обустройство дома (45)
  • отдых (18)
  • Парфюмерия (5)
  • Перевозки (16)
  • Праздники (13)
  • Промышленность и оборудование (27)
  • психиатрия (4)
  • Работа (11)
  • Развлечения (13)
  • реклама (29)
  • Сельское хозяйство (6)
  • Софт (14)
  • Социальные сети (1)
  • Спецтехника (1)
  • Спорт (23)
  • Строительство (7)
  • Стройматериалы (4)
  • Технологии (24)
  • транспорт (7)
  • Туризм (5)
  • Услуги (78)
  • Юридические услуги (10)
  • Криптовалюта (6)
  • Counter-Strike (11)
  • Медицина и Здоровье (4)
  • Отдых (7)
  • Спорт (16)
  • Сервер (5)
  • Скрипты (1)
  • Моды (46)
  • Программы (5)
Читайте также:  Если бы в Майнкрафте не было гор

Последние обновления в блогах

  • Интересное / Почему Minecraft так популярен
  • Медицина и Здоровье / Лечение наркомании в Москве в медицинском центре «Корсаков»
  • Фильмы / Интересные исторические факты о ювелирных изделиях
  • Counter-Strike / Как прокачивается скин на сайте ForceDrop?
  • Моды / Моды для Minecraft
  • Отдых / Популярная современная и классическая музыка
  • Новости / Майнкрафт на Андроид бесплатно
  • Counter-Strike / Преимущества сайта краша скинов CSGO4FUN
  • Интересное / В новом обновлении Brawl Star добавили Бастера
  • Фильмы / Видео для социальных сетей
  • Прямой эфир

    Полезное

    • Заказ услуги Трезвый водитель
    • Як правильно організувати посадку у вагон
    • Как найти хорошего флеболога
    • СУБД на платформе Tantor
    • Чому варто грати у GTA-Ukraine

    Источник: minersss.com

    Как заставить нпс двигаться в майнкрафт

    Сообщений: 771
    Как заставить НПС смотреть в заданую точку

    Автор статьи: Jоhann

    Что бы нпс стоял на месте можно использовать логику walker и чтобы он смотрел в заданую точку.
    Снимаем координаты где он стоит, пишим их в all.spawn и сдесь. И снимаеи координаты куда он смотрит, в какую точку

    [walker]path_walk = название точки где стоит нпс
    path_look = название точки куда смотрит нпс

    Это пишим в way_***.ltx в распакованом all.spawn
    Координата, где стоит нпс, должна быть такой же, что и писали в самом alife_**.ltx.

    [название точки где стоит нпс]
    points = p0
    p0:name = wp00
    p0:flags = 0x1
    p0:position = -258.846771,-17.546392,-127.127708 ; ваши координаты
    p0:game_vertex_id = 934 ; ваши гаме вертексы
    p0:level_vertex_id = 8288 ; ваши левел вертексы

    [название точки куда смотрит нпс]
    points = p0
    p0:name = wp00
    p0:flags = 0x1
    p0:position = -256.672241,-17.875896,-127.18396 ; ваши координаты
    p0:game_vertex_id = 934 ; ваши гаме вертексы
    p0:level_vertex_id = 9137 ; ваши левел вертексы

    Источник: stalker-gaming.ru