Vamos a utilizar Navmesh 2D en Unity, con esto que vamos a crear ahora nos permite crear mallas de navegación automáticamente, a partir de una escena y que nuestro personaje se mueva por donde nosotros queramos,
Aquí tenemos nuestro Unity abierto, y vemos que todavía no hay nada hecho, vamos a crear nuestro escenario
Aquí tenemos nuestro escenario, de fondo tenemos el Césped, los obstáculos que es marrón, y la carretera que es gris, todavía no tiene collider, ni nada por el estilo
ahora vamos a crear el NavMesh, pero antes de comenzar vamos a descargar el siguiente archivo que dejaré Aquí………enlace d la pagina para descargar
Lo Descargamos nos saldrá un rar. Lo extraemos nos saldrá una carpeta llamada «NavMeshPlus–master» esa carpeta le damos a copiar. Vamos a nuestro Unity. «Show in Explore»
Y dentro de la carpeta Assets, pegamos nuestra carpeta «NavMeshPlus–master«,una vez importado a nuestro juego creamos un objeto vacío, con el Nombre de «NavMesh» aunque podéis ponerle el nombre que vosotros queráis, después en las pestañas de arriba, Window-AI- Navegation y nos saldrá esto.
Ahora vamos a nuestro objeto vacío que en este caso es NavMesh y vamos a colocar 0 – 0 – en todos los Ejes de la position X-Y -Z todos ellos en 0
Así debería de quedar, ahora vamos a adjuntarle un componente
Nos quedaría una cosa así, pero ahora tenemos que modificar también la Rotation en el Eje X y debería quedar en -90.0000 así que vamos a hacer lo siguiente
Le damos a Rotate Surface to XY y debería quedar tal cual pongo en la imagen siguiente
Ahora vamos a seleccionar todos los obstáculos que hemos puesto en la escena, tanto carretera, como césped
A todas ellas le añadimos el Componente NavMeshModifer. Y ahora de nuevo seleccionamos todas las imágenes de la escena y se las incorporamos a NavMesh
Ahora vemos como están todas dentro de NavMesh
Seleccionamos todos los objetos de los cuales nuestro objeto no puede traspasar ni circular por ellos
Ahora marcamos Override Area
y seleccionamos área Type : Nor Walkable, nuestro objeto chocaría contra ellos, ahora seleccionamos los objetos de nuestra escena por los que si puede circular,
Ahora con los objetos dónde si pueden circular, de nuevo marcamos Override Area y en Area Type: Walkable para que nuestro objeto sí que pueda circular por ellos, y vamos a NavMesh
Y lo dejamos tal cual en Collect Obects : Children y en Use Geometry : Phy Colliders, Pero nos faltaría una cosa crear Collider a todos nuestro objetos así que seleccionamos todos de nuevo, y les creamos un box Collider 2D
Ahora vamos al fondo de la imagen y en su Box Collider2D y marcamos Auto Tilling
Aquí vemos nuestros collider así que en NavMesh le damos a Bake
Y así quedaría por donde nuestro objeto puede moverse
Creamos un objeto vacío, al que llamaremos Point
Dentro de este objeto vacío, creamos otro objeto vacío, con el número 1
Y los colocamos
Ya tenemos nuestro 4 puntos, ahora creamos nuestr coche que es el rosita.
Ahora os enseñare el Script
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.AI; public class nu : MonoBehaviour { public Transform[] Points; private int destPoint = 0; private NavMeshAgent agent; void Start() { agent = GetComponent<NavMeshAgent>(); agent.autoBraking = false; GotoNexPoint(); } void GotoNexPoint() { if (Points.Length == 0) return; agent.destination = Points[destPoint].position; destPoint = (destPoint + 1) % Points.Length; } void Update() { Quaternion rotation = Quaternion.LookRotation(Points[destPoint].position - transform.position, transform.TransformDirection(Vector3.forward)); transform.rotation *= Quaternion.Euler(+90, 0, 0); if (!agent.pathPending && agent.remainingDistance < 0.5f) GotoNexPoint(); } }
There’s definately a great deal to learn about this issue.
I like all the points you’ve made.
Thanks for another informative site. Where else could I
get that type of information written in such an ideal manner?
I have a mission that I am simply now working on, and I have been at the look out for such
info.