Unity Graph и NavMesh

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

Использование Graph и NavMesh в Unity

Одним из наиболее распространенных применений графиков в Unity является представление путей навигации для персонажей или объектов в вашей сцене. Система Unity NavMesh предоставляет мощный инструмент для определения и работы с навигационными графами. NavMesh — это динамически генерируемая сетка, которая обеспечивает решение для поиска пути для ваших персонажей, позволяя им перемещаться вокруг препятствий и с легкостью достигать места назначения.

Чтобы создать NavMesh в вашей сцене, вам сначала нужно создать компонент NavMesh Bake. Этот компонент генерирует навигационную сетку на основе геометрии вашей сцены и предоставляет доступ к ряду свойств, управляющих ее поведением. Вы можете определить размер и форму сетки, установить высоту сетки над землей и выбрать, какие объекты в вашей сцене будут использоваться в качестве препятствий.

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

Еще одно распространенное использование графиков в Unity — представление блок-схем или других типов диаграмм. Для этого можно использовать компонент Редактор графиков, предоставляющий визуальный интерфейс для создания и редактирования графиков. Вы можете добавлять узлы в свой график, определять отношения между ними и добавлять входные и выходные данные, чтобы контролировать, как данные проходят через ваш график.

Наконец, вы также можете использовать графики в Unity для представления математических функций. Для этого можно использовать компонент Animation Curve, который предоставляет визуальный интерфейс для определения кривой на основе набора ключевых кадров. Вы можете использовать кривую анимации для анимации объектов или управления поведением игры с течением времени.

Пример

Вот пример скрипта, который демонстрирует, как использовать NavMesh в Unity для создания графа навигации:

using UnityEngine;
using UnityEngine.AI;

public class NavMeshExample : MonoBehaviour
{
    public Transform target;
    NavMeshAgent agent;

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

    void Update()
    {
        agent.SetDestination(target.position);
    }
}

Этот сценарий создает компонент NavMeshAgent для игрового объекта, к которому он прикреплен и устанавливает его место назначения в положение целевого объекта в каждом кадре. NavMeshAgent автоматически найдет кратчайший путь к цели, используя NavMesh.

Чтобы использовать этот сценарий в своем проекте, вам потребуется сгенерировать NavMesh в вашей сцене и вам нужно будет прикрепить сценарий к игровому объекту, имеющему компонент NavMeshAgent. Вам также необходимо определить целевое преобразование в инспекторе. Когда вы запускаете сцену, игровой объект с прикрепленным скриптом будет двигаться к цели, следуя за NavMesh.

Доступные свойства NavMesh

PropertyFunction
Agent Size
RadiusRadius of the agent, used to calculate collisions
 between obstacles and other agents.
HeightThe height clearance the agent needs to pass below an obstacle overhead.
Base offsetOffset of the collision cylinder in relation to the transform pivot point.
Steering
SpeedMaximum movement speed (in world units per second).
Angular SpeedMaximum speed of rotation (degrees per second).
AccelerationMaximum acceleration (in world units per second squared).
Stopping distanceThe agent will stop when this close to the goal location.
Auto BrakingWhen enabled, the agent will slow down when reaching the destination. You should disable this for behaviors such patrolling, where the agent should move smoothly between multiple points
Obstacle Avoidance
QualityObstacle avoidance quality. If you have high number of agents you can save CPU time by reducing the obstacle avoidance quality. Setting avoidance to none, will only resolve collision, but will not try to actively avoid other agents and obstacles.
PriorityAgents of lower priority will be ignored by this agent when performing avoidance. The value should be in the range 0–99 where lower numbers indicate higher priority.
Path Finding
Auto Traverse OffMesh LinkSet to true to automatically traverse OffMesh links. You should turn this off when you want to use animation or some specific way to traverse OffMesh links.
Auto RepathWhen enabled the agent will try to find path again when it reaches the end of a partial path. When there is no path to the destination, a partial path is generated to the closest reachable location to the destination.
Area MaskArea mask describes which area types the agent will consider when finding a path. When you prepare meshes for NavMesh baking, you can set each meshes area type. For example you can mark stairs with special area type, and forbid some character types from using the stairs.
Рандомизация движения NavMeshAgent в Unity и обход с флангов / Как создать игру [Урок 103]Рандомизация движения NavMeshAgent в Unity и обход с флангов / Как создать игру [Урок 103]

Заключение

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

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

18 + 8 =

Прокрутить вверх