Trabajar con NavMeshAgent en Unity

En Unity, NavMeshAgent es un componente poderoso que te permite implementar búsqueda de rutas y navegación para personajes u objetos en tu juego. Utiliza el sistema de navegación integrado de Unity para calcular rutas en una superficie NavMesh. En este tutorial, cubriremos los conceptos básicos de configuración y uso de NavMeshAgent con ejemplos de código.

Requisitos previos

  • Comprensión básica de Unity interfaz y conceptos de desarrollo de juegos.
  • Unity instalado en su sistema (versión 2017 o posterior).

Configurando NavMesh en Unity

Antes de sumergirnos en el uso de NavMeshAgent, debemos configurar un NavMesh en nuestra escena.

  1. Cree una superficie NavMesh:

    • Vaya a 'GameObject -> 3D Object -> NavMesh Surface'. Esto crea un nuevo GameObject con un componente 'NavMeshSurface' adjunto.
    • Ajuste la configuración del componente NavMesh Surface según sea necesario para su escena.
  2. Hornear NavMesh:

    • Haga clic en el botón 'Bake' en el componente 'NavMesh Surface' para generar NavMesh para su escena.
    • Asegúrese de que su entorno (terreno, obstáculos, etc.) esté configurado correctamente para permitir una búsqueda precisa del camino.

Usando NavMeshAgent en código

Ahora, escribamos un código para realizar un movimiento GameObject usando NavMeshAgent.

Paso 1: adjunte NavMeshAgent a GameObject

  • Adjunte un componente NavMeshAgent a su GameObject en el editor Unity. Puedes hacer esto seleccionando GameObject, haciendo clic en 'Add Component' y luego agregando 'NavMeshAgent'.

Paso 2: escribe un guión para el movimiento

  • Cree un nuevo script C# (por ejemplo, 'PlayerController.cs') y adjúntelo al GameObject con el componente NavMeshAgent. Abra el script en su editor de código preferido.
using UnityEngine;
using UnityEngine.AI;

public class PlayerController : MonoBehaviour
{
    private NavMeshAgent navMeshAgent;

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

    void Update()
    {
        // Check for player input or any other conditions to trigger movement
        if (Input.GetMouseButton(0)) // Example: Move towards mouse click position
        {
            MoveToClickPosition();
        }
    }

    void MoveToClickPosition()
    {
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;

        if (Physics.Raycast(ray, out hit))
        {
            // Move NavMeshAgent towards the clicked position
            navMeshAgent.SetDestination(hit.point);
        }
    }
}

Paso 3: configurar la escena y probar

  • Asegúrese de que su GameObject con NavMeshAgent y el script adjunto estén presentes en la escena.
  • Presiona Reproducir en el editor Unity y observa el comportamiento.
  • Haga clic en cualquier lugar de la superficie 'NavMesh' y el GameObject debería moverse hacia esa posición.

Resumen

En este tutorial, aprendió cómo configurar y usar NavMeshAgent para encontrar rutas y navegar en Unity. Siguiendo estos pasos y ejemplos de código, puedes implementar movimientos básicos para personajes u objetos en tu juego usando el sistema de navegación integrado de Unity.