Tabla de contenidos

configuración de obstáculos, la configuración de puntuación usando TextMeshPro, y la aplicación Administrador de juego

Esta es la Parte 2 de una serie de tutoriales de tres partes sobre cómo crear un juego casual Hyper. Por favor asegúrese de que ha seguido la Parte 1 del tutorial y completado antes de iniciar esta parte. El enlace al tutorial anterior está aquí.

Fuente archivos de código

Puede descargar los archivos de código fuente tutorial aquí. Todos los archivos de proyecto se encuentran en la carpeta principal. La carpeta contiene archivos activos intermedios adicionales que se utilizaron durante el proceso de creación de los sprites del juego.

Esta parte del tutorial se hizo en la versión Unidad 2018.2.13f1, que era la misma versión utilizada en el tutorial anterior.

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

    Añadir una carpeta prefabricada al Proyecto

    Es necesario crear una nueva carpeta en el proyecto y el nombre de “casas prefabricadas”. Vamos a añadir objetos del juego a esta carpeta que vamos a crear instancias más adelante en el tutorial.

    Creación de obstáculos

    Comience por crear el primer obstáculo. Este obstáculo va a ser un cuadrado. Seguir adelante y crear un GameObject vacío, y restablecer la transformación de componentes después de la creación. Cambiar el nombre de esta GameObject a “SquareObstacle.” Ahora debemos crear el sprite cuadrado vamos a utilizar para un obstáculo para el jugador que se deben evitar durante el juego. Haz clic derecho en los Sprites carpeta y elija: Crear> Sprites> Plaza .


    Hacer la plaza de un niño de la “SquareObstacle.” Añadir un componente 2D cuadro Colisionador de la plaza. Establecer la casilla de verificación está disparador true en la plaza.


    Crear una nueva etiqueta llamada “Obstáculo” y la etiqueta de la plaza como “obstáculos”.



    El siguiente paso es la adición de la función de disparo En el guión jugador para que podamos detectar cuando el jugador choca con este obstáculo cuadrado. Vaya por delante y abrir el guión jugador, vamos a añadir la función OnTriggerEnter2D a la secuencia de comandos del jugador para la detección de colisiones. Puede añadir esta función en la función PlayerInput () ya en el guión. Vamos a establecer una declaración de depuración, así dentro de esta función para que podamos probar la detección de colisiones y asegurarse de que el jugador está de hecho entrando en el gatillo del obstáculo Square. Es una práctica común para hacer sus instrucciones de depuración tienen sentido para que cuando se está probando sus proyectos y la depuración de múltiples aspectos de un proyecto se puede deducir fácilmente lo que está exactamente pasando, esto también ayuda a otros a trabajar en su proyecto también, si así sucede que está trabajando en un proyecto con varios miembros del equipo. Así, por esta declaración de depuración vamos a poner simplemente “He chocado con la plaza.”
    OnTriggerEnter2D private void (Collider2D otra) {debug.log ( «He chocado con la plaza!»); } 12345privatevoidOnTriggerEnter2D (Collider2D otra) {debug.log ( «He chocado con la plaza!»);}

    Una vez que añadir esta declaración función y depuración, asegúrese de guardar el guión y se puede volver a entrar en el Editor de la Unidad y pulsa el botón Reproducir para probar esto. Si ves que la declaración de depuración está disparando en la consola entonces nuestra función está funcionando y detección de colisiones también está trabajando correctamente.

    Juego Gestor de Creación y configuración

    Crear otra GameObject vacío y añadirlo a la escena, restablezca la transformación de componente y el nombre de “Juego Manager.” Crear y añadir un nuevo guión llamado “GameManager” al objeto del juego Manager, mover este script en la carpeta scripts en el proyecto por lo que mantenemos nuestro proyecto organizado. Abra la secuencia de comandos del jugador hacia arriba, tenemos que conseguir referencia a nuestro script GameManager en el guión jugador. Crear una variable GameManager y el nombre gameManagerObject. Obtener referencia al objeto dentro de la función despierto, excepto el guión.
    GameManager gameManagerObject; void Awake () {PlayerRigi = getComponent (); gameManagerObject = GameObject.Find ( «Juego Manager») getComponent (.); } 1234567GameManager gameManagerObject; voidAwake () {PlayerRigi = getComponent (); gameManagerObject = GameObject.Find ( «Juego Manager») getComponent ();.}

    Abrir el guión GameManager y tenemos que crear una función pública “GameOver” en este guión. Esta función tiene que ser tan público que podemos acceder a él desde otros scripts. Añadir una declaración de depuración para esta función y poner “Juego encima!” Guardar la secuencia de comandos.
    pública GameOver void () {debug.log ( «Juego encima!»); } 1234publicvoidGameOver () {debug.log ( «Juego encima!»);}

    Crea una función PlayerDeath privado en el guión jugador. Llame a la función GameOver en la función PlayerDeath. Entonces estaremos llamando a la función PlayerDeath dentro de la función OnTriggerEnter2D; esencialmente lo que va a ocurrir es que cada vez que nuestros choca jugador GameObject con un obstáculo esto hará que la función GameOver al fuego.
    OnTriggerEnter2D private void (Collider2D otra) {PlayerDeath (); } 12345privatevoidOnTriggerEnter2D (Collider2D otra) {PlayerDeath ();} void PlayerDeath () {gameManagerObject.GameOver (); } 12345voidPlayerDeath () {gameManagerObject.GameOver ();}

    También puede eliminar ahora la declaración de depuración “He chocado con la plaza” de la función OnTriggerEnter2D si te gusta: Esto va a liberar los mensajes de la consola, por lo que no quede demasiado llena cuando estamos probando nuevas instrucciones de depuración, y puesto que sabemos que la detección de colisiones está funcionando y hemos añadido el “Juego encima!” instrucciones de depuración de la función Juego encima es innecesario para mantenerla.

    Guardar la secuencia de comandos y poner a prueba los cambios en el guión en el Editor de la Unidad de Juego golpear en el Editor de la Unidad; asegúrese de que la declaración de depuración en la función GameOver está disparando en la consola.


    Ajuste la escala del objeto obstáculo juego del cuadrado mediante el aumento de los valores X e Y a 3. Guardar la escena y del proyecto.


    Reproductor de muerte Efecto Creación e Implementación

    Crea una GameObject vacío cambie su nombre por “PlayerDeathEffect.” Restablecer la transformada componente en el inspector. Haga clic en el objeto PlayerDeathEffect en la jerarquía y añadir un sistema de partículas a la misma.


    El sistema de partículas debería ser ahora un elemento secundario del objeto PlayerDeathEffect juego. Ahora tenemos que ajustar algunos aspectos del sistema de partículas que acaba de crear en el objeto del juego PlayerDeathEffect. Cambiar el material en el componente Procesador de Sprites predeterminado.


    Ahora en el componente de la forma del sistema de partículas que lo cambiará a Círculo. Cambiar distancia a 0.0001 y el radio de espesor a 0.


    cambiar el tamaño de inicio a 0,1. Cambiar el curso de la vida de inicio a 1. Modificar la velocidad de arranque a aleatorio entre dos constantes, y hacer que estos valores 0 y 50.

    Ahora comprobar el tamaño con el cuadro de por vida en el sistema de partículas. Haga clic en el botón Abrir Editor en el componente de sistemas de partículas en la ventana de inspección. Verá otra ventana emergente:


    No dude en para ajustar el tamaño de la ventana a lo que te hace cómodo para trabajar dentro. Ahora asegúrese de seleccionar el tamaño de la porción del tamaño con el componente de por vida en el propio efecto de partículas.


    Vamos a seleccionar la séptima opción en la parte inferior de la ventana del lado izquierdo.


    Compruebe el límite de velocidad durante la vida útil y ajustar el Dampen a 0,27.


    A continuación, ajuste la Tasa a lo largo del tiempo 500 en el parámetro de emisión.


    cambiar la duración de 0.05 y asegúrese de bucle no está marcada en el componente de sistemas de partículas. Ajuste el tamaño de inicio a aleatorio entre dos constantes y hacer que el primer valor de 0,01 y el segundo valor de 0,1, y cambiar el inicio del color al rojo.


    Es necesario crear una casa prefabricada de la PlayerDeathEffect seleccionando el objeto y el juego de arrastrar y soltar en el prefabricada carpeta que hemos creado al principio de este tutorial. Guardar la escena y de proyectos.


    instanciación del PlayerDeathEffect

    Abre el guión jugador, agregar una variable GameObject pública y el nombre de “deathEffectObject.” Vamos a crear una instancia del PlayerDeathEffect modo que cuando el jugador muere el sistema de partículas que hemos añadido jugadas tras la colisión de un obstáculo durante el juego, pero también aparece visualmente en el punto de colisión, podemos utilizar el parámetro Quaternion.idenity para hacer esto . También tenemos que asegurarnos de que destruir el efecto después de unos 0,5 segundos para que el efecto se retira de la escena y la jerarquía de modo que no consume nuestros recursos y ralentizar el juego cualquiera. Vamos a crear instancias de la PlayerDeathEffect dentro de la función PlayerDeath en el guión jugador.
    GameObject deathEffectObject pública; void PlayerDeath () {Destruir (Instantiate (deathEffectObject, transform.position, Quaternion.identity), 0.5f); gameManagerObject.GameOver (); } 12345678publicGameObject deathEffectObject; voidPlayerDeath () {Destruir (Instantiate (deathEffectObject, transform.position, Quaternion.identity), 0.5f); gameManagerObject.GameOver ();}

    Guardar la secuencia de comandos y volver al Editor de la Unidad. Aquí tenemos que seleccionar el GameObject jugador en la jerarquía y seleccionar el PlayerDeathEffect bajo el guión jugador donde ahora tenemos el punto abierta desde que hicimos la variable pública en el guión.

    Una vez que haya agregado el PlayerDeathEffect prefabricada al componente PlayerDeathEffect del guión jugador de la ventana de inspección a continuación, puede eliminar el objeto del juego PlayerDeathEffect de la escena, ya que estamos ahora una instancia del sistema de partículas tras la colisión w / nuestra obstáculo cuadrado. Guardar la escena y el proyecto y pulsa el botón de reproducción, ahora debería ver el juego de efectos de partículas tras la colisión con el obstáculo cuadrado.


    manejo del reproductor de muerte y detención del movimiento del jugador

    Abrir el guión jugador, añadir una nueva función llamada “StopPlayerMovement” esta función se va a detener por completo el objeto del jugador del juego se mueva una vez que la función se llama. Llamar a esta función dentro de la función PlayerDeath, pero hay que asegurarse de que la función StopPlayerMovement se llama después de que el efecto de partículas se juega tras la colisión, pero también tenemos que ejecutar la función StopPlayerMovement antes de la función GameOver se llama. Podemos hacer esto llamando a la función StopPlayerMovement entre las otras dos funciones en la función PlayerDeath.
    void PlayerDeath () {Destruir (Instantiate (deathEffectObject, transform.position, Quaternion.identity), 0.5f); StopPlayerMovement (); gameManagerObject.GameOver (); } Void StopPlayerMovement () {PlayerRigi.velocity = new Vector2 (0, 0); PlayerRigi.isKinematic = true; } 1234567891011voidPlayerDeath () {Destruye (Instantiate (deathEffectObject, transform.position, Quaternion.identity), 0.5f); StopPlayerMovement (); gameManagerObject.GameOver ();} voidStopPlayerMovement () {PlayerRigi.velocity = newVector2 (0,0); PlayerRigi.isKinematic = true;}

    lo que estamos haciendo en la función StopPlayerMovement está fijando la velocidad del objeto jugador del juego a 0, y entonces estamos estableciendo el cuerpo rígido que se adjunta a nuestro jugador de cinemática. Un cuerpo rígido cinemática no se ve afectado por la gravedad y las fuerzas, al igual que el cuerpo rígido dinámico, que es lo que se fijó inicialmente para. Esencialmente estas dos líneas de código en la función StopPlayerMovemnt nos están dando un control completo sobre detener el jugador se mueva por completo una vez que choca con un obstáculo.

    Ahora debemos crear un bool privada llamada “playerIsDead y establecer el valor inicial en false. Vamos a crear este bool true dentro de la función PlayerDeath.
    bool playerIsDead = false; void PlayerDeath () {playerIsDead = true; Destruye (Instantiate (deathEffectObject, transform.position, Quaternion.identity), 0.5f); StopPlayerMovement (); gameManagerObject.GameOver (); 123456789boolplayerIsDead} = false; voidPlayerDeath () {playerIsDead = true; Destruir (Instantiate (deathEffectObject, transform.position, Quaternion.identity), 0.5f); StopPlayerMovement (); gameManagerObject.GameOver ();}

    También necesitan crear una sentencia if para comprobar si el bool playerIsDead es igual a verdadera en la función FixedUpdate, y luego regresar.
    FixedUpdate private void () {if (playerIsDead == true) return; PlayerInput (); PlayerMovement (); } 1234567privatevoidFixedUpdate () {if (playerIsDead == true) return; PlayerInput (); PlayerMovement ();}

    Vaya por delante y guardar el guión y probar los cambios dentro del editor de Unity. El objeto jugador de juego debe llegar a una parada completa y permanecer derecho donde se detuvo cuando choca con el obstáculo cuadrado.


    Fuente de activo creador y Visualización de la partitura al reproductor

    Ahora es el momento de configurar el tipo de letra que vamos a utilizar con TextMeshPro en el creador de fuentes de activos que ahora viene con la unidad. Dentro del editor de Unity clic en ventana> TextMeshPro> Fuente Asset Creator.


    Ahora debería ver esta ventana emergente:


    En el parámetro Origen de fuente, haga clic en el dial radial y elegir Oswald-Bold. Ahora haga clic en Generar fuentes Atlas. Esto tomará unos segundos y ahora debería ver esto en la ventana:


    Haga clic en Guardar y asegúrese de que este se guarda en Activos> TextMeshPro> Ejemplos y extras> Fuentes. Ahora ya puede cerrar la ventana Fuente Asset Creator.

    Configuración de una lona de interfaz de usuario y el panel sobre juego

    añadir un panel de interfaz de usuario a la escena. Usted notará una vez que se agrega esto a la escena se verá que ahora tenemos un elemento canvas y luego el panel es un niño de ese objeto juego y ahora hay un objeto EventSystem en la jerarquía.

    Cambiar nombre del objeto del panel de “GameOverPanel” En el aspecto de la ventana Inspector para el componente de imagen (script) en el objeto GameOverPanel, y cambiar la imagen de la fuente en Ninguno. Ajustar el color a negro y cambiar el valor Alfa 255.


    Añadir un botón a la GameOverPanel como un niño a ese objeto. Vaya por delante y eliminar la parte de texto en el objeto de botón, no vamos a necesitar esto. Ajustar la posición del valor Y objeto Button a -320, y ajustar la altura a 105.


    Añadir TextMeshPro texto al objeto de botón de juego como un niño en la jerarquía.


    Añadir la palabra “Reiniciar” para el campo de cuadro de entrada de texto en la ventana de inspección. Cambiar el tamaño de fuente a 40. Tras confirmar que la alineación se ajusta en Central y Oriente. Cambiar el color a negro.


    Se puede cambiar el nombre del botón para “RestartButton” ahora en la jerarquía.

    Esto es ahora un buen lugar para guardar la escena y del proyecto. En la parte 3, vamos a la conclusión de la serie por el aprendizaje de cómo hacer un seguimiento de la puntuación, las recolecciones de elementos, y el desove de obstáculos sin fin.

    Mensajes relacionados

Deja una respuesta

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