Tabla de contenidos

Introducción

Benjamin Franklin dijo una vez, “los mejores juegos de video que he hecho nunca fueron aquellos en los que persistió y no se rindió.” * Sea o no Benjamin Franklin llegó a decir esto, él tiene razón. Bienvenido a la Parte 2, y felicitaciones sobre la continuación de esta serie de tutoriales sobre cómo crear un exitoso juego en 3D en la Unidad! En este tutorial, vamos a estar atando todo junto en un partido completo. Vamos a utilizar la secuencias de comandos Render Pipeline añadir un sombreado para nuestro vidrio y nuestra pelota. Y vamos a establecer un sistema de interfaz de usuario para el inicio y el final del juego. Con eso runthrough, vamos a empezar!

Salida Parte 1 si no lo ha hecho

Este tutorial es parte de una serie. Se puede extraer de la parte 1 aquí. Aquí es donde también obtendrá el enlace a la archivos de código fuente , ya que no tendrá que descargar otras adicionales de esta parte en adelante.

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

    Creación de los shaders: Vidrio

    Antes de empezar con el SRP muy impresionante (scripts Render Pipeline), tenemos que la primera importación del paquete. Ir a la ventana -> Paquetes,


    … y descarga (o actualizar) el peso ligero Render Pipeline.


    Una vez que esté terminada la importación, vaya a su carpeta de Materiales y haga clic derecho. Ir a Crear -> Shader -.> PBR Gráfico


    Lo llaman “GlassShader” y haga doble clic en él para editarlo.


    Se puede atracar esta ventana, donde quiera que te gusta, ya sea que guardo en la ventana del editor o separado por completo.

    vidrio Hablemos, ¿cómo hacemos para hacer un shader de vidrio? Esta es, probablemente, muy simplificada, pero para nuestros intentos y propósitos, el vidrio tiene un componente transparente y un componente reflexivo. Hay otras cosas como arañazos y manchas que dan un conjunto diferente de apariencia, sino por todo lo que necesitamos saber, el vidrio es reflexivo y transparente. Con esto en mente, podríamos ir para un tipo hiper-realista de vidrio, o podríamos hacer que sea una especie de estilizado. Dado que no tenemos acceso a grandes cantidades de texturas para que se vea hiper-realista, vamos a ir al “estilizada” mirada de cristal. Pero ¿cómo podemos crear un cristal reflectante y transparente? Es muy simple, ir a la ventana de “GlassShader” y cambiar el tipo de sombreado a ser transparente:


    Esto sólo significa que podemos aplicar los valores para el campo Alfa. Haga clic derecho y seleccione “Crear Nodo”.


    Buscar “Fresnel” (pronunciado Frah-Nell),


    crear un nodo “Fresnel Effect” y arrastre la salida en el zócalo “Alpha” en el nodo material.


    ¿Qué hace un nodo de Fresnel? En nuestro caso, hace que los bordes opacos y transparentes el centro, lo cual es perfecto, ya que estamos haciendo un material de vidrio. El truco aquí es encontrar el valor correcto para la toma de corriente en el nodo de Fresnel. Lo que hice fue crear en realidad una propiedad Vector1 llamado “Fresnel de energía” de modo que pueda cambiar este valor en el editor sin tener que acceder al sombreado.


    Si desea, establezca un color para el vidrio


    (hice un azul claro) y después haga clic en “Guardar activos”.


    Crear un nuevo material llamado “GlassMat” y establecer el sombreado para ser nuestro “GlassShader”.


    Ahora es sólo una cuestión de ajustar la “Fresnel de energía” con el fin de obtener el aspecto de su después. Se podría hacer más difícil para los jugadores, haciendo que el vidrio más transparente, o puede ser misericordiosos y que sea un poco más opaca, que todo depende de ti (me gustaría probar y sé propicio).


    Cuando se piensa que ha encontrado el valor correcto, hay que asignarlo a nuestros objetos de vidrio. Esto, me encontré, era un poco difícil. Queremos que los fragmentos de vidrio que tienen el mismo material que el panel de vidrio. La mejor manera de hacer esto es arrastrar cada prefabricada vidrio roto en la jerarquía:


    Grupo seleccionar unos pocos fragmentos y arrastre el material sobre los objetos seleccionados.


    Siga haciendo esto hasta que todo el vidrio (ya sea roto o conjunto) tiene el material de vidrio. Puede ser tedioso por lo que acaba de obtener a través de él lo más rápido posible. Una vez que haya terminado, aplicar los cambios a la casa prefabricada.


    Creación de los shaders: bola de acero

    Si usted pensaba que el shader de vidrio era simple, espera ‘hasta que vea el shader para la bola de acero! Ir a los materiales de la carpeta y crear una nueva PBR gráfico llamado “BallShader”.


    haga doble clic en él y vamos a empezar a hacer este shader! Cambiar el tipo de flujo de trabajo en el nodo base a “metálico”. ¡Eso es! Ahora es sólo una cuestión de cambiar el valor “metálico” para que se vea como una bola de acero brillante. Si desea, también se puede hacer de esto una propiedad float llamado “Metalness” (o alguna otra cosa que no suena tan ridículo) y entonces se podría cambiar su valor en el editor. Es posible ver alrededor de los valores de lisura y la oclusión si su bola todavía no es la manera en que se desea que se vea.


    Una vez, que haya terminado de ajustar esos valores, eso es todo por nuestra shader bola de acero! Crear un nuevo material llamado “BallMat” y asignar nuestra “BallShader” a este nuevo material. Luego arrastramos este material en nuestra prefabricada pelota para ver cómo se ve! ​​


    Si se ve bien, este cambio se aplica a la casa prefabricada.

    Creación de un nivel: Planta

    Ahora que tenemos nuestra configuración shaders, vamos a crear un nivel a otro en estas cosas. En primer lugar, voy a crear un plano de modo que nuestros fragmentos caen y rebotan, dándole un aspecto mucho más realista. Al crear un nivel, de hecho me dieron creativa e hice varios planos diferentes, cada uno con diferentes tamaños. Os animo no sólo crear una superficie plana para toda su nivel, crear varios. Separarlos y el ángulo de ellas si cree que se ve bien. Simplemente ser creativo! En segundo lugar, he asignado un material al plano para que se vea menos como una primitiva 3D y más como una parte real del juego. El material utilizado yo estaba en ExampleAssets -> Materiales. Sólo tiene que elegir uno que crea que puede ir bien con la escena. Aquí está mi resultado final:


    No dude en para hacer que su nivel de largo o más corto.

    Creación de un nivel: Cristales

    Ahora que tenemos una planta, vamos a añadir algo en la parte superior de la misma. Ahora vamos a añadir los bloques de vidrio a nuestra escena. Al hacer esto, tengo un comando que debe seguimiento, Sea creativo! En serio, sólo tiene que ir loco! He encontrado que es mejor es colocar los bloques de vidrio ligeramente por encima del suelo de manera que los fragmentos de vidrio tienen espacio para caer, pero, si se coloca el vidrio para que se coloque por encima ligeramente los motivos, el vidrio va a explotar si se golpea. Con esto en mente, empezar a crear! Aquí está mi nivel de acabado:


    Adición de una interfaz de usuario de la lona: Botón de reinicio

    Si se observa en la secuencia de comandos CameraCharater, hay un campo llamado “botón”.


    Si nos fijamos en el código:
    OnTriggerEnter private void (Colisionador de otra) {if (other.CompareTag ( «cristal»)) {colisión = true; Debug.log ( «chocó contra el vidrio !! Man down !!»); camMoving = false; button.SetActive (true); }} 12345678910privatevoidOnTriggerEnter (Colisionador de otra) {if (other.CompareTag ( «cristal»)) {colisión = true; debug.log ( «chocó contra el vidrio !! Man down !!»); camMoving = false; button.SetActive (verdadero );}}

    verá que este botón se activa cuando la cámara choca con el cristal. Si estaba rascando la cabeza cuando se pone esto en su código Ahora voy a explicar por qué está allí. En el juego original (no ir y descargarlo! Usted está haciendo su propia ahora, así que no es necesario el original), en realidad sólo hay una escena. Esto significa que los controles de interfaz de usuario si el juego está en marcha o parado. Debido a esto, se utiliza un botón para reiniciar la escena para que el jugador no se sacudió de nuevo a la que comienza inmediatamente. Ir a la jerarquía y crear un nuevo botón llamado “Reiniciar”.


    En el guión CameraCharacter notará un método público denominado “Reset”:
    pública void Reset () {SceneManager.LoadScene ( «Escena1»); } 1234publicvoidReset () {SceneManager.LoadScene ( «Escena1»);}

    Este es el método que se llamará cuando apretamos nuestro botón de reinicio. Cambiar el texto en el botón decir “Reiniciar”,


    Crear una nueva acción “clic”, mueve la cámara en el campo, y establecer el llamado método de “Reset”.


    Desactivar el botón, asignarlo al campo adecuado en la cámara:

    … y exitosa obra. Ahora tenemos un botón que se reinicia el juego cuando chocan con un trozo de vidrio!


    Sólo hay una cosa que creo que tenemos que hacer antes de que hayamos terminado con la interfaz de usuario de la lona … ..

    Adición de una interfaz de usuario de la lona: Botón de inicio

    … y que consiste en añadir un botón de inicio! Puede parecer algo trivial, pero da más control al jugador, que, en el caso de nuestro juego, es una cosa buena. Crear un nuevo botón llamado “Inicio” y colocarlo directamente sobre nuestro botón de reinicio.


    Si usted tiene otro vistazo a la secuencia de comandos CameraCharacter:
    pública StartCam void () {camMoving = camMoving!; } 123publicvoidStartCam () {camMoving = camMoving;!}

    Usted verá que hay un método público que establece un valor lógico estático a un valor diferente a lo que era originalmente (utilizando la sintaxis booleana!). Este booleano es falso por defecto:
    camMoving public static bool = false; 1publicstaticboolcamMoving = false;

    También verá que el método de actualización tiene una serie de sentencias lógicas que utilizan esta variable, así:
    // Esto comprueba si hemos chocado si (colisión && camMoving!) {CameraChar.Move (Vector3.forward * * Time.deltaTime velocidad); // Esto es para que el movimiento de la cámara se acelerará la velocidad = Velocidad + incrementFactor; } Else if (colisión || camMoving!) {CameraChar.Move (Vector3.zero); } If (Input.GetMouseButtonDown (0) && camMoving) {GameObject ballRigid; ballRigid = Instantiate (balón, BallInstantiatePoint, transform.rotation) como GameObject; . BallRigid.GetComponent () AddForce (Vector3.forward * ballForce); 123456789101112131415161718} // Esto comprueba si tenemos collidedif (colisión && camMoving!) {CameraChar.Move (Vector3.forward * * Time.deltaTime velocidad); // Esto es para que el movimiento de la cámara acelerará la velocidad UPSPEED = +} elseif incrementFactor; (colisión || camMoving!) {cameraChar.Move (Vector3.zero);} if (Input.GetMouseButtonDown (0) && camMoving) {GameObject ballRigid; ballRigid = Instantiate (bola, BallInstantiatePoint, transform.rotation) asGameObject; ballRigid.GetComponent () AddForce (Vector3.forward * ballForce);.}

    de un vistazo rápido a, siempre que correspondan variables, que no entienden cómo lo estamos utilizando? Tenemos un booleano que es estática (en caso de tener otros scripts que desean detener o iniciar la cámara) que dicta si la cámara está en movimiento o no. Así que cuando empezamos a crear este botón Inicio, todo lo que necesitamos hacer es llamar al método que establece un valor diferente a este booleano. Y sabes qué método que es!
    pública StartCam void () {camMoving = camMoving!; } 123publicvoidStartCam () {camMoving = camMoving;!}

    Ir al botón Inicio y crear un nuevo evento OnClick. Asignar la cámara en el campo y establecer el método llamado a ser “StartCam”. No olvides de cambiar el texto para leer “Inicio”.


    Ahora pulse el juego y vamos a ver lo que parece!


    Funciona, pero los botones son desordenados en nuestra visión del juego. Permanecen activas incluso después de que les hemos presionado. Tengamos los botones RESET START y desactivar a sí mismos siempre que se presionan. Crear un nuevo evento OnClick en cada botón, arrastrar la instancia de cada botón en su respectivo evento OnClick, a continuación, establecer el campo de acción para “GameObject -> setActive”.


    Deje la casilla sin marcar en cada uno y que ahora debe tener una visión de juego limpio.


    Bueno, creo que eso es todo lo que tenemos que hacer para la interfaz de usuario! Obviamente, como es, los botones son muy feo así que por favor que sean más interesantes. Aquí hay otra oportunidad de conseguir! Creativo

    Fijación del cielo

    Nuestro juego está casi completo! Sólo hay una cosa que me parece no como estéticamente agradable y que es el cielo.


    Ahora puede que no le molesta en absoluto, en cuyo caso, basta con dejarlo como está. Sin embargo, creo que sería añadir otro nivel de ambiente si el juego tenía un color o estilo de fondo diferente. En este caso, he encontrado sólo era necesario cambiar el palco por defecto que se puede encontrar en la carpeta de materiales.


    Esta es una buena cosa para recordar ya que se puede obtener gran cantidad de miradas variaron sin tener que crear su propio palco. Me decidí a tener un ir a ajustar estos valores.


    Yo quería un fondo más oscuro, ya que esto crearía un contraste agradable entre el cielo oscuro y la luz de nuestros paneles de vidrio de color. Al final, decidí que estos valores eran el resultado que estaba buscando.


    Para que esto funcione, sin embargo, tenemos que traer a agregar un componente de Skybox a la cámara y coloque el palco acabada en el campo “Skybox personalizado”.


    exitosa obra Vamos a apreciar de nuevo y sólo nuestro juego para todas sus fina estética y mecánica.


    Conclusión

    Felicitaciones por terminar este tutorial, se echa un vistazo a la parte 3 siguiente! En este punto, usted ha aprendido 2 cosas, cómo hacer un juego similar a un juego para móviles populares, y qué hacer si usted no tiene idea de qué tipo de juegos de vídeo para hacer. Es poca cosa haber hecho esto mucho progreso. Espero que hayan disfrutado de esta serie de tutoriales hasta el momento y pareció útil. No tengo nada más que decir excepto:

    Seguir haciendo grandes juegos!
    Nota

    * del editor:. Lamentablemente a partir de este momento, los historiadores no han descubierto ninguna evidencia hasta ahora de que el diseño del juego era parte de su rutina famoso

    Mensajes relacionados

Deja una respuesta

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