Tabla de contenidos

Introducción

En esta lección vamos a hacer un movimiento de carácter al lugar donde el usuario hace clic. Esto puede sonar simple, pero, como usted pronto descubrirá, que puede ser bastante complicado. Estoy utilizando el sistema de navegación actual en la Unidad 5.6. Sin embargo, hay algunas cosas nuevas que vienen a la navegación, que discuto al final de este tutorial. Las secuencias de comandos y el terreno prefabricada se pueden descargar aquí.
No se pierda! extremos de la oferta en

  • Accede a los más de 200 cursos
  • Nuevos cursos añadió mensual
  • Cancelar en cualquier momento
  • Los certificados de terminación

    ACCESO ahora

    montaje del proyecto

    seguir adelante y crear un nuevo proyecto llamado navegación. Una vez que se ha creado el proyecto hacer una nueva carpeta llamada “escenas”.


    Guardar la escena actual en esa carpeta. Nombrar la escena lo que quiera, llamé a la mina “Medio Ambiente”. Después de que la importación a los personajes de la unidad de Standard Los activos paquete.


    Es posible utilizar objetos primitivos en lugar de caracteres humanoides pero esto da una buena visualización de cómo funciona el sistema. Cuando aparece el cuadro de diálogo de importación desmarque el personaje en primera persona ya que sólo va a trabajar con el controlador de tercera persona. Una vez que está hecho de importación crear una carpeta llamada “Modelos”.


    Aquí es donde vamos a almacenar el terreno. Importar el modelo de terreno y prefabricada. Almacenar el terreno en nuestra carpeta recién creada, “Modelos”. Ahora hemos establecido nuestro proyecto y está listo para comenzar.

    Hacer que el personaje se mueva al punto seleccionado

    Arrastra la “terreno” prefabricada en la escena.


    Me pareció que tenía triplicar el tamaño así que vamos a hacerlo ahora.


    Una vez que haya reducido su terreno abierto la carpeta marcada Standard Los activos y navegar a Caracteres>> thirdperson prefabricadas o de arrastre sobre el terreno el prefabricada marcada “AIThirdPerson”


    y eliminar la cámara que es secundario a la misma.


    Comprobar el inspector y asegúrese de que “AIThirdPerson” tiene una “malla Agente Nav” y un componente de “AI Carácter de control” que se le atribuye.


    Sin embargo, tenemos que añadir un componente más. Crear una carpeta llamada “Scripts”. Aquí es donde pondremos nuestro nuevo componente. Con el “AIThirdPersonController” clic seleccionado “Agregar nuevo” en el inspector. Seleccione “Nuevo guión” y llamar a la secuencia de comandos “MoveToClick”.


    Antes de abrir Mono-desarrollar añadir el guión que acaba de crear en nuestra carpeta “Scripts”.


    Ahora abra el guión y añadir estas líneas de código:
    utilizando System.Collections; usando UnityEngine; MoveToClick clase pública: MonoBehaviour {_ray privada Ray; _Hit RaycastHit privado; Transformar pública OBJ; // Usar esto para la inicialización de inicio void () {} // actualización se llama una vez por cuadro de actualización de vacío () {if (Input.GetMouseButtonDown (0)) {if (Physics.Raycast (Camera.main.ScreenPointToRay (Input.mousePosition ), fuera _Hit)) {OBJ.position = _Hit.point; }}}} System.Collections 123456789101112131415161718192021using; utilizando UnityEngine; publicclassMoveToClick: MonoBehaviour {privateRay _ray; privateRaycastHit _Hit; publicTransform OBJ; // Usar esto para initializationvoidStart () {} // actualización se llama una vez por framevoidUpdate () {if (Entrada. GetMouseButtonDown (0)) {if (Physics.Raycast (Camera.main.ScreenPointToRay (Input.mousePosition), fuera _Hit)) {OBJ.position = _Hit.point;}}}}

    El script es muy simple. Cuando el usuario hace clic en, un Rayo se envía. Dondequiera que los impactos de rayos, se mueve un GameObject (llamado OBJ) hasta el punto donde el rayo intersecta colisionador de ese objeto. Obviamente, para que la secuencia de comandos para el trabajo que necesita un Gamobject que pueda moverse. Crear un objeto de juego vacío y llamarlo “destino”. Arrastre “Target” en el cuadro de referencia en el guión “MoveToClick”. También arrastre “Target” en el cuadro de referencia “AICharacterControl”.


    Vamos a cubrir lo que está pasando en el guión “AICharacterControl” más adelante en esta lección. Después de eso es jugar el juego y hacerlo intente hacer clic para ver si se mueve el personaje.


    Vaya, que se olvidó de colocar la cámara. Posicionarlo para que llegue a todos los terrenos. Ahora jugar y haga clic en alguna parte en el terreno. ¿Lo que pasa? Nada!


    Hornear el Nav-Mesh

    ¿Por qué sucedió no es nada? Bueno, parte de la respuesta está en la “AICharacterControl”. Vaya por delante y abrir el “AICharacterControl”. A primera vista parece que hay muchas cosas de miedo y que la sensación es bastante exacto, pero si se observa en la función de actualización no es una línea determinada que es de interés:
    si (objetivo! = null) agent.SetDestination (target.position); 12Si (! target = null) agent.SetDestination (target.position);

    Lo que esta línea de código está haciendo está diciendo algo que se llama un “NAV Agente de malla”para ir a lo que cada vez se asigna transformar. Se dará cuenta de que un “Nav-Mesh Agente” se asigna a la “AIThirdPersonControl”. Un “Nav-Mesh agente” es un componente con la capacidad de navegar en un “Nav-Mesh”. A “Nav-Mesh” es una malla de procedimiento generado que permite que el “Nav-Mesh Agent” navegar a un objetivo específico, evitando obstáculos. Para hacer un control Nav-Mesh clic sobre el terreno y que sea “Navegación estática”,


    hacer lo mismo con el “AIThirdPersonControl”. Luego de navegación (sin doble sentido) a Ventana> Navegación.


    Haga clic en la pestaña etiquetada “Bake” y luego haga clic en el botón “Bake” en la parte inferior de la pestaña. Después de que se realiza la cocción aviso del plano azul que se crea.


    Esa es la Nav-malla. Ahora vamos a jugar de prensa y ver qué pasa. Todavía no se mueve a donde haga clic. ¿Por qué? La respuesta es simple. Ir al terreno y localizar al niño llamado “Cubo” y luego añadir un colisionador de malla.


    Lo que estaba ocurriendo era el Rayo que el guión “MoveToClick” estaba enviando no se colisionar con el terreno porque el terreno no tenía nada que chocan con! EMPRESA tratar de jugar. Hay hermoso! Ahora se mueve el personaje dondequiera que hacer clic! Lo que hemos hecho es realmente la moral de esta historia cuando se trata de la Nav-malla. Prueba, fallan, pellizco, repetir. Que se acaba de todo lo que hay.

    cambiar las configuraciones de horneado Nav malla

    En la configuración de pasteles Nav Mesh hay algunas cosas que el efecto de cómo las cocas de Nav de malla para nuestro medio ambiente. “Agente de Radio” determina el ancho de la agente es. radio de un agente se determina por el componente “Nav Mesh Agent”. En su mayor parte, que la altura y el radio en la configuración de hornear los mismos valores que los de la “malla Agente Nav”. “Max Slope” determina lo que una pendiente es. Cualquier cosa menos que eso se considera transitable. Aquí me puse el mío a 20 grados, lo que hace que ambos colinas transitable. “Paso Altura” es el escalón más alto que el agente puede atropellado. Yo la mía a 0,17, esto hace que el agente capaz de ejecutar el primer paso en la escalera, pero aún tiene que subir todos ellos para llegar a la cima. La última sección, “generó enlaces Off Mesh”, no es necesario ya que vamos a hacer todo esto de forma manual. Se puede configurar cualquiera de estos valores a lo que quiera. De hecho, sería mejor si lo hizo para tener una idea de cómo las cocas de Nav de malla para ciertos cambios en la configuración.

    Avanzado Nav malla hornear configuración

    Si la configuración es la siguiente:


    A continuación, se debe notar que la Nav malla hornea las escaleras como si fueran una pendiente.


    Esto no es siempre una mala cosa. Sin embargo, si necesita la colocación exacta de su agente en un paso, como para recoger una moneda, aquí es donde algo que se llama un “Altura malla” entra en acción. A Altura de malla hace exactamente lo que necesitamos para, permite al agente ser colocado con precisión en una superficie transitable. En “Opciones avanzadas” en la cocción de verificación de configuración “Altura de malla” y volver a hornear.

    Si ve ningún cambio Asegúrese de que puede ver la altura malla permitiendo altura con malla visibilidad.


    Lo que hay que ver es una malla de color rosa generada sobre todo las superficies planas. Dale al play y ver qué pasa. Usted puede no notar demasiado de una diferencia. Coloque la cámara más cerca de los pasos y luego ver qué pasa. A diferencia de una caminata suave hacia arriba y abajo ahora parece más entrecortado. Este camino subir escaleras debe mirar.


    Los otros ajustes, “tamaño de vóxel Manual” y “Área Región Min” son una forma manual para describir cómo se cuece la Nav malla. “Región Área Min” le permite eliminar partes pequeñas, desconectadas de la Nav malla. Con Manual tamaño de vóxel controlada puede establecer la precisión de la cocción. La única vez que usted puede necesitar esto es que si quieres una más precisa Nav malla o si usted tiene un pequeño radio de agente. Estamos utilizando solamente la “altura de malla” para que pueda ignorar los otros ajustes.

    Off Mesh Enlaces

    Así que ahora tenemos nuestro carácter navegando por colinas y las escaleras, pero todavía hay algunos lugares que nuestro carácter es incapaz de llegar a, como el gran paso / plataforma y la zanja grande / zanja. Pues bien, ambas áreas son demasiado grande para hacer frente a sólo por el uso de la malla de navegación por qué no lo hacen donde el jugador salta por encima o sobre cualquiera de ellos? Esto se logra mediante el uso de algo llamado “enlaces” Off Mesh. Un apagado Acoplamiento de la conexión permite que el agente de navegación para interpolar (o salto) de un apagado Acoplamiento de la conexión a otro. Crear un objeto de juego vacío y llamarlo “OffMeshLinks”, esto va a ser el padre de todos nuestros enlaces de malla fuera. Crear otro juego de objeto y colocarlo en un lado de la zanja, el nombre de “Link1”. Añadir un componente “Off Acoplamiento de la conexión” a Link1. Link1 duplicado y colocarlo de clon en el otro lado de la zanja. Rellenar los campos de inicio y fin en el componente Off Acoplamiento de la conexión con Link1 y su clon.

    es necesario que un par de malla Off Enlaces Sólo uno de los componentes Off Acoplamiento de la conexión para que pueda eliminar uno de los componentes. Ahora jugar y ver lo que hace el personaje cuando se hace clic en el otro lado de la zanja. Ahora flota a través de la zanja!


    Ahora vamos a hacer lo mismo para el gran paso / plataforma. Link1 duplicado y arrastre a la parte inferior de la plataforma. Duplicar y moverlo hasta el borde del escalón. Ahora poblar el inicio y fin con … así se entiende la idea. Ahora sería un buen momento para que usted pueda rellenar la escena con el mayor número de enlaces Off Mesh como desee. Voy a darle una visión general del componente Off Acoplamiento de la conexión y luego a mostrar lo que le hice a mi escena. Los campos “Inicio” y “Fin” debe ser bastante explica por sí mismo. Dos transformaciones que el agente puede interpolar entre. El boolean “Bi-direccional” determina si los enlaces son reversibles. Con esta comprobado que el agente puede ir y venir en los enlaces. El “Anulación de costes” determina la prioridad del enlace cuando se trata de la búsqueda de un camino agente. Esto es útil si desea que su personaje sea más propenso a pie o viceversa. Un valor más alto hará que sea menos probable que se calcula en un camino. “Activado” es otra explica por sí mismo uno. desactiva sin marcar el enlace. Con “Actualización automática de posición” controlada hace que los vínculos relativos entre sí. Al mover el punto final mueve el punto de inicio como si estuvieran criaron. “Área de navegación” describe cómo se trata el enlace. En caso de que el personaje caminar sobre él? Debe saltar el personaje? O no utilizarla en absoluto? Así es como yo solía Off Mesh Enlaces en mi escena:


    Nav malla Obstáculos

    Así que ahora nuestro personaje puede subir pendientes, saltar por encima de las trincheras, obstáculos y evitar en su camino. Pero ¿y si esos obstáculos se están moviendo? ¿Qué hacemos entonces? Bueno hay un componente llamado (por supuesto) “Nav malla de obstáculos”. Para utilizar este componente crear un cubo y colocarlo en algún lugar de su entorno. A continuación, conecte un nuevo guión a ese objeto (colocándolo en la carpeta correcta, por supuesto) llamado “movimiento”. En ese guión añadir estas pocas líneas de código:
    utilizando System.Collections; usando System.Collections.Generic; usando UnityEngine; Mover clase pública: MonoBehaviour {switchedDirection private bool = false; // Usar esto para la inicialización de inicio void () {} // actualización se llama una vez por cuadro de actualización de vacío () {if (transform.position.x <= -9) {switchedDirection = true; } If (transform.position.x> = 8) {switchedDirection = false; } If (switchedDirection == true) {transform.Translate (Vector3.right * Time.deltaTime); } If (switchedDirection == false) {transform.Translate (Vector3.left * Time.deltaTime); }}} 12345678910111213141516171819202122232425262728using System.Collections; usando System.Collections.Generic; usando UnityEngine; publicclassMove: MonoBehaviour {privateboolswitchedDirection = false; // Usar esto para initializationvoidStart () {} // actualización se llama una vez por framevoidUpdate () {if (transformar .position.x <= - 9) {switchedDirection = true;} if (transform.position.x> = 8) {switchedDirection = false;} if (switchedDirection == true) {transform.Translate (Vector3.right * Tiempo. DeltaTime);} if (switchedDirection == false) {transform.Translate (Vector3.left * Time.deltaTime);}}}

    Este script es un script bastante básico “ir y venir”. Ahora, coloque el componente “Nav malla de obstáculos” al cubo, junto con nuestra secuencia de comandos Mover.


    Ahora duplicar el cubo y la posición de los clones de ellos en todo su entorno. Ahora pulse el juego y trate de poner su personaje en la trayectoria de un cubo. Usted se dará cuenta de que su personaje hace todo lo posible para evitar los obstáculos.


    El “Nav malla de obstáculos” es bastante explicativo. Sin embargo, el booleano “Carve” es muy importante. Lo que hará es en realidad poner un agujero en la malla de navegación. Con “Carve Sólo parado” comprueba el obstáculo sólo tallar la Nav malla cuando el objeto está estacionario. Esto optimiza la búsqueda de caminos sin destruir la memoria RAM del ordenador al mismo tiempo.

    El nuevo sistema de navegación

    En la GDC 2017 Unidad anunció un nuevo sistema de navegación. Este sistema eliminaría por completo la ventana de navegación e ir solamente a un sistema basado en componentes. Lo que significa que en vez de hornear tiempo de ejecución antes de Nav de malla que se pueden hornear y rebaked de acuerdo a lo que aparece en la escena durante el tiempo de ejecución. Además, un nuevo componente similar a la de la malla de enlace permitirá que los agentes se muevan a través de un área entera en contraposición a la corriente apagado Acoplamiento de la conexión que sólo permite el movimiento a través de dos puntos. El nuevo sistema de navegación se encuentra actualmente en fase beta, pero los componentes se puede descargar en la Unidad github aquí: https://github.com/Unity-Technologies/NavMeshComponents

    Este nuevo sistema se espera que será enviado pronto con Unity.

    Espero que este tutorial es muy útil. Seguir haciendo grandes juegos!

    Mensajes relacionados
    > <img src =

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *