Блог онлайн школы Пиксель

Как сделать NPC для Unity 3D

Привет, друзья! Мы возвращаемся с уроками по Юнити и программированию на языке C#. На этот раз мы покажем, как сделать в Unity NPC — неигрового персонажа. Обычно NPC персонаж помогает разнообразить и усложнить игру: он общается с игроком, дает подсказки, может помочь или, наоборот, навредить. Давайте добавим NPC в наши игры!

Открываем Юнити, создаем Plane. Далее на нем создаем сферу, это будет наш персонаж. И создаем куб, это будет npc. Добавляем на куб Rigidbody.

Создаем скрипт. В скрипте объявляем скорость и объект, за которым будем следовать.


Далее в Update создаем еще одну переменную, в которую будем записывать скорость, умноженную на Time.deltaTime, это нужно для сглаживания движения.

В следующей строке пишем, что меняем позицию объекта к объекту Player.


Перемещаем скрипт на куб, в пустое поле добавляем сферу. Запускаем и проверяем.

Создаем еще один скрипт. Теперь сделаем так, чтобы NPC ходил непрерывно из одной точки в другую. Объявляем скорость.


Присваиваем значение.


В Update пишем, что перемещаем объект по оси X (Vector3.left), умножая на скорость и сглаживание.


Далее проверяем, в каких координатах находится объект. Возвращаемся в Юнити, ставим куб в начальную точку, откуда он будет начинать движение, копируем координату по X в инспекторе и вставляем в первый if, перемещаем куб в конечную точку, копируем координату и вставляем во второй if. Когда объект достигнет первой координаты, скорость  уменьшиться. Когда достигнет второй, это будет означать, что ему нужно двигаться обратно.


Перемещаем скрипт на куб, первый скрипт удаляем с куба. Запускаем и проверяем.

Теперь давайте сделаем так, чтобы, когда персонаж находится близко к кубу, он подходил к нему. А когда персонаж далеко от  куба, то он ходил из стороны в сторону. Открываем второй скрипт и в нем добавляем переменную персонажа.


Объявляем переменную dist и в нее с помощью метода Distance записываем дистанцию между объектами. С помощью Debug в консоль будет выводиться дистанция между объектами.


И добавляем еще один if: если дистанция больше 5, то объект будет двигаться из стороны в сторону.


Если дистанция меньше 5, то куб будет идти к персонажу.


Полный скрипт:


Добавляем в инспекторе объект персонажа, запускаем и проверяем.

Друзья, если вы хотите поглубже погрузиться в Unity, записывайтесь на онлайн-курсы в школу “Пиксель”. Мы проводим уроки по Юнити и Си Шарп, учим создавать игры и писать для них скрипты. А еще смотрите наши видеоуроки на YouTube, чтобы пройти Unity обучение на русском бесплатно.



Бесплатные видеоуроки Unity для детей