Поиск пути / навигация ИИ

В 2045 году, развитие технологий и робототехники достигнет того уровня, при котором станет возможно создание первого поколения машин, под управлением ИИ способного обучаться. Спустя три года, SkyNet обретет сознание и… И сегодня, мы поговорим о ИИ, точнее о том, как научить бота искать пути к указанной цели. Напишем простенький скрипт, который будет отвечать за движение. В играх, например, жанра экшн, боты умеют не только находить игрока, но также и стрелять, прятаться и прочее. Но, это тема уже для следующего урока, возможно. Главное, с начало научить бота бегать за игроком, то есть разобраться с основами, как сделать карту навигации, а уже на этой основе можно будет экспериментировать.

За основу возьмем вот этот урок, так будет наглядней, в догонялки поиграть с ботом. Впрочем, не обязательно, вместо игрока можно просто сделать пустышку. В общем, нам понадобится 3D проект, создайте новую сцену, затем несколько объектов:

Plane - немного растянуть его по осям Х и Z. Это будет основа для карты навигации.
Cube - пару штук, увеличить их и сделать из них, что-то вроде препятствий.

Затем, надо сделать пустышку, переименовать в MAP например, и вложить туда эти объекты. Теперь, добавляем нашего игрока и врага. Наш бот это обычный игровой объект, со всеми компонентами, плюс, Nav Mesh Agent обязательно и скрипт.



Сцена может выглядеть примерно вот так:


Игрок/цель есть, противник есть. Остается еще скрипт, создаем EnemyNav:

using UnityEngine;
using System.Collections;

public class EnemyNav : MonoBehaviour {

	public GameObject target; // Собственно цель
	private NavMeshAgent nav;

	void Start () 
	{
		nav = GetComponent<NavMeshAgent>();
	}

	void Update () 
	{
		if(target) // Если объект существует
		{
			nav.SetDestination(target.transform.position);
		}
	}
}

Окей, приступим к созданию карты навигации. У нас есть объект MAP, который включает в себя все остальные, то есть, например, Вы сделали поверхность, здания, коридоры и т.п., короче готовая карта. Надо пометить их как статические:

Поиск пути / навигация ИИ

А так же, все дочерние объекты.

Переходим на вкладку Navigation, раздел Bake


Тут всё достаточно наглядно, изменяя параметры, вы будете видеть что получится в итоге. В нашем случаи, простая плоскость, нет никаких склонов, холмов, ступенек и т.п. Поэтому например, переменные Max Slope и Step Height можно поставить по нулям. Остальное на усмотрение, когда всё будет готово, жмём кнопочку Bake (внизу справа).

Конечный результат:


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

Комментариев 1

Офлайн
60x
60x 21 сентября 2016
Вот это бы, но поиск пути в реальном времени с динамически появляющимися объектами...
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
  • Яндекс.Метрика