En este módulo, aprenderemos los conceptos fundamentales de la programación de inteligencia artificial (IA) en Unity. Exploraremos cómo crear comportamientos básicos para los personajes del juego, como el seguimiento de objetivos y la toma de decisiones simples.

Contenidos

  1. Introducción a la IA en Juegos
  2. Comportamientos Básicos de IA
  3. Implementación de Seguimiento de Objetivos
  4. Toma de Decisiones Simples
  5. Ejercicios Prácticos

  1. Introducción a la IA en Juegos

La inteligencia artificial en los juegos se refiere a la simulación de comportamientos inteligentes en personajes no jugables (NPCs). Estos comportamientos pueden variar desde simples movimientos hasta complejas decisiones estratégicas.

Conceptos Clave

  • NPC (Non-Player Character): Personaje controlado por el juego, no por el jugador.
  • Algoritmo de IA: Conjunto de reglas y lógica que define el comportamiento del NPC.
  • Estado: Condición actual del NPC que determina su comportamiento.

  1. Comportamientos Básicos de IA

Los comportamientos básicos de IA incluyen acciones como patrullar, seguir al jugador, atacar, y huir. Estos comportamientos se pueden implementar utilizando scripts en C#.

Ejemplo de Patrullaje

using UnityEngine;

public class Patrol : MonoBehaviour
{
    public Transform[] points;
    private int destPoint = 0;
    private UnityEngine.AI.NavMeshAgent agent;

    void Start()
    {
        agent = GetComponent<UnityEngine.AI.NavMeshAgent>();
        agent.autoBraking = false;
        GotoNextPoint();
    }

    void GotoNextPoint()
    {
        if (points.Length == 0)
            return;

        agent.destination = points[destPoint].position;
        destPoint = (destPoint + 1) % points.Length;
    }

    void Update()
    {
        if (!agent.pathPending && agent.remainingDistance < 0.5f)
            GotoNextPoint();
    }
}

Explicación del Código

  • Transform[] points: Array de puntos de patrullaje.
  • NavMeshAgent: Componente que permite a un objeto moverse a lo largo de una malla de navegación.
  • GotoNextPoint(): Método que establece el siguiente punto de destino.
  • Update(): Método que se llama en cada frame para verificar si el agente ha llegado a su destino y, si es así, establecer el siguiente punto de destino.

  1. Implementación de Seguimiento de Objetivos

El seguimiento de objetivos es un comportamiento común donde un NPC sigue al jugador o a otro objeto.

Ejemplo de Seguimiento de Objetivos

using UnityEngine;

public class FollowTarget : MonoBehaviour
{
    public Transform target;
    private UnityEngine.AI.NavMeshAgent agent;

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

    void Update()
    {
        if (target != null)
        {
            agent.SetDestination(target.position);
        }
    }
}

Explicación del Código

  • Transform target: El objetivo que el NPC seguirá.
  • NavMeshAgent: Componente que permite a un objeto moverse a lo largo de una malla de navegación.
  • Update(): Método que se llama en cada frame para actualizar la posición del objetivo.

  1. Toma de Decisiones Simples

La toma de decisiones simples puede implementarse utilizando estructuras de control como if-else y switch.

Ejemplo de Toma de Decisiones

using UnityEngine;

public class SimpleAI : MonoBehaviour
{
    public Transform player;
    public float detectionRange = 10f;
    private UnityEngine.AI.NavMeshAgent agent;

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

    void Update()
    {
        float distance = Vector3.Distance(player.position, transform.position);

        if (distance < detectionRange)
        {
            agent.SetDestination(player.position);
        }
        else
        {
            // Patrullar o realizar otra acción
        }
    }
}

Explicación del Código

  • detectionRange: Rango en el que el NPC detecta al jugador.
  • Vector3.Distance(): Método que calcula la distancia entre dos puntos.
  • if-else: Estructura de control que decide si el NPC debe seguir al jugador o realizar otra acción.

  1. Ejercicios Prácticos

Ejercicio 1: Patrullaje y Seguimiento

Objetivo: Crear un NPC que patrulle entre varios puntos y siga al jugador si entra en un rango específico.

Instrucciones:

  1. Crea un nuevo script llamado PatrolAndFollow.
  2. Combina la lógica de patrullaje y seguimiento de objetivos.
  3. Añade un rango de detección para que el NPC siga al jugador si entra en ese rango.

Solución:

using UnityEngine;

public class PatrolAndFollow : MonoBehaviour
{
    public Transform[] points;
    public Transform player;
    public float detectionRange = 10f;
    private int destPoint = 0;
    private UnityEngine.AI.NavMeshAgent agent;

    void Start()
    {
        agent = GetComponent<UnityEngine.AI.NavMeshAgent>();
        agent.autoBraking = false;
        GotoNextPoint();
    }

    void GotoNextPoint()
    {
        if (points.Length == 0)
            return;

        agent.destination = points[destPoint].position;
        destPoint = (destPoint + 1) % points.Length;
    }

    void Update()
    {
        float distance = Vector3.Distance(player.position, transform.position);

        if (distance < detectionRange)
        {
            agent.SetDestination(player.position);
        }
        else
        {
            if (!agent.pathPending && agent.remainingDistance < 0.5f)
                GotoNextPoint();
        }
    }
}

Retroalimentación y Consejos

  • Errores Comunes: Asegúrate de que los puntos de patrullaje y el jugador estén asignados en el Inspector de Unity.
  • Consejo: Utiliza Debug.Log para imprimir mensajes en la consola y verificar que las distancias y las decisiones se calculen correctamente.

Conclusión

En esta sección, hemos cubierto los conceptos básicos de la programación de IA en Unity, incluyendo comportamientos de patrullaje y seguimiento de objetivos, así como la toma de decisiones simples. Estos fundamentos te permitirán crear NPCs más inteligentes y dinámicos en tus juegos.

En el próximo módulo, exploraremos técnicas avanzadas de física y cómo integrarlas con la IA para crear interacciones más realistas y complejas.

Curso de Unity

Módulo 1: Introducción a Unity

Módulo 2: Programación Básica en Unity

Módulo 3: Trabajando con Activos

Módulo 4: Física y Colisiones

Módulo 5: Interfaz de Usuario (UI)

Módulo 6: Audio en Unity

Módulo 7: Programación Avanzada

Módulo 8: Física Avanzada e IA

Módulo 9: Optimización y Rendimiento

Módulo 10: Publicación y Más Allá

© Copyright 2024. Todos los derechos reservados