Crea un juego de carreras en 45 minutos con Unity3D y C#: de principiante a intermedio | Domen Rajterič | Skillshare

Velocidad de reproducción


1.0x


  • 0.5x
  • 0.75x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Crea un juego de carreras en 45 minutos con Unity3D y C#: de principiante a intermedio

teacher avatar Domen Rajterič, Game Developer

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Lecciones en esta clase

    • 1.

      Introducción

      1:10

    • 2.

      Jugador

      5:45

    • 3.

      Controller

      7:29

    • 4.

      Seguir y mini salto de cámara

      4:31

    • 5.

      Menú principal simple

      7:18

    • 6.

      ¡Rata de Race

      4:28

    • 7.

      Inicio, acabado y Timer

      13:06

    • 8.

      Proyecto de clase

      1:14

  • --
  • Nivel principiante
  • Nivel intermedio
  • Nivel avanzado
  • Todos los niveles

Generado por la comunidad

El nivel se determina según la opinión de la mayoría de los estudiantes que han dejado reseñas en esta clase. La recomendación del profesor o de la profesora se muestra hasta que se recopilen al menos 5 reseñas de estudiantes.

477

Estudiantes

2

Proyectos

Acerca de esta clase

¿Quieres desarrollar el juego de carreras pero no sabes cómo?

Hola, mi nombre es Domen y hoy descubriremos a crear juegos de carreras con Unity3D y C#.

Aprenderemos a desarrollar el controlador de auto y cómo implementarlo en un juego real.

Los juegos de carreras son super así que ¿por qué no desarrollaremos uno?

Esta clase cubrirá 3 temas principales:

1. Prototype código y configuración de controlador del automóvil

2. Menú principal: interfaz de usuario básica con el fondo y los botones, y

3. Juego: implementar el controlador de automóviles en un juego real.

Aprenderemos a configurar el controlador de automóviles en Unity, a escribir código para ello y a añadir la interfaz de usuario al juego.

Con este conocimiento podrás empezar a desarrollar tus propios juegos.

También puedes unirse a mi servidor discord para conectar con los otros estudiantes y compartir tu trabajo:

Acompaña a nuestro servidor discord para compartir tu trabajo y conectar con la comunidad.

Así que, si estás dispuesto a aprender los fundamentos de la unidad y comenzar a empezar a desarrollo de desarrollo de juegos, bienvenido en mi clase. Si te gusta esta clase, deja una opinión, me ayudará y se aprecia

Descarga los recursos de la clase:

> Vehículos

> pistas

Software necesario para participar en esta clase: Unity 3D y visual, ambos se necesita participar en la clase.

Conoce a tu profesor(a)

Teacher Profile Image

Domen Rajterič

Game Developer

Profesor(a)
Level: Beginner

Valoración de la clase

¿Se cumplieron las expectativas?
    ¡Superadas!
  • 0%
  • 0%
  • Un poco
  • 0%
  • No realmente
  • 0%

¿Por qué unirse a Skillshare?

Mira las galardonadas Skillshare Originals

Cada clase tiene lecciones cortas y proyectos prácticos

Tu membresía apoya a los profesores de Skillshare

Aprende desde cualquier lugar

Ve clases sobre la marcha con la aplicación de Skillshare. Progresa en línea o descarga las clases para verlas en el avión, el metro o donde sea que aprendas mejor.

Transcripciones

1. Introducción: ¿ Quieres desarrollar juego de carreras con Unity? Hola, me llamo Donald, y hoy descubriremos cómo crear juegos de carreras con Unity 3D. Realmente aprendemos a desarrollar controlador de auto y a implementarlo en un juego real. Los juegos de carreras son súper populares. Entonces, ¿por qué no haríamos elocuentes? En esta clase, vamos a cubrir tres temas principales. Realmente aprende a configurar auto controlando la humanidad, a escribir código para ello, y a agregar interfaz de usuario al juego. Con este conocimiento, podrás empezar a desarrollar tus propios juegos. También puedes unirte a mi servidor de Discord para conectarte con otros alumnos y compartir tu trabajo. Entonces si estás dispuesto a aprender los fundamentos de Unity e iniciar viaje de desarrollo de juegos. Bienvenida en mi clase. 2. Jugador: Hola y bienvenidos En mi clase. hoy estamos haciendo unidad de juego de carreras. Vamos a crear nuevo proyecto y nombrarlo algo así como un juego de carreras. Si bien unidad está preparando un nuevo proyecto, me gustaría mostrarles lo que estamos haciendo hoy en esta clase, desarrollaremos controlador de auto sencillo desde cero, y lo usaremos en juego real. Se puede descargar vehículo y pista desde Unity Asset Store. Proporcionaré enlaces en la descripción. El objetivo de este sencillo juego será completar la pista lo más rápido posible. También crearemos un temporizador para poder competir con nuestros amigos y familiares. Posteriormente, puedes actualizar el mando de descartar y usarlo en tu juego ya que te ofrece mucha libertad a la hora de modificar. Entonces proyecto israelí, y primero, me gustaría reorganizar las ventanas. Prefiero una columna que muestre la ventana del proyecto. Y además no necesitamos ventana de consola ahora mismo. Todo lo que tenemos al inicio de la escena muestral, nuestra cámara principal y luz direccional. Posteriormente, crearemos más desde 104 Main Menu y así sucesivamente. Añadamos nuevo objeto 3D al cubo de escena y lo nombremos tierra. Nuestro vehículo conducirá sobre este cubo, por lo que necesitamos escalarlo. Pondré X y Z en 256. Estaremos utilizando este objeto terrestre para desarrollar un prototipo de nuestro controlador de auto. Para que funcione, necesitamos crear nueva capa de suelo y vamos a añadir nuestro cubo a esa capa. Puedes usar cualquier ranura vacía. Voy a utilizar Ranura 8. Entonces tenemos que volver sobre el objeto tierra y establecer su capa a tierra. Ahora estamos listos para agregar el jugador, crear nuevo objeto vacío y nombrarlo jugador. Para los gráficos, revisitaremos la tienda Unity Asset, donde podrás encontrar miles de activos gratuitos y premium. Estamos buscando un vehículo de tratado que se pueda utilizar en R Nuevamente, puedes usar prácticamente cualquier vacuola ácida como. Pero si quieres seguir este tutorial y hacer exactamente el mismo juego, proporcionaré enlaces a los ácidos que estoy usando. Descargaré este pack gratis porque tiene un montón de autos diferentes y personalizables. Una vez que descargues los activos, aún necesitamos importarlos en el propio proyecto. Para ello, necesitamos abrir Package Manager, que se puede encontrar bajo Window Package Manager. Después abre mis activos y verás todos los activos que has descargado de Unity Asset Store. Encuentra el paquete con vehículos e importarlo en el proyecto. Después de eso, podemos encontrarlos, utilizar los gráficos del paquete importado, abrirlos, encontrar carpeta llamada ejemplos, y utilizar uno de los vehículos de la carpeta. Voy a usar bundle, arrastrarlo a la escena y colocarlo dentro del objeto jugador. Como pueden ver, necesito reposicionar a mi jugador. Por lo que seleccionaré el objeto jugador y ajustaré la posición del mismo. Por lo que tenemos gráficos, y ahora es el momento de configurar nuestro jugador, seleccionar el objeto de jugador y agregarle un nuevo elemento 3D. Esta vez, usaremos esfera. De hecho, nuestro controlador de auto estará moviendo esta esfera alrededor y el cuerpo la seguirá. Aumentaré el radio de colisionador de esfera a uno. Por lo que podemos detectar colisiones con otros objetos. También podemos desactivar Mesh Collider para hacer invisible nuestra esfera. Para mover esfera y jugador alrededor, necesitamos adjuntar un cuerpo rígido sobre ella, lo que le da a los objetos algunas habilidades físicas. Voy a cambiar la masa a 70, drag y angular Jack a cuatro. Establecer la interpolación para extrapolar. Esto hará que el movimiento de objetos enteros del jugador mortero, y cambiará la detección de colisiones a continua. Tenemos que añadir un objeto vacío más al jugador. Estaremos usando este objeto para detectar en qué capa están conduciendo realmente. Yo lo nombraré cheque de tierra. Juega este objeto en la mitad inferior del jugador. Y más adelante, si tienes algún problema con la detección de atípicos, intenta reposicionar este objeto ya que puede que no se coloque correctamente en este momento. Realmente depende de tus gráficos y tamaño de esfera. Para mí, esto debería funcionar. Espero. Por último, podemos comenzar a codificar, seleccionar a nuestro reproductor y agregar nuevo script llamado controlador de coche, y hacer doble clic en nuevo componente para abrir el script en Visual Studio, escribiremos código en el siguiente video. Y después de eso, tendrás un controlador de auto totalmente funcionando que se puede utilizar en un juego real. Entonces nos vemos en el siguiente video. 3. Controller: Estamos de vuelta y es hora de empezar a codificar nuestro controlador de auto. En el script que hemos creado anteriormente, necesitamos declarar algunas variables. En primer lugar será cuerpo rígido público. Voy a nombrar la mía RB. Esto conectará a un cuerpo rígido de la esfera con el guión. Entonces necesitamos un montón de variables flotantes públicas hacia adelante y la velocidad inversa. Pondré valores en 105. Y por supuesto puedes cambiar estos valores en cualquier momento que quieras. El próximo término, hebra, o qué tan duro puede girar nuestro auto en las esquinas. La fuerza de gravedad es bastante autoexplicativa. Radio de Jack, y el arrastre afectará a nuestro auto dependiendo de la superficie. Y por último, max girará para rotar las ruedas delanteras de nuestro auto. Después de eso, Vamos a declarar a flotadores privados, entrada de velocidad y entrada de giro. Almacenaremos la entrada del usuario en esas variables y otra variable privada. Esta vez necesitamos Boolean para comprobar si el rival está conectado a tierra o en medio del salto, entonces necesitamos decirle a nuestro guión qué capa en el juego representa terreno. Por eso estamos haciendo públicos estos wearable. Por último, tres variables de transformación pública. Masa, revisa la izquierda, la rueda delantera, y escribe la rueda delantera para conectar. Somos clip art con descript. Y eso es todo para las variables. Podemos pasar al método de inicio, donde solo necesitamos una línea de código por ahora, estableceremos el padre de nuestro cuerpo rígido a anotar, que es la segunda parte de hacer más suave el movimiento de todo el objeto jugador antes ya hemos establecido la interpolación para extrapolar. Ahora, pasemos a la función de actualización. Ten mucho más de codificación que hacer aquí. En primer lugar, con cada actualización, restableceremos las entradas de velocidad a 0. Y luego comprobaremos si el usuario está presionando alguno de los botones de arriba y abajo. En el primer comunicado if, estamos aplicando velocidad de avance multiplicada por 1000. Eso es en el caso cuando el usuario quiere ir hacia adelante. Si el usuario está presionando el botón hacia abajo, necesitamos volver a aplicar una velocidad inversa, multiplicada por 1000. Como dije antes, siempre puedes cambiar estos valores a tu gusto. Por lo que tenemos entrada de saliva, pero lo aplicaremos al vehículo más adelante en otra función. Ahora, hagamos que nuestro vehículo sea capaz de girar la entrada real del usuario de la tienda desde los botones izquierdo y derecho para girar la variable de entrada. Y de inmediato podemos rotar nuestra reocurrencia. Pero quiero asegurarme de que nos pongamos a tierra de Aquiles cuando estamos tratando de rotarlo. Por eso vamos a usar otra declaración if, comprobando si estamos castigados. Y si efectivamente estamos conectados a tierra, podemos irritar el auto. Tenemos que hacer uso de nuestra estera aquí. Como pueden ver, estoy multiplicando todo con entrada vertical aquí. Se puede preguntar, ¿por qué no es la entrada vertical para la velocidad? ¿ Y tienes razón? Pero queremos asegurarnos de que estamos curl está en irritar cuando estamos avanzando o hacia atrás y no cuando estamos parados. Y esa es la solución más fácil. Girar las ruedas es bastante similar, pero en lugar de rotación, estamos modificando la Rotación Local. En primer lugar, giraremos la rueda delantera izquierda. Y luego podemos copiar esta línea y para reemplazar la rueda delantera izquierda por la rueda delantera derecha. Por último, estamos estableciendo la posición de jugador para que sea igual a la posición de cuerpo rígido. Eso es todo para la función de actualización, todo el resto se escribirá en su función de actualización fija. ¿ Cuál es la diferencia entre las funciones de actualización y de actualización fija? La función de actualización se llama a una vez por fotograma y actualización fija se llama exactamente 50 veces por segundo. Por lo que cuando queremos aplicar alguna física pesada a los objetos, se recomienda usar actualización fija. En primer lugar, declararemos un h02 comestible refundido llamado calor. En esta variable, podemos almacenar información sobre objetos que colisionamos contigo. Ya veremos por qué esto es útil. Entonces dispararemos array invisible desde nuestros terrenos, comprobaremos en dirección descendente. Y si golpeas algo, almacenaremos información sobre este objeto en wearables térmicos. Tenemos que decir hasta dónde queremos que llegue nuestra tarifa. Y exactamente para eso, tenemos variable de radio de comprobación. Y por último, necesitamos especificar para qué capa estamos buscando. Entonces, en resumen, si golpeamos a jugador terrestre está conectado a tierra, tendremos nuestro valor de verdad. Si no está a tierra será para nosotros. También quiero que mi vehículo tenga la misma rotación que capa de suelo debajo del vehículo. Y ahí es donde podemos hacer uso del calor dondequiera que vamos a establecer la rotación de jugador para que sea igual que la rotación de capa de suelo. Entonces con la última declaración if, comprobaremos si estamos castigadas. En caso afirmativo, y si estamos tratando de aplicar la velocidad hacia adelante o hacia atrás, finalmente podemos hacer uso de la entrada de saliva desde la función de actualización. Si no estás conectado a tierra, entonces necesitamos agregar gravedad al trabajador para arrastrarlo hacia abajo. Y eso es finalmente todo para script de controlador de carrito. De verdad espero que sigas conmigo porque todo lo duro está hecho. Y ahora es el momento de ver controlador de carrito en acción. Asegúrate de guardar el guión y volver a Unity. En la unidad, aún necesitamos conectar el guión con algunos componentes del automóvil. En primer lugar, arrastre en la esfera en primera ranura vacía, donde necesitamos hacer referencia al cuerpo rígido. Entonces necesitamos decir qué capa representa tierra. Y por esa razón, hemos creado capa de suelo antes. A continuación, arrastrando el gato de tierra. Y finalmente conecta las ruedas delanteras con el guión. Encuentra qué liberación frontal izquierda y cuál es frontal derecha. Después arrástrelos en las últimas ranuras vacías. Y eso es todo. Controlador de carrito ahora debería funcionar. Podemos por supuesto, probarlo. Verás que la cámara actualmente no está siguiendo al jugador, y eso lo arreglaremos pronto. Pero los controladores parecen estar funcionando y las ruedas también están girando, como se puede ver. Entonces el controlador está listo si tienes algún problema, intenta volver a ver al lector o envíame una pregunta. En el siguiente video, haremos una cámara siguió al jugador. Entonces nos vemos. 4. Seguir y mini salto de cámara: Bienvenido de nuevo. Es hora de descubrir cómo hacer que la cámara siga al jugador. En este momento, la cámara principal está fija en un solo lugar. Pero quería seguir la acuarela cuando estamos conduciendo. Y eso es realmente fácil de hacer. Usaremos paquete incorporado llamado Máquina de cine. Nuevamente, necesitamos abrir Gestor de Paquetes. Lo encontrarás bajo Gestor de paquetes de ventanas. Después muestra todos los paquetes en Unity Registry y busca máquina de cine. Haz clic en Instalar y espera hasta que los paquetes estén listos. Después de eso, encontrarás hoja de cine en la barra de herramientas superior. Seleccionar primera opción, que es crear cámara virtual. Esta nueva cámara virtual tomará instrucciones sobre qué seguir y cómo seguirla. Entonces finalmente, su objeto de cámara en la jerarquía. Voy a renombrar la mía a cámara virtual. Entonces necesitamos especificar qué objeto queremos seguir con la cámara. Para ello, basta con arrastrar el objeto jugador a dos ranuras vacías donde podemos decir qué objeto queremos seguir y cuáles son objeto que queremos mirar. Después de eso, tuvimos muchas opciones para modificar la cámara. Cambiaremos ligeramente el punto de vista para tener una mejor mirada en el auto y camión. Ir debajo del cuerpo y ajustar seguir desplazamiento. Tendrás que jugar con dos valores para encontrar la mejor vista para tu juego. Creo que para mí, ¿Por qué puede estar entre 34 y z alrededor de presa o 12? Y eso es todo para la cámara. Ahora, ve y pruébalo. Como pueden ver, mi cámara está siguiendo al jugador y finalmente puedo conducir alrededor de estos aburridos cubo. Pero pronto tendremos una carrera de tractor adecuada, no te preocupes. También puedes ver que el movimiento no es tan suave como queremos que sea. Por suerte, hay una solución fácil a ese problema. En ventana de proyecto. Crea nuevo material de física, y nombra como quieras. Simplemente lo dejaré tal como está. A continuación, ajuste la fricción a 0. Y ahora podemos aplicar este material a Colisionador de Caja de objeto terrestre. Con ese centavo, el movimiento del auto debe ser suave. Probado. Y el contenedor de autos wallah funciona perfectamente. Tenemos movimiento de auto suave y finalmente podemos usarlo en vía férrea. Pero antes de continuar, me gustaría probar una característica más en este controlador de auto. Si recuerdas, nuestro controlador tiene la capacidad de ajustar el ángulo del vehículo al ángulo de la superficie. Entonces vamos a añadir mini saltó al juego para averiguar si funciona. Podemos usar cubo 3D. Otra vez. Voy a renombrar el mío para saltar. Entonces necesitamos escalarlo. Pondré X y Z en 10. También necesitamos modificar la rotación extra, y por supuesto, necesitamos ajustar la posición. Y así, tenemos un salto probado y parece que todo funciona bien. Ahora, eliminaré este objeto de salto y haré otra corrida por el extremo más grande con material personalizado. Por lo que será más visible. Simplemente crea nuevo material, establece color personalizado y aplica al salto. Ya verás que me olvidé de establecer capa del objeto de salto para que se muele. Entonces por eso estoy perdiendo velocidad en el salto. Simplemente establece capa de los objetos chatarra para que se muelen y todo funcionará perfectamente. Por último, tenemos listo controlador de auto totalmente funcionando, y es momento de usarlo en un juego real. Y eso es exactamente lo que estaremos haciendo en el próximo video. Entonces nos vemos. 5. Menú principal simple: Parte importante de cualquier juego es el menú principal, y te mostraré cómo hacer uno. Por supuesto, este menú será muy sencillo con sólo dos botones. Pero después de ese capítulo, también podrás crear menús más complejos. Entonces, pongámonos a trabajar. Ahora mismo. Estamos en defecto parecía también llamado escena de muestra para el menú principal. Gran nueva ventana de proyecto senior y nombrelo manual. Haga doble clic sobre él. Y podemos ver nueva escena vacía, al igual que antes. Cambia la vista a 2D porque el menú será bidimensional y podemos empezar a agregar elementos a la pantalla. Encontrarás en elementos innecesarios bajo Interfaz de usuario o interfaz de usuario corta. En primer lugar, tenemos que añadir Canvas, que servirá de base para otros elementos como el fondo y los botones. Puedes renombrarlo o simplemente dejarlo como lienzo. Realmente no importa. Siguiente elemento, que vamos a añadir en Canvas es imagen. Este será nuestro trasfondo. Puedes ajustar el color del fondo a cualquier color que quieras. Para mí, este gris oscuro hará el trabajo. También necesitamos estirar nuestra imagen para cubrir toda la pantalla. Eso es por el fondo. Por supuesto, puedes añadir tu propia imagen personalizada para el fondo o jugar con colores. Ahora, necesitamos algunos botones. De nuevo, ve debajo de la interfaz de usuario y encuentra el elemento llamado botón. Mi menú tendrá dos botones, play y exit. Este será mi botón Play. Yo quiero quitar imagen fuente, pero no es necesario. Puedes dejarlo si eres así. También me gustaría tener diferente color resaltado para cuando el usuario pasa sobre el botón con el mouse. Vamos con amenaza y dicho navegación del botón para no presionar Play. Y veamos si el botón se pone rojo cuando vamos nuestro RET Mars. Y efectivamente lo hace. Genial. Ahora mismo, este botón es un poco pequeño y quiero redimensionarlo. Vamos a tuitear a 200 o 300 y altura 200. De acuerdo, todavía necesitamos cambiar el texto en la parte inferior. Si se extiende el botón, se puede ver que el texto es elemento separado. Y si hacemos click en él, somos capaces de modificar todo desde el color hasta el tamaño y la fuente. Este botón mostrará texto simple diciendo play. El estilo de fuente será calvo y tamaño de fuente, digamos 50. Quiero tener alineación central en ambos ejes y el color del texto será igual que el color del fondo. Para obtener el segundo botón, simplemente podemos duplicar el botón Reproducir, hacer clic derecho y seleccionar Duplicar o pulsar Comando Plus D en el teclado. A continuación, establece la posición del segundo botón. Por supuesto, necesitamos cambiarle el nombre y necesitamos cambiar el texto para salir o salir. De esa manera, tenemos dos botones y estamos listos para agregarles funcionalidad, lo que significa que estaremos codificando. Otra vez. Vamos a crear un nuevo guión llamado Menu Manager. Podemos crear nuevo objeto vacío, que servirá como gestor de menús. O también puede adjuntar el script a cualquier objeto de la jerarquía. Prefiero primera opción. Una vez que tengamos el script de Menu Manager, podemos empezar a codificar. Siempre que queremos trabajar con escenas, necesitamos importar Unity engine dot sin management. Esto nos permite cargar dos parecidos diferentes del guión. Podemos eliminar ambos métodos por defecto porque no los necesitamos en este momento. Entonces vamos a crear nuevo método público llamado Botón de reproducción presionado. Tiene que ser público para que luego podamos usarlo dentro del Editor de Unity. Cuando el usuario presionará el botón Play, se llamará a este método y se cargará nuestra pantalla de juego o escena de muestra. Veremos al usar Escena Manager escena de carga de puntos, podemos mejor en nombre exacto de la escena que queremos cargar, por ejemplo, escena de muestra. Y necesita estar envuelto entre comillas. En lugar del nombre, podemos usar index, que luego te mostraré cómo obtener o cómo averiguar el índice de cada escena. Pero no usaré nada de eso. En cambio, voy a conseguir el índice del pecado activo, que es manual. Y en este caso, simplemente cargaré la siguiente escena en el método jerárquico, que se llamará cuando el usuario presione el botón de salida es aún más simple. Nuevamente, necesita ser público. El mío se llama Botón de salida presionado. Y la única línea de código va como esta aplicación, no renunciar. Y eso es todo. Pero estos no funcionarán dentro del editor de Unity. Sólo funciona cuando exportamos el juego. Por eso estoy agregando debug dot log para ver si funciona el botón, guardar el script y volver a Unity. Necesitamos conectar estos dos botones con funciones acabamos de seleccionar el botón Play y añadir nuevo evento onclick en la lista. Después arrastrando el objeto con el script Administrador de menús. En mi caso, ese es objeto de administrador de menús y encontrar el botón de reproducción presionado método. Repita el proceso con el botón Exit. Pero por supuesto esta vez seleccione Botón de salida método presionado. Ya casi terminamos. Todavía necesito mostrarte cómo agregar escenas a final construida y cómo obtener índice de cada escena. Para ello, voy a crear nuevos juegos parecen mostrarte cómo operar con múltiples escenas. Posteriormente, no estaremos usando esta escena exacta. Por lo que sólo puedes verme demostrando este proceso. Vaya a Configuración de compilación de archivos. Y verás que nuestra lista de escenas en construcción está actualmente vacía. Añadiré menú y juego a esta lista. Como se puede ver a la derecha, cada escena tiene un índice propio a partir de 0. Entonces si quiero cargar, digamos menú, simplemente puedo escribir 0 en Scene Manager y se cargará el menú. Ya podemos probar si todo funciona. Por lo que cierra la ventana, volveremos más tarde. Presiona Play, y veamos qué pasa cuando presiono exit. Botón de salida presionado mensaje, lo que significa que el botón de salida funciona. Y si presiono Play, GameScene está cargada y genial. Mainmenu está trabajando con eso hecho, finalmente es hora de agregar pista de carreras de relevos al juego. Y eso es lo que estaremos haciendo en el próximo capítulo. Nos vemos entonces. 6. ¡Rata de Race: Por fin es hora de añadir una pista de carreras real al juego. Hasta el momento, hemos desarrollado controlador de carro totalmente de trabajo. Y estaría bien si pudiéramos probarlo en una pista de carreras. Por eso visitaremos una vez más Unity Asset Store e intentaremos encontrar un hipódromo o calzada para nuestro juego. Usaré paquete llamado pistas de carreras, que viene con dos mapas. Y me gusta mucho. Pero claro, puedes usar cualquier paquete que quieras. No tengas miedo de explorar todos los activos disponibles en Unity Asset Store. A lo mejor encuentres algo para tu futuro juego. Una vez que elijas tu pista, no olvides descargarla. Entonces podemos volver a Unidad. Al igual que antes, necesitamos usar gestor de paquetes para importar una pista de carreras al proyecto. Encargado de paquetes de ventana abierta, mis activos. Encuentra tu paquete e importó mis costos de paquete los cuales hacen escenas ya preparadas, y usaré una de ellas para mi juego. A la escena que voy a estar usando se le llama spring track. Este mapa es enorme y asumo que tomará jugador de tres a cuatro minutos de principio a fin. También planeo agregar un temporizador para que podamos competir con nuestros amigos, pero lo haremos más adelante. En primer lugar, vamos a añadir el look actual a la configuración de compilación. Y al mismo tiempo, podemos eliminar escena de juego de la lista porque no la estaremos usando. También necesitamos agregar todos los objetos vistos en jugador terrestre. Así funciona nuestro controlador de auto. Por último, tiempo de sumar a la escena. Hemos creado jugador antes, pecado en muestra y podemos reutilizarlo. No tenemos que crear uno nuevo desde cero. Basta con ir a ejemplo sin, seleccionar jugador, y arrástrelo a la carpeta Activos. De esta forma, crearemos prefab es un objeto que se puede reutilizar tantas veces como queramos. Después vuelve a nuestra pista seleccionada y simplemente agrega prefab de jugador a la escena. Al igual que eso, establece la rotación. Y ya casi terminamos. Todavía tenemos que añadir cámara virtual, como lo hicimos en la primera escena usando Cinema machine. Ya sabemos configurarlo. Entonces hagámoslo. Queremos seguir al jugador y usar los mismos valores de offset como lo hiciste antes. Y ahora, momento de verdad, ¿ funcionará? Pulse Reproducir. Y después de unos segundos, podemos ver que nuestros controles de auto están funcionando correctamente en una pista de carreras real. Genial. Nuevamente, el movimiento del vehículo no es suave como debería ser, ya que todavía estamos recibiendo algo de fricción por la carretera. Pero la buena noticia es, podemos usar material físico que hemos creado al inicio de la clase. mala noticia es que necesitamos aplicar material de física al área y a cada objeto de escena que tenga cualquier tipo de Collider, y eso puede llevar algún tiempo. Por lo que voy a adelantar rápidamente esta parte. De acuerdo, estamos listos para volver a intentarlo. Esta vez, todo debería funcionar correctamente. Presiona Play, y finalmente tenemos controlador de auto completamente funcionando con movimiento suave. A lo mejor no se ve así en la cámara, pero eso es porque estoy grabando pantalla y mi computadora no es realmente tan poderosa. Espero que seas controlador funciona también. De no intentarse repetir los pasos anteriores o enviarme una pregunta, encontraremos solución juntos. En el siguiente capítulo, vamos a añadir un temporizador al juego, y ya lo estoy esperando. Mar. 7. Inicio, acabado y Timer: Cuando tenemos la mecánica básica lista, es el momento de agregar alguna interfaz de usuario al juego. Empezaremos con un temporizador. Siempre que trabajamos con interfaz de usuario, necesitamos cambiar la vista de escena a 2D, igual que hicimos con el menú. Necesitamos tener base para nuestro uso una interfaz. Y para eso vamos a usar Canvas. Te renombraré mi lienzo, pero no es necesario. Puedes dejarlo tal como está. Después en Canvas, agregaremos tomas que mostrarán el tiempo. Voy a mover mi temporizador de mensajes de texto esquina superior izquierda. Y por supuesto, ajusta la apariencia de cada uno a tu gusto. Mi texto será en color blanco. comprará la fuente. Font-size 32 y alineación establecida al centro. También me gustaría tener un segundo texto en el que se mostrará un registro de la pista. Para ello, simplemente duplicaré Timer Text y luego moveré el texto del registro abajo. No olvides cambiar el nombre del segundo texto y tal vez elegir un color diferente. Yo quiero que mis textos discográficos sean de color rojo, pero esto depende completamente de ti. Ahora, necesitamos crear un objeto vacío que sirva como gestor de juegos o como manejador de juegos. Puedes ponerle el nombre que quieras. Escribiremos el guión del manejador de juegos, que se encargará del tiempo y de guardar nuestros tiempos récord. Así que crea nuevo guión y ábrelo. En primer lugar. Si queremos trabajar con interfaz de usuario, necesitamos importar motor Unity wi. Segundo, necesitamos declarar algunas variables. Empezaremos con dos wearables de texto público, Temporizador, Texto, Textos de registro de entrada. Esos almacenarán texto que queremos mostrar en un juego. En este juego, pasado-tiempo, entrar en tiempo récord. Entonces necesitamos declarar a variables flotantes privadas, temporizador y registro. Esos almacenarán valores de tiempo reales en foro de flotación. El valor predeterminado del temporizador se establece en 0. Y última variable será booleano privado llamado temporizador corriendo. Esta variable se utilizará para iniciar y detener el temporizador, y tendremos un valor predeterminado de fuerza. Esas son todas las variables que necesitamos. Y podemos continuar con el método de inicio. El método de inicio, bloquearemos el puntero del ratón a la pantalla del juego para evitar que se vaya de la pantalla. Podemos hacer eso con una simple línea de código, configurando el estado de Lock Pointer a bloqueado. Entonces algo un poco más complicado, pero trataré de explicarlo todo en el camino. Cuando GameSart, queremos comprobar si tenemos algún valor guardado para tiempo récord. Porque si lo tenemos, podemos mostrarlo en la pantalla y jugador sabrá a qué hora necesita vencer. De no ser así, vamos a establecer los registros fueron capaces de 0 porque estamos operando con datos simples. Tenemos sólo un flujo a comestible. En realidad, podemos usar el desenfoque quizás para guardarlo. Podemos guardar diferentes valores bajo claves específicas las cuales necesitamos especificar. Y debido a que estamos ahorrando tiempo récord, voy a nombrar mi disco inky. Puedes ponerle el nombre que quieras. Sólo ten cuidado al deletrear. Y si necesita acceder a la clave de prefs sampler varias veces, sería una buena práctica declarar cadena privada comparable con nombre de la clave y luego usar esta variable en lugar de escribir el nombre de la clave una y otra vez. En la primera sentencia if, estamos comprobando si tenemos clave de registro existente y si lo hacemos, estamos aplicando su valor a la variable de registro. De no ser así, simplemente estamos configurando carácter a arable en 0. Antes de saltar en el método de actualización, me gustaría declarar nuevo método llamado tiempo de visualización, que también tomará parámetro defectuoso llamado Tiempo para mostrar. En este método, tomaremos float wearable con nuestra hora actual y lo mostraremos en formato específico utilizando nuestro texto de temporizador. Dividiremos el tiempo para mostrarlo en cualquier lugar en minutos, segundos y milisegundos. Para obtener minutos, necesitamos dividir el tiempo para mostrar donde wl por 16, porque hay 60 segundos en un minuto de curso. Entonces para obtener segundos, necesitamos usar operador modulo. Nuevamente, estamos dividiendo el tiempo para mostrar variable por 60, pero esta vez estamos obteniendo el resto de esa operación, y esto representa nuestros segundos. Para obtener milisegundos, necesitamos multiplicar tiempo para mostrar por 1000 y luego dividirlo por 1000. Y el resto de esa operación representa nuestros milisegundos. Estamos nuevamente usando operador de modulo. Ahora para mostrar esos valores en pantalla, necesitamos especificar el formato de Timer Text. En primer lugar, habrá minutos. segundo lugar es de cuatro segundos, y el tercer lugar, cuatro milisegundos. Entre minutos y segundos, habrá colon, y entre segundos y milisegundos, será punto. En el método de actualización. Usaremos if statement para comprobar si el temporizador se está ejecutando. En caso afirmativo, agregaremos tiempo a tiempo disponibles y mostraremos una nueva hora. De no ser así, simplemente mostraremos el tiempo en la pantalla. Por supuesto, todavía necesitamos una forma de iniciar y detener el temporizador. Por eso vamos a crear dos métodos públicos. Uno para arrancar un temporizador y para y para detener el temporizador. En el primero, estableceremos la variable de ejecución del temporizador en true. En el segundo, pondremos un temporizador funcionando valioso para forzar y asegurarnos de que ambos métodos sean públicos, por lo que podemos llamarlos desde otros scripts. También vamos a crear método privado para mostrar un tiempo récord en pantalla. mío se llamará el registro de visualización, y tomará parámetro de flotación llamado su registro. Para transformar un parámetro de registro en segundos, minutos y milisegundos. Podemos copiar código desde el método de tinte mostrado. Tan solo asegúrate de reemplazar todos los nombres de las variables. En lugar de tiempo para mostrar, usa un registro y en lugar de texto temporizador, necesitamos usar los registros txt. A continuación, volver al método de inicio y abajo si sentencia llamada mostrar un método de registro con la variable de registro como parámetro. Por lo que cuando GameSart récord se mostrará en pantalla y sabremos a qué hora tenemos que vencer cuando terminemos la carrera. Queremos comprobar si hemos establecido nuevos registros. Podemos usar el método stop diamond para eso porque este método se llamará exactamente cuando pasemos la línea de meta. Con cada declaración, comprobaremos si nuestro tiempo es mejor que el tiempo récord. Si lo es, ahorraremos nuestro tiempo como nuevo récord. También ahorraremos nuestro tiempo ya que grabo cuando intentamos levantar esta pista por primera vez y nuestro récord actual es 0. Después de la declaración IF, asegúrese de llamar a la función de registros de visualización una vez más, Dan guardar descript y regresó a la unidad. Como puedes ver, tenemos dos nuevas ranuras vacías en el manejador de juegos, una para texto de temporizador, y otra para texto de grabación. Asegúrate de conectar ambos elementos de la interfaz de usuario con ranuras correctas. De acuerdo, así que nuestro temporizador está hecho. Lo único que falta es un gatillo que iniciará y detendrá el temporizador. Básicamente, necesitamos algún tipo de línea de inicio y meta. Para eso, podemos usar simple cubo 3D, escalarlo y ajustar la rotación. Pondré x a 22 y 210. Este grupo ya tiene un colisionador de caja, lo que significa que podemos detectar cuando estamos en frío pasar a un cliente estrella. Tan solo asegúrate de configurar el colisionador para que se active para que el vehículo pueda pasar por este objeto para que sea invisible. Apagaré el renderizador de malla. Como parte del objeto startup, añadiré dos pilares a cada lado de la carretera, por lo que jugador sabrá dónde reiniciar. Volveré a usar cubo 3D, pero esta vez necesito escalarlo hacia abajo. Estableceré el valor X en 0.1. Mueve los primeros mil millones en su posición. Entonces podemos duplicarlo y tenemos nuestro segundo pilar, cuatro otro lado de la carretera. Por favor, reserve pilares en posición correcta y renombrarlos si desea mantener un proyecto organizado. Ahora es el momento de agregar funcionalidad, seleccionar objeto de inicio y crear un nuevo script llamado Inicio o algo así. Entonces ábrela. Elimina ambos métodos por defecto porque no los usaremos. Este script solo tendrá un trabajo para iniciar el temporizador. Y para iniciar el temporizador, necesitamos llamar al método del temporizador de inicio dentro del script del manejador de juegos, lo que significa que necesitamos una referencia pública al guión. Por eso declararemos variable de juego público entregado. Otra vez puedes nombrarlo como quieras. El mío se llamará el manejador de juegos. Si recuerdas, Box Collider en este objeto es disparador, lo que significa que cuando colisionaremos con Start objeto On Trigger Enter se llamará al método. Y ahí podemos llamar al método de temporizador de inicio usando nuestra referencia de manejador de juegos. Eso es todo por el guión de inicio, guárdelo y regresó a la unidad. Tenemos una nueva ranura vacía y necesitamos arrastrar el objeto con guión de manejadores de juegos. En mi caso, ese es el objeto Game Manager. Al igual que eso, tenemos conectado manejador de juegos que línea de inicio, y tenemos nuestro peso para arrancar nuestro temporizador. Hablando de un gestor de juegos, lo renombraré a manejador de juegos para evitar cualquier confusión. Para detener el temporizador repetirá todos los pasos. Pero en lugar de inicio temporizador, llamaremos a un método stop timer, duplicaremos el objeto start y lo reposicionaremos. No demasiado lejos porque tendremos que probar el temporizador si todo funciona como debería. Cambiar el nombre del objeto para terminar y para eliminar script de inicio. Crearemos nuevo guión llamado Finalizar. Abrigo será muy similar para iniciar guión. Sólo diferencias. Estamos llamando método stop timer. Eso es todo. Guarda el guión y vuelve a Unity. Asegúrate de conectar el script terminado con el manejador de juegos. Y nosotros el dímero de la deuda se debe hacer para trabajar. Por supuesto, sólo hay una forma de averiguarlo pulsa Play. Y ya veremos, sí, parece que nuestro temporizador está funcionando muy bien. Y para grabar el tiempo también funciona como debería. Por supuesto, no me gustan actualmente los elementos fuera de texto casi en medio de la pantalla. Entonces vamos a moverlas. Podemos adjuntar temporizador toma a la esquina superior izquierda y para grabar toma a la esquina superior derecha. Por ahora, puedes ajustar este diseño a tu juego, pero por ahora, esto hará muy bien. Ahora lo que podemos hacer que esta carrera sea un poco más larga. Entonces movamos la línea de meta más adelante por el camino. Se puede mover todo el camino hasta el final de la pista. Pero para que yo lo pruebe, Eso es suficiente. De lo contrario, este capítulo será demasiado largo. A medida que hicimos esta carrera más larga, también necesitamos despejar jugador a, quizás porque el récord actual de pista se fijó en pista mucho más corta y sería imposible romperse. Para borrar las prefs del jugador, ve a Editar Borrar todas las prefs del jugador y pulsa Sí para confirmar. Y eso es todo. Hemos hecho juego sencillo con Control de Automóviles básico sobre el que puedes construir sobre otra tarea. Pero creo que todo está funcionando como debería ser. Mi juego está actualmente un poco laggy. Pero eso sólo por que mi computadora tiene problemas de tiempo alrededor y motor comunitario y grabación de pantalla al mismo tiempo. Espero que todo funcione en tu juego. De no ser así, intenta repetir pasos dados en este capítulo, puedes enviarme una pregunta en cualquier momento. Siempre estoy feliz de ayudar. 8. Proyecto de clase: Juntos, hemos creado mini juego de carreras usando nuestro controlador de coche. Para el juego, hemos usado atraer de paquete importado, tratamos de hacer otro mini juego usando segunda pista de paquete importado o importar paquete completamente nuevo desde Unity Asset Store. También hemos creado un menú principal realmente sencillo con sólo dos botones. intentó agregar más botones. Por ejemplo, botón para pista 1, segundo botón para pista dos. Hemos desarrollado controlador de auto símbolo con mecánica básica. intentó actualizar este controlador de auto con mecánica avanzada y experimentar con diferentes valores o declarar dos variables. Si tienes alguna pregunta o problema, pregúntame aquí, se unen a la discordia. Y eso es todo para esta clase. En este punto, los estoy invitando a revisar mis otras clases. He creado tutoriales sobre cómo hacer juego de plataformas, shooter en primera persona, y juego en tercera persona. Enlace a mi masterclass está abajo. Gracias por ver el sello de mi clase en el siguiente.