Tabla de contenidos

Introducción

Una de las cosas más increíbles sobre el diseño del juego es la capacidad de hacer cosas que son imposibles en la realidad. Un jefe ejemplo de esto es la idea de la vista ortográfica.

Unidad vista ortográfica de demostración

Las computadoras tienen la capacidad de construir una perspectiva que ni siquiera existe en la vida real. Esto tiene algunas consecuencias interesantes cuando se trata de la creación de videojuegos. Explorando formas de utilizar esta perspectiva única generará un juego bastante intrigante. No sólo va a ser único, sino que también añade otra dimensión de posibilidades de diseño. Este aspecto también es bastante similar a ciertos videojuegos populares en las tiendas de aplicaciones móviles.

En este tutorial, vamos a aprender a usar vista ortográfica para crear un juego de puzzle en la Unidad. A partir de la generación de una proyección ortográfica, a la creación de un personaje, vamos a explorar todos los aspectos de esta nueva perspectiva para el desarrollo del juego. Al mismo tiempo, también vamos a aprender sobre el sistema de navegación componente de la Unidad y la forma en que podemos manipular a trabajar en esta vista de múltiples facetas.

Así que, sin más preámbulos, vamos a empezar y crear un juego de ilusión!

¿Quieres ir por delante? Echa un vistazo a la Parte 2 en vez!

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

    Los activos y archivos de Project

    Puede descargar los archivos completados del proyecto para este tutorial aquí:. Código fuente

    También va a utilizar el sistema de navegación de componentes que se pueden obtener de forma gratuita desde Github de la Unidad (https://github.com/Unity-Technologies/NavMeshComponents). Descargarlo en su ordenador y guardarlo en un archivo de cerca de sus proyectos de Unity. Vamos a ser el acceso a esto más adelante.

    creando la ilusión

    Seleccione su cámara y cambiar la perspectiva a “ortográfico”.

    Cambio de la cámara a ortográfico en la unidad

    La forma en que esto funciona es vista se toma toda la información en profundidad y se aplana. De esta manera, el tamaño de los objetos en la escena es su “verdadero tamaño”, lo que significa que los objetos lejanos no se ven los objetos más pequeños y más estrechos no se vean más grandes. Esto, se puede imaginar, es esencial cuando se trata de crear esta ilusión.

    puede crear esta ilusión utilizando únicamente el hielo, así que adelante y agregue en.

    Adición de un cubo a la escena

    Nuestra cámara no está en la posición correcta; Necesitamos arreglar eso. La posición no es tan importante como la rotación. Queremos que puede girar alrededor del eje X e Y para que podamos ver esencialmente tres caras del cubo al mismo tiempo. Aquí están la posición final y la rotación aterricé en:

    La transformada de la cámara en la unidad

    Es muy importante nunca cambian la transformada de la cámara! Una vez que tenga un valor, quede sujeta, no lo cambie. No escribir guiones en movimiento de la cámara. No hacer animaciones en movimiento de la cámara. Para que la ilusión al trabajo, necesitamos la cámara para permanecer siempre en una sola posición.

    Una vez que la cámara está configurada, tenemos que crear una ilusión podemos trabajar con ellos. Escalar el cubo de modo que es bastante largo en un eje

    Un cubo escala y su transformada

    A continuación, vas a querer duplicar el cubo y girar los duplicados de 90 grados en el eje y. Colocarlo de manera que se parezca a esto:

    El cubo duplicado y se hace girar

    Llevarlo hasta por encima del cubo original una distancia buena, por razones que veremos más adelante.

    reposicionamiento del cubo superior

    Volver a colocar todo para que los finales miradas resultado como este:

    tamaño Ver en cámara ortográfica

    Es posible que sea el cambio de la posición de los dos cubos o cambiar el “tamaño” de nuestra cámara ortográfica. Además, sombras desactivar en la luz direccional. Esta es otra parte importante de la creación de la ilusión.

    enmarcar los objetos en la escena

    limpieza del medio ambiente

    Tengo un par de quejas con nuestra configuración actual. En primer lugar, todo es tan brillante!

    Un material menos escena que requieren gafas de sol a la ceguera evitar

    Vamos a añadir en algunos materiales. Crear una nueva carpeta llamada “Materiales” y crear un nuevo material llamado “Blue”. Cambiar el valor de albedo de azul y arrastrar este material en nuestras dos cubos.

    Adición de un material a nuestros cubos

    Esto se ve mucho mejor! La segunda cosa que necesitamos cambiar es nuestra jerarquía.

    A desorganizado y jerarquía ineficiente

    Se ve tan poco organizada. Además, la escala de nuestros cubos presentará problemas más adelante si tratamos de animarlos. Así que en primer lugar, vamos a crear un objeto de juego vacío llamado “medio ambiente” y colocar nuestros cubos de eso.

    El objeto Medio Ambiente crianza de todos los cubos

    A continuación, vamos a más padres nuestros cubos en juego vacío objetos llamados “PlatformTop” y “PlatformOccluded”, por lo que van a cada una tienen una escala uniforme de 1.

    Los Cubos parented a GameObjects recién creados

    La escala de los padres de cada cubo

    Hay que son! Una escena muy bien la configuración que podemos trabajar con ellos. Como un paso muy final, crear una cápsula llamada “carácter” y colocarlo en nuestros cubos.

    Una cápsula que servirá como nuestro carácter

    Dado que este va a ser nuestro carácter, es posible pensar en cambiar el tamaño del medio ambiente (cambiar la escala de los niños, no los padres los que deben permanecer a 1). El personaje debe encajar fácilmente bajo estas dos cubos

    colocar correctamente los objetos para hacer espacio para el carácter

    Configuración de navegación

    Agentes y Nav-Mallas

    En los archivos del proyecto, cree una nueva carpeta llamada “Componentes de navegación.” Vaya a donde almacenó el Componentes de navegación descargado de Github y soltar la carpeta “NavMeshComponents” en la pestaña de proyecto (esto se encuentra en “NavMeshComponents-master -> Activos”). Hay algunos ejemplos en toda la carpeta que merece la pena visitar en un proyecto separado, dedicado Unidad. Cuando la carpeta es la importación de hacerlo, se dará cuenta de la presencia de unas cuantas secuencias de comandos en la categoría de “navegación” de los componentes.

    secuencias de comandos de navegación recién importados

    Si desea una mirada más profunda a lo que exactamente estos componentes hacen, echa un vistazo al tutorial en el juego Dev Academia acerca de las herramientas de navegación nativos de la unidad (https://gamedevacademy.org/learn-unitys-navmesh- por-crear-a-click-to-mover-juego /). Por ahora, asignar una “malla Agente Nav” a nuestra cápsula de carácter.

    El componente Agente de navegación

    A “Nav Mesh Agent” es un objeto de juego que atraviesa un nav malla. Básicamente, este es el objeto de juego que va a estar haciendo el camino de los hechos. La mayor parte de los ajustes en el componente de agente son bastante intuitivo. Sugiero, con el fin de entender mejor lo que cada una de estas opciones de configuración, el violín con estos valores cuando tenemos el personaje en un trabajo de navegación de malla. Lo que sobre todo quiero destacar aquí es la forma de cilindro que rodea la cápsula.

    El Colisionador de nuestro carácter

    Además del colisionador cápsula (que debe ser ajustado a “disparador”, por cierto), tenemos un ser creado límite adicional. El tamaño y el radio de este cilindro es el tamaño y radio que la Unidad pensará que el agente de navegación es. Esto no es un valor que no podemos modificar este valor en la malla Agente de navegación, más bien, al llegar a ella, que en realidad será la edición de este en el NAV-malla de sí mismo.

    Pero lo que es una malla de navegación exactamente? A nav-malla es una malla real generada por la Unidad que permite que el agente para hacer caminos en su geometría. Cualquier lugar donde hay un nav-malla es un lugar donde el agente nav-malla puede generar una trayectoria. Una vez dicho esto, vamos a querer un nav-malla en ambos nuestros cubos. Seleccionar los padres de cada cubo y agregar un componente de “Nav malla de superficie” a cada uno.

    componente de la superficie A Nav-Mesh añadió a cada cubo

    La configuración de este componente son vale la pena mirar. En primer lugar, se dará cuenta de que hay un campo “Tipo de agente”. Esto se establece en “Humanoid” por defecto. La idea detrás de este valor es que se puede establecer diferentes tipos de agentes de navegación de malla (cosas como animales, enemigos, etc.) si quería que ellos trayectoria encuentran de manera diferente. Desde “Humanoid” es lo que nuestro carácter es, vamos a salir de esta con el valor predeterminado.

    Determina “recoger los objetos”, que las superficies se va a tener un nav-MeSH al horno sobre ellos. En nuestro caso, queremos que este conjunto de “niños” ya que es donde están los cubos están. “Incluye capas” le permite determinar lo hacen capas que desea participar en el cálculo del valor liquidativo de malla. Y “Usar geometría” le permite establecer si desea que la geometría o los colisionadores de física pertenecientes al objeto del juego que se consideran viables superficies de navegación de malla. Por último, hay un botón y “Bake” “Borrar” en el extremo de la pieza. Haga clic en “Hornear” para cada uno de los componentes que hemos creado. La unidad generará entonces el NAV-mallas y su visor se verá así:

    Nuestra escena con horneados NAV-mallas

    Esa pequeña franja azul es nuestro navegador-malla. prueba Vamos a ver si está funcionando! Crear una nueva carpeta llamada “Scripts” y crear un nuevo script llamado “PlayerController.”

    Un guión que acaba de crear en una carpeta recién creada

    En ese guión, vamos a escribir un poco de código simple que envía un rayo de fundición, comprueba para ver si está en un sistema de navegación de malla, y establece la posición seleccionada para ser el destino del agente si el clic fue hecho en un sistema de navegación de malla.
    utilizando System.Collections; usando System.Collections.Generic; usando UnityEngine.AI; usando UnityEngine; [RequireComponent (typeof (NavMeshAgent))] public class PlayerController: {MonoBehaviour agente NavMeshAgent privado; privada RaycastHit clickInfo = new RaycastHit (); // Start se llama antes de la primera actualización del marco vacío Inicio () {= agente getComponent (); } // actualización se llama una vez por trama de actualización void () {if (Input.GetMouseButtonDown (0)) {var ray = Camera.main.ScreenPointToRay (Input.mousePosition); si (Physics.Raycast (ray.origin, ray.direction, fuera clickInfo)) agent.destination = clickInfo.point; }}} 12345678910111213141516171819202122232425262728usingSystem.Collections; usingSystem.Collections.Generic; usingUnityEngine.AI; usingUnityEngine; [RequireComponent (typeof (NavMeshAgent))] publicclassPlayerController: MonoBehaviour {agente privateNavMeshAgent; privateRaycastHit clickInfo = newRaycastHit (); // Start se llama antes de la primera enmarcar updatevoidStart () {agente = getComponent ();} // actualización se llama una vez por framevoidUpdate () {if (Input.GetMouseButtonDown (0)) {VARRAY = Camera.main.ScreenPointToRay (Input.mousePosition); si (Physics.Raycast (ray.origin, ray.direction, outclickInfo)) = agent.destination clickInfo.point;}}}

    Arrastrar y soltar este script en nuestro carácter de cápsula. exitosa obra y ver la magia!

    El carácter navegar el cubo ocluido

    Nuestro personaje se mueve ahora en donde hacemos clic! Tenga en cuenta esto, porque tenemos la nav-malla como un componente, que existe en ese objeto del juego significa que podemos mover el objeto de juego y nuestro navegador de malla sigue. Esto será muy útil cuando se trata de la animación de las plataformas.

    Off Mesh Enlaces

    Todo el propósito de esta ilusión era hacerlo de modo que las superficies que parecen estar conectados se puede navegar por el jugador. Como tal, queremos que estas dos superficies que se van conectados de alguna manera.

    Una conexión superficie aparente

    Aquí es donde Off-Mesh Enlaces entra. Al igual que su nombre lo indica, son una manera de ligar dos nav-malla superficies. Crear un objeto nuevo juego de vacío llamado “Link1” y colocarlo en el medio ambiente.

    Enlace en la jerarquía

    Añadir un componente “NavMeshLink” (no es una “Off-Mesh Enlace”) para este objeto juego.

    componente de enlace Off-malla

    Como se puede ver, tenemos dos transformadas. Estos son, de manera intuitiva, las posiciones de inicio y fin de nuestro enlace. Tenemos que colocar cada archivo de transformación en el cubo ocluido y otro en la parte superior del cubo. Usted verá una forma de círculo cuando la transformación es viable sobre una superficie de malla de navegación.

    Un viable off-Acoplamiento de la conexión

    Ahora aquí es donde la singularidad de la ilusión entra. Tenemos que colocar estratégicamente estos enlaces fuera de la malla de tal manera para que se alinean en la vista de juego. Esto provoca una desconexión en el espacio mundial, pero una aparente conexión en el espacio ortográfica.

    La ilusión se conserva en la visión del juego

    Si no ve nada de esto en la vista de juego, enable “trastos” en la esquina superior derecha. Nuestro jugador tiene ahora la capacidad de navegar dos cubos!

    La navegación con los enlaces

    La limpieza de las cosas

    En este momento, los trabajos mecánicos. Nuestro jugador puede navegar dos superficies desconectadas. Sin embargo, se ve todo mal. Hay demasiado de un retraso de traslación. Necesitamos que sea lo más sencillo posible. Ahora, nos damos cuenta de que no se verá 100% sin problemas, simplemente porque estamos usando un sistema de navegación que no fue realmente construido para lo que estamos utilizando para. Este sistema de enlace fue diseñado para cosas como escaleras o teleportaciones, no necesariamente vinculación sostenimiento ilusión. Sin embargo, podemos hacer una mejora exponencial de esta manera atroz de cruzar plataformas. Tan pronto como el jugador está en un enlace, no queremos que interpolar entre las posiciones (lo que provoca un retraso). En su lugar, podemos hacerlo de forma instantánea teletransportarse a través del enlace. Para ello, de hecho vamos a escribir un poco de código con nuestro propio método de cruce de enlaces. En el guión “PlayerController”, tenemos que añadir esta sentencia if a nuestra función de actualización,
    void Update () {if (Input.GetMouseButtonDown (0)) {var ray = Camera.main.ScreenPointToRay (Input.mousePosition); si (Physics.Raycast (ray.origin, ray.direction, fuera clickInfo)) agent.destination = clickInfo.point; } If (agent.isOnOffMeshLink) // declaración lógica Nueva {agent.CompleteOffMeshLink (); }} 12345678910111213141516voidUpdate () {if (Input.GetMouseButtonDown (0)) {VARRAY = Camera.main.ScreenPointToRay (Input.mousePosition), si (Physics.Raycast (ray.origin, ray.direction, outclickInfo)) agent.destination = clickInfo.point;} if (agent.isOnOffMeshLink) // Nueva declaración lógica {agent.CompleteOffMeshLink ();}}

    “CompleteOffMeshLink” es un método que llamamos en el agente de navegación. Se moverá instantáneamente el carácter a través del enlace fuera de la malla cada vez que se llama. En nuestro caso, estamos llamando a este método siempre que estamos en un enlace fuera de la malla.

    Para probarlo, asegúrese de que “Auto Off Traverse Acoplamiento de la conexión” está desactivada.

    nav-Mesh agente con

    exitosa obra y vamos a echar un vistazo!

    Un mejoró interpolación entre plataformas para la ilusión

    En realidad, esto es sólo una ligera mejora. Es demasiado pronto. Se ve raro porque el personaje solo aparece justo en el centro de la plataforma. Esto se debe a que nuestra malla de navegación está justo en el centro de nuestra plataforma.

    Una superficie nav-malla solamente cubre parte del cubo

    puede solucionar este problema cambiando el tamaño agente del agente nav-malla. Ir a la pestaña de navegación y modificar el área del carácter para ser un valor muy pequeño.

    radio Agent en la unidad

    Go sobre nuestras superficies NAV-malla y rebake cada uno de ellos. Esto hará que la cubierta de la superficie de navegación la parte superior de la mayoría de los cubos.

    A rebake de la nav-malla de manera que cubra todo

    Nótese, sin embargo, tenemos un mensaje de error.

    Un mensaje de advertencia en el componente de superficie nav-malla

    Básicamente, es decir que la superficie de navegación puede no ser exacta para un pequeño radio de dicho agente. Para solucionar este problema, “Configuración avanzada”, abiertas de verificación “Invalidar Voxel tamaño.” Configurarlo para que el tamaño recomendado de 0.022. Tenemos que hacer esto para cada componente de la superficie y luego se hornea también. se borrará el error cuando cada superficie tiene acabado de hornear.

    Necesitamos esta superficie de navegación cubrir la mayor parte de la plataforma como sea posible. Para aumentar la precisión de nuestro sistema de articulación, que puede escalar el cubo superior muy ligeramente para estar debajo de toda la superficie de navegación.

    La superficie de navegación que cubre toda la parte superior del cubo

    Y ahora, es sólo una cuestión de colocar estratégicamente los enlaces para que uno de ellos está en el borde del cubo superior.

    Reposicionamiento el enlace en el borde

    Ahora, el juego hit y prueba de ello!

    Nuestro sistema de interpolación final

    Como se puede ver, esto no es 100% transparente, pero es una mejora en el aspecto anterior. Para mejorar la “sin costura” de la conexión, intente reposicionar los puntos de inicio y fin. Es sólo una cuestión de tocar el violín con los valores. A pesar de que no sostiene por completo la ilusión, sin duda va a ser suficiente para la creación de prototipos y pruebas de nivel.

    Conclusión

    ¡Menos mal! Hemos cubierto mucho terreno aquí y aprendimos un poco sobre el uso de sistema de componentes de navegación de la Unidad y vistas ortográficas para crear un juego. No sólo nos dieron nuestros sistemas configurados para nuestro juego de ilusión, pero también conseguimos nuestro movimiento personaje!

    Sin embargo, mientras que, tenemos la capacidad para navegar plataformas desconectadas, no es tan sencillo que podemos conseguir.

    En el siguiente tutorial, vamos a escribir un algoritmo personalizado para interpolar entre puntos. También vamos a ser la animación de plataformas y dar al jugador la posibilidad de desencadenar estas animaciones de actuadores en el lugar del siniestro. Esto podría todo el sonido un poco complicado, pero la preocupación no como lo que le guiará a través de cada paso para lograr que se haga!

    Vayamos de continuar esta exploración de la perspectiva, ya que …

    Seguir haciendo grandes juegos!

    Mensajes relacionados

Deja una respuesta

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