Uploaded by Виктор Николаевич Данин

Статья Данин Unity3d (1)

advertisement
Данин В.Н.
преподаватель СПО
Чебоксарский кооперативный Институт,
Российский университет кооперации
СОЗДАНИЕ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА В UNITY3D
Аннотация:
:
в данной статье рассмотрен пример создания новой
сцены с ИИ (искусственным интеллектом) в среде Unity3d. Перемещение в
разные позиции. Создание навигации по полю.
Ключевые слова: Unity3d, Искусственный Интеллект, программирование,
разработка приложений
Danin V.N.
Lecturer, SPO Cheboksary Cooperative Institute,
Russian University of Cooperation
CREATING ARTIFICIAL INTELLIGENCE IN UNITY3D
Abstract: This article describes an example of creatin g a new scene
with AI (artificial intelligence) in the Unity3d environment. Moving to
different positions. Creation of field navigation.
Key words: Unity3d, Artificial Intelligence, programming, application
development
Введение
Компьютерное приложение — компьютерная программа, служащая
для
организации
процесса
взаимодействия
человека
с
миром
математического моделирования с помощью языков программирования и
сред разработки.
Создание нового проекта
Запускаем Unity3d. После Для этого в верхнем левом углу
необходимо нажать на File и выбрать New Project, откроется окно создание
проекта, укажем его имя и расположение, затем нажмем Create Project.
Рисунок 1. Создание нового проекта.
Создание новой сцены в проекте
Нажать на File и выбрать New Scene, откроется окно создание
проекта, укажем его имя и расположение, затем переименуем новый файл и
назовем его Новая Сцена.
Рисунок 2. Создание сцены
Создание Платформы в проекте
Нажать на GameObject и выбрать 3D Object, откроется вкладка
создание объектов, выбираем Plane и в среде у нас появляется поверхность,
далее выравниваем ее выбирая нулевую позицию в разделе позиции в
инспекторе ставим по векторам нули.
Рисунок 3. Создание Платформы
Создание Объекта и заготовка поля для движения
Нажать на GameObject и выбрать 3D Object, откроется вкладка
создание объектов, выбираем Cube, данный куб будет нашим прототипом
ИИ. Добавляем его на поле, так же в разделе инспектор добавляем свойства
NavMeshAgent и RigidBody
Рисунок 3. Добавление макета ИИ.
Настройка поля для движения
В разделе Windows находим вкладку AI и выбираем Navigation там
выбираем Object и на объект Plane ставим галочку Navigation Static и во
вкладке Bake жмем Bake. И наша сетка для перемещения запекается поле
становится объектом для перемещения AI
Рисунок 4, 5 . Параметры объекта Plane и Navigation.
Установка Скрипта с ИИ на объект Cube
Добавим на объект Cube, скрипт AI.cs написанный на языке C# с
кодом в скобках написано пояснение к строкам кода:
Суть скрипта что при запуске программы объект начинает
двигаться по точкам заданным в разделе MoveSpots, это могут быть объекты
или позиции при приближении player на определенную дистанцию
chaseRadius ИИ начинает двигаться в сторону player при выходе player из
дистанции chaseRadius , ИИ возвращается к патрулированию.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI; (подключение библиотеки ИИ)
public class AI : MonoBehaviour
{
public Transform player;
данном случае MainCamera)
public
патрулирования )
Transform[]
( сюда добавляем нашего персонажа в
moveSpots;
(Точки
private int randomSpot;
NavMeshAgent nav; (Компонент Нав Меш)
public float distToPlayer = 5.0f;
public float chaseRadius = 20f; ( Радиус выбора)
public float facePlayerFactor = 20f;
private float waitTime;
public float startWaitTime = 1f;
void Start()
{
waitTime = startWaitTime;
движения
или
randomSpot = Random.Range(0, moveSpots.Length);
nav.speed = 5f;
}
private void Awake()
{
nav = GetComponent<NavMeshAgent>();
nav.enabled = true;
}
void Update()
{
float
transform.position);
distance
=
Vector3.Distance(player.position,
if(distance > chaseRadius)
{
Patroling();
}
else if(distance <= chaseRadius)
{
ChasePlayer();
}
}
void Patroling()
{
nav.SetDestination(moveSpots[randomSpot].position);
if(Vector3.Distance(transform.position,
moveSpots[randomSpot].position) < 2.0f)
{
if(waitTime <= 0)
{
randomSpot = Random.Range(0, moveSpots.Length);
waitTime = startWaitTime;
}
else
{
waitTime -= Time.deltaTime;
}
}
}
void ChasePlayer()
{
float
transform.position);
distance
=
Vector3.Distance(player.position,
if (distance <= chaseRadius && distance > distToPlayer)
{
nav.SetDestination(player.transform.position);
}
}
}
Для примера добавим еще 2 куба которые будут точками
патрулирования и переместим данные кубы в MoveSpots.
Дальше скрипт можно модернизировать добавляя или отключая
анимацию или другие компоненты.
После запуска программы объект будет патрулировать между двумя
точками.
Рисунок 6. Добавлении скрипта и точек патрулирования
Заключение
В результате работы было показано создание нового проекта и
сцены, добавление объектов, способ установки скрипта с ИИ для
приложения, разрабатываемого в Unity3d.
Использованные источники:
1. Unity Game Development in 24 Hours. Mike Geig (2015)
2. Learning C# Programming with Unity 3D. Alex Okita (2014)
3. Unity 2D Game Development. Dave Calabrese (2014)
4. https://gcup.ru/publ/gamedev/sozdanie_prostogo_ii_s_pomoshhju_navmesh_dlja
_fps_chast_1/1-1-0-364
5. https://docs.unity3d.com/Manual/index.html
Download