Home | Clases | Unity: Navegación | Moviendo al jugador a un punto marcado con el ratón

Moviendo al jugador a un punto marcado con el ratón


Creación del NavMesh

Lo siguiente que necesitamos es la creación de un mapa o malla de navegación que nos permita saber por qué lugares se puede andar o por qué lugares no.

Para ello, añade al Jugador un NavMesh Agent Component y, en principio, respeta los valores existentes, si bien más adelante puedes experimentar con la velocidad, el radio y la altura para evitar obstáculos, etc.

A continuación, selecciona tanto el Suelo como las Barreras del juego y marca en el Inspector Window la opción Static (arriba a la derecha) para indicar que son objetos que, en principio, no se mueven (son obstáculos).

Es el momento de crear nuestro mapa de navegación. Para ello, abre la ventana Window > AI > Navigation y, en la pestaña Object, selecciona All y asegúrate de que está marcado Navigation Static, Generate OffMeshLinks y seleccionado Walkable como Navigation Area:



Si ahora seleccionas la pestaña Bake y haces clic en Bake, deberías ver una escena similar a esta:



La zona azul te está indicando por dónde se puede andar y por donde no.

El script del Jugador

Para ver si funciona, vamos a crear y asociar un pequeño script llamado NavJugador al Jugador para que al hacer clic en cualquier lugar del mundo, el Jugador se desplace hacia allá evitando los obstáculos (andando solo por la zona permitida):


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;

public class NavJugador : MonoBehaviour {

NavMeshAgent agente;

void Start()
{
//Capturamos el componente agente del jugador
agente = GetComponent<NavMeshAgent>();
}

void Update()
{
if (Input.GetMouseButtonDown(0))
{
Ray rayo = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;

if (Physics.Raycast(rayo, out hit, 100))
{
agente.SetDestination(hit.point);
}
}
}
}


Si ahora ejecutas el juego, verás que al hacer clic, el Jugador se desplaza hacia ese punto con una velocidad concreta (que puedes modificar desde el NavMesh Agent).

Habrás apreciado que el Jugador salta buscando la ruta más rápida. Si prefieres que no lo haga, puedes modificar la altura Agent Height de la pestaña Bake de Navigation de modo que sea inferior a la altura de tus obstáculos.
Fecha de publicación: 16/10/2019
Asignaturas: desarrollo de entornos interactivos multidispositivo
Temas: unity c# visual studio
Utilizamos cookies propias y de terceros para mejorar su experiencia en la navegación. Al seguir navegando entendemos que acepta su uso.
Si lo desea, consulte nuestras políticas de privacidad y cookies
ENTENDIDO
[X] Cerrar

Contacta conmigo


[X] Cerrar

Acceso alumnos