Вторник, 23 Апреля 2024, 14:55

Приветствую Вас Гость

Меню сайта
Категории каталога
Создание игр [355]
Статьи об общих понятиях связанных с созданием игр.
Программирование [82]
Гайды по программированию на разных ЯП.
Движки и Гейммейкеры [145]
Статьи о программах для создания игр, уроки и описания.
Софт [43]
Различные программы, в том числе в помощь игроделам.
2D-графика [14]
Уроки по рисованию, растр, пиксель-арт, создание спрайтов и пр.
3D-графика [16]
Уроки по моделированию, ландшафт, модели, текстурирование и пр.
Моддинг игр [5]
Модификация компьютерных игр, создание дополнений, перевод, хакинг.
Игры [161]
Статьи об играх, в том числе и сделанных на гейммейкерах.
Разное [129]
Статьи, которые не вошли в определённые разделы.
Наш опрос
Разработка игр для вас:
Всего ответов: 11092
Главная » Статьи » Создание игр

Unity3D NavMesh
Здравствуйте. Я знаю, что такие туториалы вроде в интернете есть, но я напишу специально для gcup. Эта функция работает только в юнити версии 3.5.
Итак... Приступим. Открываем Unity и создаём либо терраин, либо плоскость. Ставим ему слой Default и галку на Static. Как на скрине:


Теперь открываем окно Navigation в Windows => Navigation. Появилось такое окно. Теперь выбираем в Navigation Layer слой "Default" (если автоматически не стоит). И нажимаем Bake. Как на скрине:

У нас должна появиться синяя подсветка на поверхности.

Теперь создаём объект, который будет следовать за игроком (или за другим объектом, который укажем в скрипте). Указываем этому объекту компоненты Capsule Collider и Rigidbody (для чайников: это находится в окне Component => Physics). Теперь добавим ещё один компонент. Component => Navigation => Nav Mesh Agent. Теперь устанавливаем радиус. И в Nav Mesh Walkable выбираем слой "Default". Вот как на скрине(к примеру):


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

Теперь пришло время писать скрипт. Создадим скрипт и назовём его AINavMesh. И пишем:
На C#
Code

using UnityEngine;
using System.Collections;

public class AINavMesh : MonoBehaviour {
public Transform _target; // Указываем переменную, к которой будет двигаться наш агент
NavMeshAgent _agent; // Указываем переменную агента

void Start () {
_agent = (NavMeshAgent)this.GetComponent("NavMeshAgent"); // Указываем, что переменная _agent - это наш агент.
}

void Update () {
_agent.SetDestination(_target.position); // Заставляем агента двигаться в сторону _target'а
}
}


Или UnityScript (JavaScript)
Code

#pragma strict

var _target : Transform; // Указываем переменную, к которой будет двигаться наш агент
var _agent : NavMeshAgent; // Указываем переменную агента

function Start () {
// Тут мы не напишем. Почему - читайте ниже.
}

function Update () {
_agent.SetDestination(_target.position); // Заставляем агента двигаться в сторону _target'а
}

Итак. Вот скрипты. Но мы не указали агент в JS. Там мы уж укажем агент в инспекторе (извините, моя проблема перевода скриптов с C# на JS).

Теперь переходим в редактор. Вешаем скрипт на объект с NavMeshAgent'ом. Если C#, то ничего в инспекторе указывать не надо. А если JS, то укажем агент. То есть перенесём самого персонажа туда. Теперь тестим! Всё работает! Но это ещё не всё.

Дополнительная информация к статье:
Чтобы сделать так, чтобы агент обходил стены, то им надо поставить слой "Default" (ну, всё так же, как и у поверхности).
Ну... Это всё) До скорых встреч! Так же пользуйтесь справкой по юнити, чтобы побольше узнать о скриптах NavMesh. Ведь на NavMesh можно построить хороший ИИ и сократить кол-во строчек кода!
Категория: Создание игр | Добавил: Nekit_Aut (20 Марта 2012)
Просмотров: 30709 | Комментарии: 11 | Рейтинг: 4.9/10 |
Теги: Unity, искуственный интелект, Unity 3.5, ИИ, Unity3D, NavMesh, NAvMeshAgent, AI, C#, навигация
Дополнительные опции:
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:

Игровые объявления и предложения:
Если вас заинтересовал материал «Unity3D NavMesh», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела. Предлагаются такие схожие материалы: Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями.

Всего комментариев: 11
+0-
10 sstas   (12 Сентября 2012 13:19) [Материал]
sstasспс за статью)

+2-
9 BrightSpot   (29 Июня 2012 00:40) [Материал]
BrightSpotчто делать если кнопка "navigation" не активна???

+1-
11 true_abrakadabra   (18 Июля 2013 19:23) [Материал]
true_abrakadabraКупить про версию

+0-
6 MyACT   (09 Апреля 2012 15:41) [Материал]
MyACTСпасибо,очень помогло smile

+0-
8 Nekit_Aut   (16 Апреля 2012 18:37) [Материал]
Nekit_AutВсегда пожалуйста)

+1-
5 Behind1243   (25 Марта 2012 19:18) [Материал]
Спасибо огромное, разобрался немного smile
Попробую переписать свой ИИ и алгоритм передвижения.

+0-
7 Nekit_Aut   (16 Апреля 2012 18:36) [Материал]
Nekit_AutПжалста)))

+2-
3 romgerman   (20 Марта 2012 22:05) [Материал]
romgermanО. Надо попробовать.

+1-
4 Nekit_Aut   (20 Марта 2012 22:09) [Материал]
Nekit_AutДавай. Но рекомендую писать лучше на C#. happy

+3-
1 IL-98-YA   (20 Марта 2012 19:11) [Материал]
IL-98-YAСупер

+2-
2 Nekit_Aut   (20 Марта 2012 19:12) [Материал]
Nekit_AutСпасибо) Старался)

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск по сайту
10 случ. движков
  • GameGuru
  • CSP Game Engine
  • Sandy3D
  • GameDirector
  • Skyline
  • HPL1 Engine
  • BASIC8
  • S2 Engine
  • MANU
  • Emcore3D
  • Друзья сайта
    Игровой форум GFAQ.ru Перевод консольных игр
    Все права сохранены. GcUp.ru © 2008-2024 Рейтинг