Taller intensivo de Godot | Michael Mcguire | Skillshare

Velocidad de reproducción


1.0x


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

Taller intensivo de Godot

teacher avatar Michael Mcguire, Author | Programmer

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 al curso

      7:47

    • 2.

      Descarga y configuración

      8:55

    • 3.

      03 Impresión para obtener imágenes adicionales

      14:53

    • 4.

      04 Variables

      10:22

    • 5.

      05 Cuerdas

      12:25

    • 6.

      06 Enteros y flotadores

      10:42

    • 7.

      07 Constantes y comentarios

      7:29

    • 8.

      08 Listas

      10:22

    • 9.

      09 Cómo agregar y eliminar

      10:28

    • 10.

      10 Empujar y ordenar

      6:58

    • 11.

      11 para bucle

      10:18

    • 12.

      12 Rango

      5:40

    • 13.

      13 igualdad

      13:50

    • 14.

      14 si elif else

      11:02

    • 15.

      15 diccionarios

      16:54

    • 16.

      Cómo obtener entradas

      17:17

    • 17.

      17 bucles while

      8:03

    • 18.

      18 Funciones y argumentos

      7:59

    • 19.

      19 Alias de funciones

      8:14

    • 20.

      20 clases

      12:46

    • 21.

      Lo que vamos a hacer (espacio lleno)

      2:01

    • 22.

      Crear un libro de historias

      8:05

    • 23.

      Crea la interfaz

      12:35

    • 24.

      Selecciona la historia y las instrucciones al reproductor

      24:53

    • 25.

      Terminar y reproducir

      16:07

    • 26.

      Lo que vamos a hacer (espacio lleno)

      2:01

    • 27.

      Tilemap vs. New TilemapLayer

      5:30

    • 28.

      Crear el fondo

      9:10

    • 29.

      Creación del reproductor

      6:02

    • 30.

      Movimiento del jugador

      20:07

    • 31.

      Crear los vehículos

      25:47

    • 32.

      Muerte y respawn del jugador

      23:33

    • 33.

      Muerte de agua

      7:44

    • 34.

      Plataformas acuáticas

      21:56

    • 35.

      El espacio ganador

      6:59

    • 36.

      Corrección de fuga de memoria

      9:56

    • 37.

      Sistema de puntuación

      13:06

    • 38.

      Puntuación del HUD del juego

      8:19

    • 39.

      HUD del juego - Lives

      15:25

    • 40.

      Temporizador y extra

      10:48

    • 41.

      Audio de Frogger

      10:28

    • 42.

      Cómo pasar de trabajar en 2D a 3D

      6:03

    • 43.

      Comprender las diferencias entre 2D y 3D

      4:12

    • 44.

      Similitudes entre 2D y 3D

      6:37

    • 45.

      Materiales

      14:48

    • 46.

      Iluminación

      17:15

    • 47.

      Recursos en 3D

      4:33

    • 48.

      Mapas de cuadrícula

      15:53

    • 49.

      Creación del reproductor

      7:10

    • 50.

      Movimiento del jugador

      8:05

    • 51.

      Crear vehículo

      20:27

    • 52.

      Muerte y respawn del jugador

      11:41

    • 53.

      Muerte de agua

      7:04

    • 54.

      Plataformas acuáticas

      25:46

    • 55.

      Corrección de fuga de memoria

      4:51

    • 56.

      Gana espacio

      9:36

    • 57.

      GUI de partitura y temporizador

      19:37

    • 58.

      Qué es una API

      4:04

    • 59.

      Cómo usar una API

      5:07

    • 60.

      Configuración del guion

      6:44

    • 61.

      Hacer llamadas a la API

      15:10

    • 62.

      RapidAPI de Python a GDScript

      19:14

    • 63.

      Qué son los WebSockets(espacio rellenado)

      4:53

    • 64.

      Establecimiento de una conexión

      14:20

    • 65.

      Envío de datos con WebSockets

      7:46

    • 66.

      ¿En qué se diferencia el desarrollo de computadora de escritorio?

      4:32

    • 67.

      Anclajes

      5:36

    • 68.

      Diseño de la búsqueda

      10:52

    • 69.

      Diseño de resultados

      8:02

    • 70.

      Hacer una búsqueda

      26:20

    • 71.

      Miniaturas, títulos, géneros

      22:42

    • 72.

      AnimePage

      27:52

    • 73.

      Fuentes

      8:42

    • 74.

      Temas personalizados

      14:53

    • 75.

      Varias ventanas

      5:13

    • 76.

      Barras de menú

      18:08

    • 77.

      ¿Qué son las partículas?

      3:29

    • 78.

      Creación de un fuego en 2D

      15:50

    • 79.

      Cómo crear un fuego en 3D

      14:15

    • 80.

      Cómo codificar cualquier elemento mecánico

      3:53

    • 81.

      Gravedad y saltos

      10:58

    • 82.

      Guardar y cargar archivos

      27:52

    • 83.

      Tatillos y pedales

      6:35

    • 84.

      Vibración del controlador

      3:26

  • --
  • 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.

451

Estudiantes

--

Proyectos

Acerca de esta clase

Bienvenido al taller intensivo de Godot, donde te embarcarás en un viaje inmersivo para dominar el desarrollo de juegos y crear un potente software de escritorio con interfaz de usuario (GUI) utilizando el versátil motor de juegos Godot. Tanto si eres principiante como un desarrollador experimentado, este curso completo está diseñado para dotarte de las habilidades y los conocimientos necesarios para sobresalir en el mundo de la creación de software interactivo.

Godot es un motor de juegos reconocido por su flexibilidad y sus características robustas. En este campo de entrenamiento, te sumergirás en las capacidades de Godot y explorarás técnicas de desarrollo de juegos en 2D y 3D. Desde el diseño de cautivadoras mecánicas de juego hasta la implementación de impresionantes efectos visuales, aprenderás los pormenores del desarrollo de juegos con Godot.

Pero eso no es todo: este curso de entrenamiento va más allá del desarrollo de juegos. También nos aventuraremos en el ámbito de los software de escritorio basados en una GUI. Descubrirás cómo crear interfaces fáciles de usar, crear aplicaciones interactivas y aprovechar las API y los sockets web para las redes en tiempo real.

Lo que distingue a este curso es su enfoque práctico y basado en proyectos. A lo largo del curso, participarás en cuestionarios, proyectos prácticos y trabajo grupal colaborativo, lo que te permitirá aplicar tus nuevos conocimientos y desarrollar una cartera de proyectos impresionantes.

Al final de este campo de entrenamiento, dominarás el lenguaje de programación GDScript y adquirirás la competencia para utilizar el amplio conjunto de herramientas de Godot. Tanto si aspiras a crear juegos independientes, como si quieres hacer carrera en el desarrollo de juegos o crear aplicaciones de escritorio intuitivas, el curso intensivo de Godot te permitirá convertir tus ideas en realidad.

Qué aprenderás:

  • El motor de juegos Godot y aprovechar sus características para el desarrollo de juegos

  • Sumérgete en GDScript, el lenguaje de secuencias de comandos intuitivo de Godot, para desarrollar la mecánica del juego y las interacciones

  • Crearás juegos cautivadores en 2D a través de la manipulación de sprites, animaciones y detección de colisiones

  • Explorarás el ámbito del desarrollo de juegos 3D, incluyendo la creación de escenas, la iluminación y los controladores de personajes.

  • Desarrolla un potente software de escritorio con interfaz gráfica y elementos interactivos

  • Utilizarás API y sockets web para implementar características de redes en tiempo real

  • Adquirirás experiencia práctica a través de cuestionarios y proyectos

  • Accede a una gran cantidad de recursos, tutoriales y una comunidad de apoyo de compañeros estudiantes


Tanto si eres un apasionado de los juegos, como si quieres desarrollar o eres un entusiasta de la tecnología, el curso intensivo de Godot te proporcionará los conocimientos y las habilidades necesarios para sobresalir en el dinámico campo del desarrollo de juegos y la creación de software basado en una GUI.

¡Inscríbete ahora y embárcate en un emocionante viaje para convertirte en un desarrollador Godot competente!


* Los recursos de frogger están adjuntos a la página del proyecto
** Cualquier versión después de Godot 4.0 debería estar bien

Conoce a tu profesor(a)

Teacher Profile Image

Michael Mcguire

Author | Programmer

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 al curso: Hola, y bienvenidos al campo de entrenamiento Got to. Soy Mike Maguire, y seré tu instructor a lo largo de este curso En nuestro primer video aquí, vamos a repasar todo lo que vamos a cubrir a lo largo de este curso, que principalmente va a ser alrededor del desarrollo de juegos dentro del motor de juegos GoTo Sin embargo, también vamos a abordar un poco de desarrollo de software donde estarás creando tus propias aplicaciones de escritorio, además de ramificarte en cosas como API y sitios web y hacer que todo se comunique entre sí Y todas estas cosas siempre pueden retroceder y usarse dentro de los juegos en sí, por lo que aún podemos considerar que todo parte del desarrollo del juego al final del día. Echemos un vistazo a la descripción general del motor de juegos Goto Bueno, Goto es un motor de juego potente y versátil que ofrece una amplia gama de características y herramientas que son muy útiles para el desarrollo de juegos Ahora bien, un ejemplo de esto es algo así como la física de telas, por ejemplo. Digamos que querías hacer una capa sobre un personaje. En Goto, podrías tener eso instalado en aproximadamente un minuto, mientras que en otros motores, tardaría mucho más solo en conseguir que la física de la tela y eso funcionara Entonces ese es un beneficio que tendríamos si estuviéramos creando un juego de tres D que involucre cosas como capas, capas y cualquier otra cosa que necesite física de tela. Es un motor de código abierto, lo que significa que es genial de usar y tiene una gran comunidad de desarrolladores que contribuyen a su crecimiento. Ahora, enfatizo la porción libre porque algunas personas dicen que la unidad es libre, y al menos en el momento actual, no es gratis. Hay una versión personal que puedes usar hasta cierto punto una vez que tienes cierta cantidad de ingresos o si quieres ciertas funciones, entonces tendrías que pagar. Entonces no consideraría a Unity completamente libre, y otros motores que la gente considera, como el irreal Ellos toman una parte de tu realeza, así que aunque no estás pagando por adelantado, estás pagando a la larga Y entonces tenemos otros motores como GameMaker que son creo que ahora están por suscripción Por lo que GOTO es completamente gratuito de principio a fin. Nunca hay que pagar por nada. GOTO también admite el desarrollo de dos juegos D y tres D. Lo que, por supuesto, lo hace adecuado para una amplia gama de proyectos. No te va a limitar en lo que puedes hacer o hacer las cosas extremadamente difíciles, por ejemplo, de nuevo, con GameMaker, es un motor TD Y si quieres hacer tres D, sería un gran dolor en el trasero obligarlo a hacer eso porque para eso no es para lo que sirve. GoTo está pensado tanto para TD como para tres D, así que no vas a tener ningún dolor a la hora de hacer eso Solo tienes que preocuparte de cómo crear tus juegos, supongo. Bien. Ahora veamos los beneficios de usar Gato. Bueno, vamos a explorar algunas de las ventajas clave de usar Goto para tus proyectos de desarrollo de juegos GoTo tiene una interfaz fácil de usar que facilita tanto la navegación como el trabajo incluso para principiantes. Te ofrece un editor visual que te permite crear escenas de juego y manipular objetos y configurar tu lógica de juego sin tener que escribir mucho código. Y ahí es donde entrará GD Script donde es muy amigable para principiantes y bastante fácil de recoger. sistema basado en nodos de Goto simplifica la creación y organización de todos tus objetos de juego, haciéndolo altamente intuitivo y eficiente Echemos un vistazo a las comunidades y recursos de Gatto. La comunidad de Gatos es vibrante y solidaria con desarrolladores de todo el mundo, compartiendo sus conocimientos y experiencias. Existen diversos foros en línea, sitios web y grupos de redes sociales donde puedes conectarte con otros usuarios de Gato, hacer preguntas y encontrar inspiración. Uno de estos principales está en el propio sitio web de Gato. Hay un foro específicamente para que las personas hagan preguntas y obtengan ayuda con cualquier cosa en la que estén atrapadas, ya sea una pregunta para principiantes o algo más avanzado. Adicionalmente, Gato cuenta con una amplia documentación y tutoriales que están disponibles prácticamente en cualquier lugar en este momento, lo que facilita encontrar respuestas a las preguntas que estás buscando y ayudarte a aprender nuevas técnicas. Ahora bien, ¿qué vas a aprender exactamente en este curso? En este curso cubriremos una amplia gama de temas para ayudarle a ser competente en el uso del motor Goto para crear aplicaciones Aprenderás el lenguaje de programación GD Script, que es esencial para construir mecánicas de juego e interacciones, y será nuestro principal lenguaje de scripting. Ahora bien, la razón por la que vamos a ir con GD Script sobre algo así como C Sharp es que GD Script tiene un mejor soporte en la actualidad, aunque C Sharp se está volviendo bastante bueno en su soporte también Pero GDScript también tiene una comprensión más apretada, supongo que se podría decir, a la propia API de los motores, además de ser mucho más fácil para los principiantes para recoger y empezar a correr Exploraremos el desarrollo de dos juegos D y tres D, incluida la manipulación de sprites Por supuesto, repasaremos las novaciones, detección de colisiones, trabajo con partículas y mucho más También obtiene experiencia en la creación un software de escritorio basado en una interfaz de usuario Goey o gráfica usando Goto y aprende a utilizar API e incorporar el uso de sockets web para redes en tiempo real Bien. Enhorabuena por completar la introducción al motor de juegos Goto en el siguiente video, profundizaremos en el script GD, el lenguaje de scripting que usaremos en Goto y pondremos manos a la obra con Ahora, recuerda, la comunidad Gatto siempre está ahí para apoyarte, y yo estoy aquí para guiarte en cada paso del camino Vamos a sumergirnos juntos en el apasionante mundo del desarrollo de juegos. 2. Descarga y configuración: Bienvenidos futuros desarrolladores. Si vamos a estar desarrollando cosas usando el motor Goto, ya sea videojuegos o software de escritorio, lo primero que vamos a necesitar es, bueno, el motor Goto Entonces echemos un vistazo a cómo podemos seguir adelante y obtener esto descargado. Ahora bien, lo primero o la primera forma que debo decir que podemos conseguir esto es descargar Gato desde la página oficial aquí. Simplemente vaya a Goto engine.org, como vemos aquí, aquí mismo en la pantalla Y una vez aquí, verás la sección de descargas arriba en la parte superior de nuestra pantalla. Además de dos botones de descarga en el centro, tenemos el LTS, que es tres punto X y el último, que es 4.1 Estaremos usando la última versión, que es 4.1. No hay nada malo con la versión de tres puntos X. Todavía se está desarrollando, y es el soporte a largo plazo. Sin embargo, si la usaras, esa versión mientras sigues, puede haber algunas funciones o algunas cosas que escribamos que podrían tener diferentes nombres o potencialmente ni siquiera existir en la versión antigua. Entonces solo tenlo en cuenta, y por eso, recomendaría que uses la versión 4.1 a medida que avanzamos. Bien, entonces esta es la versión estable 4.1 que acaba de salir. Entonces puedes presionar el botón Descargar más reciente o la pestaña de descarga en la parte superior. Ambos te traerán a esta pantalla aquí. Bien, así que para seguir adelante y para descargar esto, todo lo que vamos a necesitar, ya que vamos a usar el lenguaje de programación de scripts GD Todo lo que necesitamos es la versión estándar aquí con el botón azul. Y la diferencia entre esta y la versión.net es que la versión.net también soporta C Sharp Y si tuvieras que usar eso, entonces tendrías que desplazarte hacia abajo y también recoger el.net que se requiere para poder usarlo, así como preferentemente programas externos para escribir tu código en Y es solo un montón de cosas extra que no necesitamos a la hora de pasar por este curso. Entonces, si quieres obtenerlo del sitio web, puedes seguir adelante y simplemente presionar ese botón del motor Goto ahí para 4.1 en la versión estándar Ahora, hay una segunda forma en que podrías conseguir esto, y esa sería de Steam. Puedes venir a Steam y seguir adelante y descargarlo desde allí si lo deseas. Y eso nos va a dar la versión estándar por defecto. La versión Steam no tiene la versión.net disponible. Pero no tienes que preocuparte por ninguna confusión con eso si sigues adelante y lo obtienes de Steam. Bien, así que si lo obtienes de Steam, puedes seguir adelante y simplemente presionar el botón Reproducir O si lo obtienes del sitio web, vas a obtener un archivo zip, y todo lo que tienes que hacer es extraerlo y simplemente puedes seguir adelante y comenzar a ejecutar la aplicación. Bien. Cuando sigas adelante y lo ejecutes, te encontrarás con una pantalla como la que ves aquí. Y todo lo que vamos a hacer, claro, no vas a tener todos estos proyectos y cosas de tu lado. Pero todo lo que vamos a hacer es que solo vamos a presionar el botón de nuevo proyecto aquí. Y eso debería darte una nueva ventana que aparece tal como ves aquí. Y todo lo que tienes que hacer es decidir dónde entrando en Browse, decidir dónde quieres colocar el proyecto aquí a medida que vamos a lo largo del curso y seguir adelante y darle un nombre. Para esto, sólo voy a seguir adelante y llamar a este bootcamp de botas Para ello, voy a regresar, y luego lo llamaré Goto boot camp, y solo voy a darle a Crear carpeta porque tiene que estar en una carpeta vacía aquí Y ahí tienes. Vemos que tenemos un bonito cheque verde aquí indicando que todo está bien. Entonces tenemos tres modos de renderizado, forward plus, mobile y compatibilidad. La compatibilidad se utiliza como OpenGL. Como puedes ver, por los puntos aquí, cada versión tiene sus propios pros y contras. Pero en su mayor parte, vas a estar trabajando con Board plus. A menos que, por supuesto, estés haciendo algo vas a estar creando una versión móvil o algo así, entonces por supuesto, deberías usar la opción móvil aquí. Y si estás trabajando en una versión para ser desplegada en la web de tu herramienta o hardware antiguo, entonces usarías compatibilidad. Así que solo voy a seguir adelante y dejar adelante más aquí seleccionado, y solo podemos darle a Crear y Editar, y eso va a seguir adelante y crear el proyecto y abrirlo Entonces eso solo tomará un momento ahí. Todo bien. Entonces serás recibido con la siguiente pantalla aquí, y ahora estamos dentro del motor y listos para ponernos a trabajar aquí Ahora, para darte un breve resumen, abajo en la parte inferior izquierda, tenemos el sistema biliar, que es donde todos nuestros biles, guiones, activos del juego, etcétera, van a ser todos Continuando por el lado izquierdo aquí, tenemos la pestaña de escena. Aquí es donde construiríamos visualmente, bueno, las imágenes de nuestros proyectos Aquí hay una pestaña de importación. Entonces, si necesitas reimportar un objeto por cualquier motivo, puedes hacerlo desde ahí Pasando hacia el lado derecho, tenemos al inspector, lo que va a ser muy importante. Estaremos ahí un poco a lo largo de este curso. Tenemos la sección de nodos, que nos permitirá conectar algunas señales incorporadas, y tenemos una historia que podemos remontar. Muy bien por encima de eso, tenemos un par de botones. Aquí tenemos un botón de reproducción, y eso es para ejecutar el proyecto. Eso va a correr por la escena predeterminada la predeterminada como si se estuviera abriendo mediante la ejecución del ejecutable después de que se exportara el juego. La mayoría de las veces, me vas a ver pegando a esta de aquí, como correr escena actual, y eso va a correr la escena actual que he seleccionado en lugar de ejecutar todo el proyecto. Entonces, por ejemplo, en el medio, tienes esta pestaña que dice vacía. Si construí si construí algo aquí, golpeando esa escena actual de ejecución, va a ejecutar lo que se está ejecutando en esta pestaña independientemente de en qué estén configurados mis otros ajustes. En el medio, vas a ver esto donde tenemos nuestras dos D o tres D, o guiones, y la biblioteca Asset, donde podrás entrar y podrías encontrar herramientas o nuevas incorporaciones al motor, cosas así que podrían ayudarte en el futuro, o hacerte la vida un poco más fácil. Dependiendo de lo que sea que estés haciendo, así que tenlo en cuenta, la biblioteca Asset podría ser muy útil, muy útil. Y, por supuesto, siempre podrías usarlo para simplemente mirar el código e intentar aprender de él. ¿Bien? Tenemos el motor descargado. Lo tenemos funcionando. Yo diría que lo tenemos instalado, pero no está realmente instalado, ¿verdad? Simplemente lo desabrochamos y lo abrimos. Y tenemos un nuevo proyecto creado, y estamos listos para saltar a aprender sobre este lenguaje de GD Script 3. 03 Impresión para la salida de imágenes agregadas: Todo bien. Entonces ahora que tenemos nuestro proyecto creado para darte un vistazo rápido a la interfaz aquí. En el lado izquierdo, por defecto, tenemos la jerarquía de escenas. Entonces estas son nuestras escenas y cómo se ve la escena o nivel actual, como podrías mirarlo, como podrías mirarlo, si estás haciendo desarrollo de juegos, y por debajo de eso, tenemos nuestro sistema de archivos, y esta es nuestra estructura de carpetas y todos los archivos que tenemos en nuestro proyecto. Entonces aquí es donde vamos a ver nuestras escenas guardadas, nuestros guiones, cualquier textura u otros recursos que tengamos en nuestro proyecto se van a mostrar aquí abajo. En el extremo derecho, tenemos al inspector, y aquí es donde vamos a ver las propiedades de cada ítem dentro de nuestra escena. A lo largo de la parte inferior, tenemos nuestro editor de shader. Tenemos nuestra línea de tiempo de animación, nuestro bus de audio para hacer algunas mezclas. Tenemos nuestro depurador para corregir cualquier error que necesitemos, y tenemos nuestra consola de salida que podemos echar un vistazo, y vamos a ser bastante útiles a lo largo de este curso Y claro, justo justo justo en el centro, tenemos nuestro puerto de vista grande Y por defecto, se puede ver que estamos poniendo el área tres D. Y en la parte superior, sólo vamos a pasar a dos D porque eso es todo lo que necesitamos para esto. Si solo alejamos el zoom, notarás esta caja azul. Ese es esencialmente el tamaño de nuestra ventana. Ahora, si quieres seguir adelante y cambiar esto, puedes simplemente dirigirte a la configuración del proyecto. Y eso no se recoge, parece que. A ver si puedo alternar en eso. Ahí vamos. Entonces todo lo que vamos a hacer aquí si quieres cambiar el tamaño de tu ventana ahí, solo vamos a bajar y ver display y ventana y viewport ancho y alto Ahí está lo que puedes cambiar. Y ves que esto no tiene muchos ajustes aquí, pero si estamos demasiado avanzados, obtendremos muchas más opciones que puedes echar un vistazo, como una alta frecuencia de actualización, y parece que el DPI alto está aquí. Sé que hay DPI alto, modo de ahorro de energía. Así que aquí hay bastantes opciones que puedes echar un vistazo. Pero por ahora, realmente no necesitamos la configuración avanzada. Yo solo quería señalar eso para ti el ancho y la altura aquí. Voy a seguir adelante y sólo voy a cambiar el mío a 12 80 por 720 sólo para conseguir una bonita ronda y número estándar, y estar ventana perfectamente bien No necesitamos comenzar a minimizar, no necesitamos comenzar a maximizar. Y al principio aquí, ni siquiera va a valer la pena realmente prestarle atención. Por la primera buena parte de esto. Pero ahí vamos. Voy a establecer un 12 80 por 720. Y si estableces eso, podrías notar que el rectángulo azul cambia. Puede que no. Y eso es sólo porque ahí es un cambio muy pequeño y minucioso. Pero sí, cualquier cosa dentro ese rectángulo azul va a aparecer en tu pantalla. Entonces para que empecemos, solo voy a seguir adelante y en la escena de la izquierda, voy a seleccionar la interfaz de usuario, y eso solo nos va a dar un nodo de control por defecto. Si quisiéramos, podríamos hacer clic en otro nodo, y podemos ver todas las diferentes cosas que podemos agregar y simplemente seleccionando control aquí. Podemos ver todos los nodos de la interfaz de usuario inherentes desde el control. Controla anclajes, desplazamiento, adaptación, posición, tamaño relativo a su padre Pero en general, podemos ver que el control se utiliza para una interfaz de usuario. Y eso es lo que notaremos aquí, todo lo relacionado con la interfaz de usuario va a ser de color verde. Bien, así que continuaremos y seleccionaremos eso y presionaremos Crear o presionaremos el botón de la interfaz de usuario allí. De cualquier manera, llegarás a esta misma pantalla o al mismo resultado. Y con eso, tenemos una escena a la que podemos agregar nuestro guión para que podamos comenzar en el código una escena que podamos reproducir para que podamos ver nuestro código correr, y una escena que necesitamos guardar.Francamente, así que voy a seguir adelante y Control punto C TSCM que está bien. Sólo tienes que seguir adelante y guardarla ahí. Y voy a añadir mi primer guión. Ahora voy a llamar a esta impresión porque eso es lo que vamos a ir por aquí para empezar. Imprimir. El lenguaje está en el script GD, control mejorado, plantillas sin defecto Podríamos simplemente ir con vacío porque simplemente vamos a eliminar todo en él de todos modos, así que sigamos adelante y vayamos con ese objeto vacío y creamos. Bien, así que todo lo que vemos aquí en la parte superior es que extiende el control Y eso es solo decir que esto viene de nuestra clase de control, y lo que sea que se esté extendiendo es el tipo de nodo al que se tiene que adjuntar el script. Entonces como está unido a un nodo de control, tiene que extender el control. Así que simplemente bajando un poquito ahí. Vamos a crear un vamos a seguir adelante y escribir Bunk Underscore. ¿Listos? Puse un chulo al final de eso. Presiona Enter, y simplemente escribe la palabra pasar. Ahora podemos eliminar el error que está apareciendo ahí. Pero esto, lo que acabamos escribir aquí es solo un trozo de código que se eliminó porque hicimos un script vacío Y puedo seguir adelante y mostrarte eso aquí también. Entonces, si lo haces de otra manera, yo seguiré adelante y eliminaré ese guión, lo quitaré del control. Y si le agrego un guión, de nuevo, puedes simplemente presionar la diapositiva Control y presionar el botón del script aquí arriba, o hacer clic derecho en Control, y deberías poder agregarlo. Y me estoy dando cuenta de que esto no está apareciendo ahí. Eso está bien. Puedes saber lo que es bueno porque eres capaz de hacerlo bien, lo estás viendo de tu lado. Pero si tuviéramos que seleccionar un nodo de dos puntos por defecto, la plantilla cuando se adjunta en nuestro script, ojalá, lo recuerdo y voy a poner una imagen aquí arriba en pantalla en caso de que ustedes estén un poco confundidos. Haces clic en Crear, se te presentará esta pantalla aquí, y todo lo que esencialmente hicimos cuando creamos una vacía es que eliminamos todo esto, y acabamos de escribir en esta sección nuevamente Eso es todo lo que hicimos. Ahora bien, la razón por la que vamos a usar este subrayado listo aquí es porque cualquier cosa dentro de este bloque de aquí, que por el momento, es solo la palabra pase, va a correr tan pronto como el control aquí entre en escena, que ya es parte de la escena para empezar Así que va a correr tan pronto como pulsemos nuestro botón de reproducción. Y lo que vas a aprender aquí es que vamos a aprender sobre las diferentes formas que realmente podemos imprimir en AR Console. ¿Y por qué querrías hacer esto? Bueno, puedes usar esto para darte alguna información. Puedes usar esto para ayudarte a intentar depurar algunos pequeños errores. Y lo que es más importante, las cosas que imprimas aquí pueden ir a tus registros. Entonces tus registros, por supuesto, si alguna vez has tenido problemas con un juego o una pieza de software en el pasado y los publicas en un formulario, podrías notar que la gente te pide que publiques tu registro. Bueno, esto es lo que están pidiendo. Entonces sigamos adelante y saltemos a esto. Y la forma más predeterminada o formas simples que escribimos en la palabra print, abrimos y cerramos un par de paréntesis, y entre esos paréntesis, podemos usar un par de comillas dobles o comillas simples No importa, pero con lo que sea que empiece, tiene que terminar con. Entonces, si tenemos comillas simples aquí, no puedes escribir la palabra no como ves ahí, porque estamos teniendo un problema donde la T no está incluida, y básicamente, está parando aquí en este apóstrofe, la comilla simple, y luego continúa después de la Así que en este caso, si vamos a tener algo así ahí, necesitaríamos hacer comillas dobles para el inicio y el comienzo, noescribe eso correctamente. Entonces puedes usar cualquiera, pero dependiendo de lo que estés escribiendo, podría limitarte. Entonces lo primero que vamos a escribir aquí es Hello world. Ahora bien, esto es un elemento básico a la hora de aprender cualquier lenguaje de programación que imprimimos en la consola Hello World. Entonces es como un rito de iniciación. Es algo que todos hacen al experimentar un idioma por primera vez. Todo bien. Así que puedes subir aquí y puedes presionar este botón de reproducción aquí en la parte superior. Con el pequeño chapajo, y eso va a tocar la escena actual O puedes presionar este botón de reproducción aquí en la parte superior. Yo digo Ejecutar Proyecto. Y si le das al que dice Ejecutar proyecto, se te pedirá con una pantalla para seleccionar tu escena principal, que en este caso, vamos a usar la que ya tenemos, así que solo puedes seguir adelante y darle la opción seleccionar actual, y se ejecutará. Notarás una ventana emergente. Ojalá sin ningún problema. Y verás abajo en la consola de aquí abajo que hemos impreso Hello world. Entonces ya aprendimos a imprimir en la consola. Entonces, como mínimo, ahora tienes tu primera aplicación. No es una aplicación muy emocionante, pero es algo que creaste que funciona. Ahora bien, a lo largo de este curso, si hacemos impresión, es más que probable que este sea el método con el que voy a ir, pero hay algunas otras cosas que vale la pena señalar aquí. Y uno de esos es impreso con dos Ts. Y lo que básicamente eso va a hacer es que va a poner una pestaña entre los objetos. Entonces si nos gusta esto y separamos nuestros objetos con una coma y seguimos adelante y jugamos esto, verás en la salida, esto es ahora espacio por tabulación entre nuestras palabras Si tenemos dos objetos diferentes como este, podemos hacer impresiones que al final, una T y una S, y eso solo va a poner un espacio entre cada objeto, como teníamos inicialmente, donde teníamos hola mundo como una sola pieza. Ahora, también tenemos impresora con TWORs y esto es en realidad, yo lo llamo impresora, pero es más un error de impresión Y notarás cuando ejecutemos esto que esto realmente aparece en nuestra consola como rojo con un pequeño punto rojo ahí. Entonces esto es algo que podemos usar si queremos mostrar un error en la consola. Hay algo que podemos ver. Y como es rojo y el resto de nuestro texto es blanco, es algo a lo que podemos saltar de inmediato. Y eso solo nos deja con una última opción aquí, y esa es imprimir en bruto. Ahora bien, si hacemos esto, no vas a ver nada aquí en la salida de la consola. Pero lo que esto hace es que esto en realidad va a imprimirse la ventana de la consola que se está ejecutando detrás escena y aún así debería salir a nuestros registros. Eso debería cubrirlo para la impresión, pudiendo hacer aquí todos estos métodos de impresión. Entonces otra vez, conseguimos impresión como vemos aquí. Tenemos impresos dos Ts. Boom. S ahí. Y a tener en cuenta, no es necesario tener un espacio después de la coma, sino que simplemente se ve mejor. Es algo estándar que la gente termina haciendo. Pero voy, tenemos huellas con una S. Y ahí vamos. Adelante y escribe cama adentro. ¿Qué más tenemos? Contamos con impresora, que está imprimiendo tus propios errores. Y teníamos impresión en bruto. Entonces están todas las diferentes formas en las que podemos imprimir en la consola, por supuesto, menos print raw, lo que solo nos sería útil si vamos a nuestro registro. Pero ahí vamos. Hay todas las diferentes formas en que podemos imprimir, y eso lo hará para esta lección aquí. Y el siguiente, vamos a seguir adelante y vamos a saltar a algunas variables y/o matemáticas. 4. 04 Variables: Bien. Y esta lección, vamos a seguir adelante y empezar a hablar de variables. Y si tenemos tiempo, saltaremos a las matemáticas. Así que las variables. ¿Qué son? Bueno, son algo que podemos usar para representar cualquier dato. Así que como teníamos antes donde teníamos un dato que estaba establecido y firmar un par de comillas, podemos establecerlo en una variable, lo cual sería muy útil, por ejemplo, si tuviéramos una frase muy larga y pudiéramos simplemente escribir una palabra o una letra, y eso podría significar exactamente lo mismo. Entonces una variable es una etiqueta que puedes usar para almacenar un dato como lo que hemos impreso antes con Hello world. Así que sigamos adelante y agreguemos eso a un guión. Así que vamos a crear un poco de control. Voy a añadir un guión aquí. Y voy a seguir adelante y simplemente llamar a esto. Sigamos adelante y lo llamaremos variables. Y dale a Crear. Y lo único que vamos a necesitar aquí va a ser nuestra función lista, claro. Y si. Bien, así que vamos a seguir adelante y vamos a poner el tipo pass de nuevo ahí Y nuestras variables van a ir justo aquí en la parte superior. Entonces para crear una variable, todo lo que tenemos que hacer es escribir VAR VAR para variable. Pon un espacio ahí, y podemos escribir cuando queramos aquí. Y este va a ser el nombre de nuestra variable. Entonces lo que vamos a poner ahí es llamémoslo un saludo, ¿no? Y como mínimo, eso es todo lo que tenemos que hacer. Podemos asignarlo más tarde si quisiéramos. Bueno, en realidad vamos a asignarlo aquí mismo en la parte superior. Así que sólo vamos a decir iguales. Entonces vamos a decir saludo es igual, y podemos poner nuestro par de comillas, y puedes decir hola nuevo W ahora, tenemos a nosotros mismos una pequeña frase aquí, pero podemos poner eso en donde sea que pongamos la palabra saludo. Entonces si seguimos adelante e imprimimos nuestro saludo variable, y si seguimos adelante y ejecutamos esto, verás aquí abajo en nuestro outbook vamos a conseguir el saludo que escribimos ahí arriba en la parte Ahora, puedes escribir cuando quieras aquí. Puedes hacerlo todo el tiempo que quieras. Y todo esto estará representado por esta palabra singular. Y si quisiéramos ir más allá, podríamos simplemente convertirla en una letra singular como G y volver a hacer esto. Y como se puede ver que una letra representa todo eso. Ahora bien, a los efectos de una variable, especialmente las que están arriba aquí, usar una letra como esta es terrible nombrar porque alguien entra, mira esto Puedes ver que hay una variable llamada G, pero no te dice qué es Y una variable debería decirte exactamente qué es, y el menor contexto posible. Entonces lo dejaremos como saludo porque eso es lo que está pasando aquí. Tenemos un saludo que está pasando, ¿no? Yo solo Controles para guardar. Así que ahora tenemos nuestro primer programa ejecutándose, y ahora estamos usando variables. Ahora, pieza cada variable va a tener algún tipo de datos que esté conectado a ella. Esto normalmente se llama el valor. Ahora bien, no importa qué tipo de datos sean estos. Siempre me pueden etiquetar como un valor. Entonces en nuestro caso, saludo es el nombre de la variable, y Hello New World es nuestro valor. Ahora bien, uno de los beneficios que tenemos para esto es que es un poco más de trabajo. Pero digamos que entramos aquí y queríamos usar esa frase o ese saludo una y otra y otra y otra vez, a lo largo de nuestro código. Te imaginas tener que venir aquí y editar todas estas cosas si quieres hacer un cambio en tu saludo, entonces entra aquí y edita todas estas una por una. Bueno, con la variable, podemos simplemente hacer eso aquí mismo en la parte superior. Entonces en vez de hola, nuevo mundo, diremos hola y bienvenidos al programa Mundo. Y como estamos usando una variable aquí, acabamos de cambiar esa frase en todas estas líneas de código a la vez. Ahora, como digo, si tuviéramos que pasar por eso uno por uno, eso apestaría muchísimo. Como mencionaba antes, podríamos establecer esto antes o podemos establecerlo más tarde, y en realidad podemos sobrescribirlo también Entonces decimos saludo, que es nuestro nombre de variable, y diremos iguales, diré que este es mi nuevo valor. Entonces veremos que la rejilla superior va a ser lo que se pone aquí en la parte superior. Pero luego después de eso, vamos a cambiar lo que significa esa variable. Estamos cambiando el valor de la misma, y luego vamos a imprimir nuestro nuevo valor. Si seguimos adelante y jugamos eso, ahí tienes. Eso se puede ver ahí. Entonces podemos cambiarlo en la parte superior, lo que idealmente deberías cuando puedas, o puedes cambiarlo más abajo dentro de tu guión en un momento posterior. Puedes cambiarlo o firmarlo por algo completamente diferente. Todo bien. Así que eso nos da nuestro rápido panorama aquí sobre las variables. Entonces, lo que te voy a dejar aquí es que hay algunos nombres, algunas reglas que debes intentar seguir a la hora de nombrar tus variables Ahora bien, estas reglas suelen ser un nombre de variable. variable se puede nombrar usando letras y números y guiones bajos, que no pueden usar ningún espacio en el nombre de la variable El lenguaje simplemente no te permitirá tampoco eso para hacer eso, y no puedes comenzar tu nombre de variables con un número. Eso es algo a tener en cuenta ahí. Evita también debes evitar usar palabras clave o nombres de función que ya existan dentro del idioma, o recibirás un error. Y aprenderás a medida que avanzas por lo que es una palabra clave, lo que no lo es. Y una palabra clave sería algo así como VAR ahí o variable. Ahora, tal vez te preguntes cuándo algo así podría entrar en una situación. Pero y si tuvieras la deseada una variable llamada pass para representar contraseña, lo que viste al crear el script ese pase en realidad ya es una cosa, así que no podemos hacer eso. Y por último, un nombre de variable debe ser corto pero descriptivo al mismo tiempo del dato que contiene. Entonces, como ejemplo, tener una variable llamada name length sería mucho más apropiado y aceptable versus algo como longitud de mi nombre. Ahora, ambos transmiten esa misma información, pero uno de ellos es mucho más corto, es más conciso y general se verá como un mejor nombre de variable. Bien ahora, algo que vale la pena señalar también cuando se trata nuestros errores variables es notar cómo todo esto es minúscula Si tuviéramos algo de esto en algún momento como capital, como ves, vamos a obtener un error de ahí arriba, y solo vemos en la parte inferior la calificación de identificador con una G mayúscula no se declara en el alcance actual. Entonces lo que eso significa es esto, parece que estamos tratando de usar una variable, pero esta variable no existe. Entonces, la capitalización va a ser enormemente algo a lo que pena prestar atención, especialmente a la codificación Bien, así que eso va a terminar aquí por echar un vistazo rápido a las variables Y en la siguiente, empezaremos a mirar algunos de estos diferentes tipos de datos A saber, empezaremos a buscar cadenas. 5. 05 cuerdas: Bien. Hoy, vamos a echar un vistazo a las cadenas. Las cadenas son un tipo de datos. Así que sigamos adelante y saltemos. Todo lo que he hecho aquí es que he creado un nuevo guión, por supuesto, para que las cadenas pertenezcan específicamente a esta lección Ahora, como programadores, ambos estamos definidos y recolectamos algunos datos para almacenar, como viste anteriormente con nuestras variables, y ayuda si podemos clasificar los diferentes tipos de Ahora, el tipo que hemos estado usando se ha llamado cadena. Y una cadena es todo lo que cae entre un par de comillas, sea que las comillas dobles o las comillas simples que mencionamos anteriormente. Entonces nuestro hola o mejor dicho nuestra variable de saludo que estábamos usando estaba conteniendo un dato, y esos datos pueden clasificarse como una cadena para su tipo. Todo bien. Entonces, al asignar una variable, es mejor práctica asignar también el tipo de variable que es Y si seguimos adelante y echamos un vistazo, así que si volvemos y tenemos nuestro saludo ba, fijamos eso igual a hola nuevo mundo como lo teníamos antes. De hecho, podemos establecer esto de dos maneras diferentes. Entonces podemos poner dos puntos después de nuestro nombre de variable y escribir el tipo de datos estamos buscando, que puede ser una cadena. Y se puede ver que esta es una forma en la que podemos clasificarla como una cadena Ahora, alternativamente, podemos usar el operador Morsa, que es un colon justo al lado del signo igual Tenemos dos puntos iguales. Y lo que eso va a hacer es que va a tomar nuestra calificación y vamos a asignarla igual a este dato. Y entonces sea cual sea el tipo de datos que este también es lo que vamos a clasificarlo como Así que ambos vamos a clasificarlo a este dato al tipo de dato al tipo de estos datos y establecerlo igual a estos datos Entonces hay dos formas diferentes en las que puedes hacer y es muy recomendable que lo hagas. Por supuesto, en este idioma, no es necesario, pero sobre todo en proyectos mucho más grandes, esto va a ayudar un poco en el rendimiento, pudiendo clasificar todas las cosas de antemano Bien, entonces lo que podemos hacer aquí es cada clase, en este caso, cadena ahí como viste cuando escribí eso, y cambió a esto más de un color verde Todo aquí tiene un caso diferente. Entonces voy a seguir adelante y crear una nueva variable, y voy a llamarla nombre con una N mayúscula porque ya se toman todas las minúsculas. Entonces voy a decir nombre igual, solo quiero seguir adelante y poner mi nombre ahí. Y recuerda, todavía queremos clasificarlo. Entonces voy a usar aquí al operador de Morsa. Entonces voy a decir dos puntos iguales. Ahora, todo tiene un conjunto de métodos en él. Entonces, si sigo adelante y escribo mi nombre aquí o variable, y hago un punto, puedes ver todas estas cosas diferentes que aparecen, estas son todas las cosas que están relacionadas con una cadena. Y al que vamos a ver específicamente ahora mismo se llama capitalizar Si entramos y acabamos de hacer nombre punto mayúscula, podemos verlo completado Ahora es azul. Tenemos un paréntesis abierto y cerrado ahí, y nuestro error aquí se ha ido lejos de donde esperábamos allí Ahora bien, si envolvemos esa declaración de impresión y jugamos que notaremos dentro de nuestra salida, todo tiene mayúsculas después de cada espacio Entonces aunque haga esto como todo minúscula, como ve aquí y volvemos a ejecutar eso, se puede ver que todavía viene Ahora bien, capitalizar es algo que debes hacer por cosas como nombres y títulos, como cabías esperar Ahora, con el nombre en mayúscula, podrías estar un poco influenciado al pensar que va a hacer de todo un capital, pero no lo hace Y aquí es donde Python hace eso mejor porque lo llaman título, que me parece más apropiado. En este caso. Pero de cualquier manera, notas así es como funciona capitalizar. Y de igual manera, podemos hacerlo todo mayúsculas y podemos hacerlo todo minúsculas Entonces todo lo que tenemos que hacer aquí es en lugar de llamar a mayúsculas, se puede decir que podemos hacer dos subrayados superior Y si ejecutamos eso, vamos a tener todas las capitales. Nos falta un paréntesis ahí, que es lo que nuestro error nos decía ahí abajo en la parte inferior Ahora si echamos un vistazo así vemos que todo está ahora en gorras. Y si lo hicimos al revés, así que si tenemos todas las mayúsculas, y lo hicimos para subrayar más bajo con nuestros paréntesis abiertos y cerrados, ahora todo va a estar en Para que podamos hacer que las cosas se capitalicen. Para cosas como títulos y nombres. Podríamos hacer las cosas en mayúsculas, y podemos hacer las cosas en todas las minúsculas. Ahora, con cadenas, también podemos sumar estas juntas, y podemos usar algo llamado podemos usar lo que se ve como un marcador de Entonces, por ejemplo, volvemos aquí. Va a golpear Control Z o Control Z respaldarlo hasta que tengamos todas las minúsculas aquí Y digamos, por ejemplo, queremos imprimir un saludo. Queremos decir hola. Bienvenido a la programación, y queremos poner el nombre aquí. Pero también queremos poner en. Queremos que el nombre sea dinámico. Entonces tal vez no sepamos cuál es el nombre para cuando lleguemos o deberíamos saber qué es para cuando lleguemos a este punto. Pero quizá no sepamos qué es al principio. Ahora bien, esto podría deberse a que nuestro usuario no ha ingresado no nos ha dicho qué es. O simplemente es algo que no tenemos que podemos cambiar más adelante. Pero todo lo que vamos a hacer es que vamos a hacer signo de porcentaje y S minúscula Ahora bien, esto es un marcador de posición para una cadena, y todo lo que tenemos que hacer es fuera de las comillas, pero dentro de nuestros paréntesis todavía, hacemos un porcentaje y podríamos escribir aquí nuestro nombre de variable, que es solo nombre con N. Y si ejecutamos eso, podemos ver que donde ese porcentaje S es con cualquiera que sea el valor de nuestro nombre de variable o el valor de nuestra variable. Ahora bien, esto cambia ligeramente hacia arriba. Si quieres usar múltiples variables, así vamos a seguir adelante y decir crear otra. Y diremos llamémoslo trabajo y lo configuraremos para que se caracterice, y diremos, Hola, bienvenidos a la programación por ciento S. Eres un porcentaje. Ahora bien, podrías pensar que podríamos simplemente hacer otro así, o puedes pensar que simplemente hacemos otro trabajo por ciento ahí dentro. Pero en serio, lo que hacemos es que aquí tenemos nuestro signo de porcentaje, y usamos corchetes. Ahora dentro de aquí, aquí es donde podemos poner aquí todos nuestros nombres de variables, separados por una coma en el orden en que queremos que aparezcan Entonces si ejecutamos eso, podemos ver que todo se llena, y quieres asegurarte de que lo rellenas incorrectamente porque nuevamente, el orden que lo rellenas aquí es el orden que se va a rellenar en la oración. Y obviamente, esto no tiene sentido. Bienvenido al profesor del programa. No suena bien. Así que solo tenlo en cuenta. Señalando también, si tienes múltiples cosas aquí, como si vamos así, ¿verdad? Si tenemos demasiadas variables listadas, está perfectamente bien. No vamos a toparnos con ningún tema. La única vez que nos vamos a encontrar con un problema es si no tienes suficiente. Ahí es cuando nuestro error va a, supongo que ya no tienen ningún error aquí. ¿Qué ves? Lo sé, ahí simplemente no se presenta como un error. Lo que esperaba. Pero aquí en la consola, más bien, dice que no hay suficientes argumentos para formatear cadena o para cadena de formato. Entonces nos está diciendo que aquí no tenemos suficientes argumentos que realmente deberían haber aparecido más como un error. Pero se puede ver que aparece. Sólo vuelve a ponerlos en el orden correcto. Entonces, si estás llenando la información, solo asegúrate de tener suficiente información y la estás llenando en el orden correcto. Ahora, voy a decir alternativamente, podrías rellenar esto de otra manera. No obstante, ocupa más espacio, se ve más desordenado, tártaro Y por eso, estamos hablando hacer básicamente esta adición. Bien, así que así, boom, otra vez, para que podamos hacer algo así. Y ya ves, puedes hacerlo de esta manera, pero se veía un poco más problemático o no tan bonito, pero ciertamente puedes hacerlo de esta manera. Y me falta un espacio entre ahí y aquí. Y ya verás si lo imprimimos, eso nos va a dar el mismo resultado. Entonces esas son dos formas diferentes en las que puedes usar tus variables dentro de tus cadenas. Todo bien. Entonces eso lo hará por cuerdas. Vamos a seguir adelante y pasar a ver algunos otros tipos de variables a continuación. 6. 06 Enteros y flotadores: Bien. Hoy, vamos a echar un vistazo a los números, como probablemente puedas ver por mi nombre de guión. ¿Ahí? Ahora, los números en programación se pueden dividir en dos categorías diferentes. Ahora bien, los números en la programación o mejor dicho se utilizan en la programación para todo tipo de cosas como mantener la puntuación, diferentes tipos de mecánicas de juego, algoritmos, visualizar diferentes datos, algunas de las cosas que miraste que son arte o shaders que pueden haber venido todas de solo matemáticas Ahora bien, estos números se van a llamar un entero o un flotador. Ahora, a un flotador también se le puede llamar número real. Entonces, si alguna vez escuchas a alguien hablar de números reales, probablemente esté hablando de carrozas Sigamos adelante y comencemos con enteros. Los enteros son un número entero. Ahora, su clase, si quisieras crear una variable, digamos BinUm si quisieras crear una variable para esto, un entero, simplemente se acorta a INT Eso es. Y un flotador va a ser clasificado así como eso como flotador en todas minúsculas Todo bien. Entonces, si quieres crear una variable, esas son las dos formas en las que hacemos eso, y solo voy a crear otra aquí solo para tenerlas aquí en la parte superior. Así que siempre puedes echarle un vistazo. Ahora, cuando estamos imprimiendo cosas, podemos imprimir números. Entonces, si tecleamos cinco aquí, ve e imprime eso, podemos ver cinco que sale en nuestra consola. Ahora bien, lo que puede ser un poco diferente es que en realidad podemos realizar matemáticas aquí. Entonces, si decimos cinco, eso son diez, y tal vez queremos poner un espacio ahí, hacerlo un poco más legible. Echa un vistazo. Eso va a imprimir nuestro total aquí de 15. Así que en realidad podemos realizar un subconjunto de matemáticas dentro de thes. Y eso lo podemos hacer con suma. Podemos hacerlo con multiplicación. Podemos hacerlo con sustracción. Y claro, lo podemos hacer con división, como pueden ver ahí. Y ves división en este caso, nos ha dado un depurador, y eso es porque la división entera entra en una parte decimal Se descartará el corazón decimal. Entonces esto no va de manera desigual. Esto en realidad nos devuelve una carroza. Y como estamos dividiendo dos enteros, en realidad no nos lo sacamos a la luz. Entonces conseguimos cero, pero no conseguimos nada después de ello. Y eso es lo que nos está diciendo ese error ahí en el depurador Y llegaremos a eso cuando toquemos carrozas aquí en un momento Pero lo que también podemos hacer es apoyar a exponentes y raíces cuadradas Entonces ejemplo aquí, podemos hacer P, lo que nos da un número al poder, algo más o un exponente Entonces si decimos dos, ponemos un Tama. Como ve ahí, tenemos nuestro número base seguido de nuestro exponente. Si le decimos dos al poder vamos con cinco. ¿Todo bien? Vamos a ir por las reglas de los exponentes, vamos a tener dos veces dos por dos por dos por dos por dos Entonces eso nos daría dos por dos, que es cuatro por dos, que es ocho, por dos, que es 16, por dos es 32. Entonces, si ejecutamos esto, deberíamos obtener 32 como resultado. Ahí vamos. Entonces vemos que hacemos exponentes fuera. De igual manera, también podemos obtener la raíz cuadrada de algo con SQRT, y la misma situación aquí Situación similar. Pasamos en un número. En este caso, vamos a hacer con 32. Y lo pasamos adentro. Veremos qué tiempos en sí nos darán 30 o sí, qué veces en sí nos darían 32. ¿Cuál es la raíz cuadrada de la misma? Y vemos que eso nos da un flotador aquí. 5.6 5685, 42, 4942, tres, ocho. Ese es un número largo, pero si multiplicas ese número por sí mismo o consigo mismo, obtendrás 32. Como ves, le dimos un entero y recuperamos un flujo. Y con raíz cuadrada, eso es ciertamente posible con exponentes que no va a suceder a menos que, claro, usemos un flotador para empezar Y como se puede ver, raíz cuadrada está esperando un flotador para el primer argumento. Entonces es por eso que esto esencialmente se está convirtiendo en un flotador, que sería lo mismo que hacer 32.0 En este caso. Ahora, puedes usar cualquier combinación de matemáticas que quieras aquí, así puedes usar cualquier combinación de usar todas esas juntas. Digamos, por ejemplo, tenemos cinco más entre paréntesis tres a la potencia de 7/3, para luego restar nueve Ahora ya sea que estemos usando la cama Señorita, bod Señorita PEMDS, sin embargo uber enseñó el orden de operación, vamos a estar mirando nuestros corchetes o paréntesis Son paréntesis. No sé por qué algunos lugares llaman a los corchetes, pero paréntesis Entonces en ese caso, primero vamos a estar mirando dentro de aquí. Entonces vamos a mirar a los exponentes. Entonces lo primero que vamos a hacer son nuestras matemáticas aquí. Entonces tres al poder de siete. Y entonces tenemos que hacer lo que hay dentro de los paréntesis. Entonces tenemos que dividirlo por tres, ¿verdad? Porque lo siguiente es nuestra multiplicación y división. En este caso, solo tenemos división, así que vamos a dividir eso por tres. Eso nos deja ahora con cinco más nuestro resultado aquí, luego restar nueve y sumar la resta podría hacerse mismo tiempo, simplemente yendo de izquierda a derecha Y si haces todas esas matemáticas, obtendrás una salida de 725. Todo bien. Entonces no importa. El orden en que hagamos esto bien, el orden en que lo escribimos. El orden se va a hacer de la manera correcta, y podemos mezclar y combinar todos los diferentes Básicamente, puedes hacer cualquier fórmula matemática aquí. Bien, entonces ahora cuando miramos carrozas, dije que teníamos cinco menos diez Entonces si volvemos aquí a esta situación, teníamos cinco menos diez, y lo hacemos y conseguimos un pequeño depurador, perdón, no menos divide Y tenemos un pequeño depurador diciendo: Oye, este es el flotador y todo app a cero se está quedando fuera. Bueno, ¿y si queremos eso? Bueno, tenemos que convertir uno de estos en un flotador. Entonces, o tenemos que hacer tenemos un número sólido como este. Podemos hacer 0.0 en uno de ellos. Y ya ves ahora en realidad podemos obtener nuestro número decimal. O lo que podemos hacer es que podemos hacer punto, y todavía tienen esto? No, no lo hacen. No aparece. Entonces lo que podemos hacer es simplemente escribir la palabra lot y rodear uno de nuestros números dentro de un paréntesis Eso va a convertir nuestro diez en una carroza. Para que podamos hacerlo de esa manera también. Si no necesariamente sabemos cuál es el número eso se está ingresando en él, si eso tiene sentido. Entonces, si tienes un usuario escribiendo números, no necesariamente sabes si eso va a ser un número entero o flotante en el que el usuario escribe. Así que sólo podemos convertirlo en su momento, ¿no? Entonces así es como arreglaríamos ese problema ahí. Simplemente convertimos uno de ellos en un flujo. Ahora bien, en código, cualquier número que tenga un punto decimal se llama flujo. Y usamos este término en la mayoría si no en todos, los lenguajes de programación como mencioné anteriormente, les puede llamar un número real. Y todos los idiomas deben estar cuidadosamente diseñados para administrar adecuadamente estos números decimales. Como usuario, por supuesto, solo usando el idioma, no tienes que preocuparte por cómo lo está manejando el idioma. Sólo debes saber que se está manejando. Y mientras el idioma lo esté manejando bien, eso es todo lo que debes preocuparte. Ahora bien, cualquiera de las expresiones matemáticas que ya miramos, también podemos hacer eso con carrozas No son exclusivos de enteros. Y como viste ahí mismo con nuestro 5/10, y convertimos uno en un flotador, puedes usar enteros y flotadores juntos al mismo tiempo 7. 07 Constantes y comentarios: Bien. Ahora, antes de seguir adelante, sí quiero hablar de una variable especial llamada constantes, y quiero hablar de comentarios Ahora bien, estos son temas pequeños, así que solo voy a hacerlos los dos aquí en el único video, y solo debería tomar un par de minutos. Una constante difiere de una variable. Ahora bien, recuerdas cuando dije que podíamos cambiar lo que es una variable o podemos cambiar su valor en cualquier momento. Bueno, una constante es una variable especial, y esta variable especial no puede cambiar su valor una vez que se establece. Entonces, una vez que se establece ese valor, nunca se puede cambiar, y simplemente es lo que es. Entonces, si intentas cambiarlo más tarde, deberíamos encontrarnos con un error que aparece en nuestro código. Y podemos seguir adelante y echarle un vistazo a eso. Y todo lo que tenemos que hacer para crear algo llamado constante en lugar de una variable típica es hacer CONST en lugar de VAR Y como ves, tenemos algunos pop ups que aparecen ahí abajo en la parte inferior. No te preocupes por ello. Pero constante podemos llamar. Y otra vez, si lo llamamos MAMÁ, y a ver, todavía tenemos un error aquí porque está esperando que ponga la constante a algo. Entonces si configuro eso para decir cinco, pool en es igual a cinco, mira, ahora el error desaparece, se ha establecido la constante. Ahora bien, el tema aquí no es realmente un problema, pero si bajamos aquí, intentamos poner mi num a un número diferente, veamos si el error es, lo es. Ahí está. Entonces ves que no puedes asignar un nuevo valor a una constante. Es lo que aparece ahí abajo. Y vemos esto en la línea siete carácter cinco. Uno, dos, tres, cuatro, cinco, así que al final de nuestro nombre de variable porque estamos tratando de establecerlo al final del nombre, lo cual tiene sentido. Así es como pones las cosas aquí. Entonces vamos a llegar a este error. Entonces solo quieres usar cosas con consentimiento que no están destinadas a ser cambiadas. Como si estás creando un juego o una aplicación que tenga una conexión online entre usuarios, probablemente vas a establecer esto en una cantidad máxima de usuarios o una cantidad máxima de jugadores para cada uno de tus servidores. Entonces solo quieres usar constantes para cosas que nunca van a ser cambiadas pipa vuelve a entrar ahí otra vez, limpia esos temas . Ahora, un comentario. Un comentario puede ser a la vez bueno y malo. Entonces no son exclusivamente de una manera u otra. Simplemente depende cuándo debes y no debes usarlos. Ahora bien, los comentarios son como notas menores que puedes dejarte a ti mismo para explicar qué está pasando dentro de la pieza de código, por qué hiciste algo de una manera específica o cualquier otra cosa que necesites. Ahora, un comentario está en realidad en la pantalla ahora mismo, y lo has estado viendo todo este tiempo. comentarios pueden ser útiles para cualquier futuro desarrollador que tenga que mirar el fragmento de código que alguien más haya hecho, o tal vez trabajaste en él en algún momento, entonces alguien más viene a mirar. Y un comentario, como dije, ya está en pantalla, y tiene esto puede que lo conozcas como símbolo de hashtag, o si eres un poco mayor, quizás lo conozcas como símbolo de libra. Y nos instalamos justo arriba donde tenemos listo nuestro guión bajo Tenemos este hashtag y dice llamado cuando el nodo entra en el árbol de escenas por primera vez. Ahora bien, eso, ya que lleva el prefijado ese símbolo de hashtag, este es un comentario en este idioma Ahora, en algunos idiomas, puede que tengas que hacer el doble slash, así para crear un comentario Pero en el guión GD, solo tenemos ahí nuestro pequeño símbolo de hashtag Ahora, también puedes usar esto para comentar una línea de código. Y la razón por la que podemos hacer esto es porque cualquier cosa con un comentario que se haya comentado se omitirá cuando se ejecute el código Entonces si tenemos impresión e imprimimos, mente num aquí, si seguimos adelante e intentamos esto, se va a imprimir como se esperaba. Pero también podemos poner aquí esta pequeña etiqueta hash, y está comentada. Ahora es sólo quejarse porque no tenemos nada después de nuestra función lista aquí, así que simplemente voy a seguir adelante y volver a poner el pase ahí Y ya ves ahora no se imprime porque se salta Ahora, ¿y si tenemos mucho código A lo mejor estamos probando cosas. No está funcionando. Quiero probar un par de métodos diferentes, pero no necesariamente queremos deshacernos del intento que ya intentamos. Bueno, en realidad podemos comentar grandes secciones de código con una tecla de método abreviado. Y para ello, todo lo que tenemos que hacer es que vamos a destacar todos los trozos que quieras Decir que queremos eso, queremos mantener el final en el principio. Todo lo que tenemos que hacer es resaltar estas piezas y presionar Control K. Ahora, si quieres retroceder, este podría ser el Comando K, sé que les gusta usar comando en lugar de control, creo, para muchos de sus atajos. En general, el Control K no funciona. Prueba Comando K. Pero eso es todo lo que tenemos que hacer, y eso es comentar toda esa sección Ahora, de igual manera, si destacamos todos esos y volvemos a golpear Control K, podemos descomentar todos esos a la vez Y bien, entonces hay comentarios y cómo funcionan. Más adelante, hablaremos de un código limpio más hacia o más cerca hacia el final de este curso, donde repasaremos un poco más sobre cuándo debes usar comentarios, cuándo no deberías. Cuáles son los buenos comentarios, cuáles son los malos comentarios. Pero por ahora, eso es lo que son los comentarios, y esas son las constantes Yo sólo quería que supieras sobre esos. Y vamos a seguir adelante. Te veremos en la siguiente. 8. 08 Listas: Todo bien. Sigamos adelante y echemos un vistazo a una lista. Otro nombre para estos también son array ARRAY, pero más comúnmente referido, al menos de mis experiencias como una lista. Entonces, ¿qué es una lista? Una lista es un grupo recolectado de artículos que se ponen en un orden determinado, y se puede hacer una lista que contenga cualquier tipo o cualquier combinación de diferentes datos Así podemos tener enteros y flotadores y cadenas todos combinados en una sola lista Ahora, tu lista no necesita estar relacionada. Los elementos no necesitan estar relacionados entre sí. No obstante, tendría sentido si lo fueran. Piensa si teníamos diferentes tipos de pizzas, ¿verdad? Y cada uno de esos diferentes tipos de pizza tenía una lista de coberturas Y luego tenían algún otro elemento aleatorio ahí. Tenían quien lo hizo o quien hace ese tipo específico. No está realmente relacionado, así que probablemente haya una mejor manera de manejar ese tipo de situación. Pero las listas están indicadas por sus corchetes, al igual que cuando estábamos usando nuestras variables dentro de nuestras cadenas con esos marcadores de posición, una lista está rodeada de corchetes Y esos corchetes, cada elemento está separado por una coma Entonces, sigamos adelante y echemos un vistazo a una lista de abarrotes. Vamos a abarrotes. Tenemos nuestros corchetes, y vamos los tomates. O, ¿sabes qué?, vamos a ir singulares. Vamos a ir tomate, encurtidos. Gota y bollos. Bien, así que si tuviéramos que imprimir esto, Si tuviéramos que imprimir estos abarrotes, verás que vamos a tener corchetes ahí abajo en Probablemente no quieras los corchetes. Probablemente no quieras, ese tipo de salida. Es posible que estés buscando un artículo individual. Bueno, echemos un vistazo a cómo podemos acceder a elementos individuales de esta lista. Para acceder a un elemento o elemento dentro de la lista, solo necesitamos decirle a GD Script la posición de índice del elemento que estamos buscando Entonces, si seguimos adelante e imprimimos esto, así que si hacemos abarrotes, ponemos un par de corchetes después de eso, y ahora podemos poner un número Y estos números en realidad comenzarán en cero. Entonces, aunque contemos uno, dos, tres, cuatro, una computadora va a comenzar en cero. Entonces el tomate va a ser cero, encurtidos uno, ketchup dos, y Entonces, si hacemos cero abarrotes, e imprimimos eso, vemos que ahí vamos a meter tomate Si hacemos brotes de fila uno, vamos a conseguir encurtidos. Ahora bien, si salimos fuera de servicio, por ejemplo, si vamos cuatro porque contamos uno, dos, tres, cuatro artículos, estamos como, Bien, queremos el ítem número cuatro, vamos a tener un error porque cuatro en realidad sería el quinto ítem. Entonces, lo que realmente queremos son tres para obtener ese último artículo allí, o bollos si estás obteniendo el artículo equivocado, solo asegúrate de ir por el valor del índice y no por el número de artículo He visto a bastantes personas confundirse eso o confundirse en esa mezcla. Ahora bien, como en este caso, estas son cadenas, podemos usar cosas que hemos aprendido antes. Entonces podemos usar como dos superiores, por ejemplo, y obtener una mayúscula. Uy. Aquí vamos. Como puedes ver ahí. También podemos bajar, capitalizar y todo eso Veamos una vez que ponemos esto.in aquí, estamos consiguiendo una buena lista fantástica Pero puedes ver todas las cosas normales que tenemos ahí dentro con todas las cuerdas. Entonces podemos hacer nuestro capitalizar superior o inferior. Ahora bien, ¿y si quieres mantener todo a un tipo de conjunto? Entonces, establecer esto en una lista como esta sería el equivalente a ir así y configurarlo en una matriz, lo cual está bien. Una matriz puede todos los diferentes tipos de artículos. Pero si quieres acostarlo aún más o tal vez solo quieres exprimir ese ligero rendimiento más, lo que podemos hacer cuando lo estamos declarando como una matriz, en realidad lo escribimos así Le damos los corchetes, y en el interior, declaramos qué tipo puede estar aquí. Entonces en este caso, todos los míos son cuerdas. Entonces voy a usar cadena para el interior. Y lo que esto significa aquí, el elemento de corchetes apretado, y luego corchetes otra vez, theta apretado justo al lado de nuestra declaración de una matriz le dice a nuestro script o código que solo una cadena puede estar aquí Entonces si ponemos un número, un entero, vamos a obtener error. Entonces así es como podemos acotar nuestra lista a un tipo específico y exprimir solo ese poco más rendimiento, ese pequeño extra. Pero de nuevo, a menos que trabajes en algo que sea más un gran proyecto, probablemente no te des cuenta. Y así, simplemente llamarlo una matriz normal o usar la Morsa estará bien Ahora bien, algo que no mencioné antes es cuando estamos mirando cadenas, realidad podemos obtener la longitud. Entonces, si obtenemos luz, así, en realidad obtendremos la longitud de ese personaje o ese elemento. Entonces en este caso, vamos por el índice tres, que es bollos. Queremos la longitud, y eso nos va a dar cuatro porque tenemos cuatro caracteres, B, U y S. Ahora bien, lo que es diferente es una cadena. También se puede acceder al índice de una cadena. Entonces, si tuviéramos que entrar aquí y pedir el índice uno, de esa cadena, vamos a obtener la letra U porque cada carácter tiene su propio índice dentro de la cadena. Entonces B es cero, U es uno, N es dos, y la S es tres. Entonces estamos accediendo al tercer elemento. Estamos entrando en nuestras compras, obteniendo el tercer valor del índice, y estamos obteniendo el tercer valor de índice de ese artículo Ojalá eso tenga sentido, y no sea demasiado confuso. Pero si quieres solo el anverso o el reverso de una lista automáticamente, en realidad podemos obtener el índice de uno negativo, y eso siempre nos dará el último ítem de la lista, que en este caso, bollos Pero alternativamente, también podemos en nuestra lista de abarrotes, puedes simplemente una especie de frente de punto Obtienes el primer artículo, que sería el jitomate. Ooh. Ahí necesitamos un paréntesis más Podemos llamar a dot front para jitomate, y podemos llamar dot Bat. Obtenemos el último ítem de la lista. Entonces, si no quieres usar un índice, puedes simplemente llamar a punto frontal o Dot Back si quieres obtener el primer artículo o último artículo. Ahora, ya que en este caso, todas son cadenas en eso, recuerden, todavía podemos usarlas dentro de una oración. Entonces vamos a estar como, cariño, todavía necesitamos conseguir algunos, y usaremos nuestros porcentuales, y por lo tanto nuestro jugador y ahora solo podemos seguir adelante e insertar lo que necesitamos aquí Entonces podemos seguir adelante y podemos reemplazar el primer marcador de posición con abarrotes, y llamaremos a ese índice Vamos con el índice dos, y luego podemos llamar Vamos con capitalizar Ahora si lo imprimimos, me falta un paréntesis al final ahí Vamos. Entonces ahora podemos ver aquí nuestra declaración. Tenemos nuestro artículo siendo insertado y está siendo capitalizado Entonces tenemos una K mayúscula para comenzar, lo que funcionaría bien si tuviéramos una lista de marcas, por ejemplo. Y por supuesto, puedes hacer esto y rellenar varios artículos también. Bien, así que eso lo hará para su introducción a las listas aquí. Continuaremos con algunas características más en el siguiente video. 9. 09 Añadir y eliminar: Bien, vamos a seguir usando nuestro mismo script para este, ya que seguimos hablando de listas, y solo vamos a seguir adelante y hablar de cómo podemos agregar vamos a seguir adelante y hablar de cómo podemos agregar elementos a nuestra lista Entonces para hacer eso, lo estamos viendo, y la mayoría de las listas pueden ser la mayoría de las listas que creamos son dinámicas, ¿verdad? Lo que significa que se pueden modificar. Estamos usando variable. No lo estamos haciendo a una constante. Obviamente, una constante no puede ser modificada. Y la mayoría de los que vamos a crear van a ser a zivar que será dinámico, lo que significa que podemos agregar y eliminar elementos hacia y desde esa lista Ahora, podrías usar una lista para hacer un seguimiento de qué misiones tiene un jugador en un juego, por ejemplo. Por lo tanto, necesitas poder agregar otros nuevos, eliminar unos una vez que hayan sido completados. En términos de datos, podemos usar una lista para usuarios registrados. Ahora la forma más sencilla para que agreguemos a una lista sería llamar al método append Entonces, si vamos a abarrotes, podemos llamar a una pluma así punto append, y luego lo que escribamos dentro de aquí se agregará a Entonces, si seguimos adelante y agregamos, vamos a ir con algunos Pringles, ¿verdad? Escribimos eso en. Sigamos adelante e imprimimos nuestros abarrotes antes y después Y podemos ver la diferencia antes y después de que se haya agregado a la lista. Y ves que un bolígrafo va a agregar un ítem a la lista, y lo va a agregar al final de la lista. Entonces va a terminar o agregarlo al dorso de la lista. Ahora, el uso de un bolígrafo nos permite agregar elementos de manera fácil y rápida a una lista dinámica, lo cual es fantástico. Y eso significa que también podemos comenzar con una lista vacía. Entonces, si entramos aquí, solo voy a comentarlo, para que podamos ir con lo mismo aquí. Y sólo vamos a hacer de esta una lista vacía. Ahora bien, si empezamos con esta Z podemos comenzar con algo vacío y podemos agregarle. Eso también va a funcionar. Es igual de fácil. Y crear una lista como esta es común, así que no siempre conocemos los datos que necesitamos agregar hasta que el programa se esté ejecutando. A veces tenemos una lista fija de opciones, y otras veces tal vez vamos a agregar a una lista en el futuro. Así que siempre es bueno saber cómo podemos agregarle. Ahora bien, ¿y si queremos insertar en una lista? No queremos agregarlo al final, pero queremos insertarlo en él. Bueno, en lugar de agregar un elemento a una lista, es posible que necesitemos insertar un elemento en una lista. Y para insertar un ítem en una lista, se necesitan dos parámetros. Y eso solo significa dos cosas en las que pasamos. Entonces, cuando hicimos una pluma y pusimos un ítem aquí, esto sería un parámetro. Y cuando insertemos un ítem, va a tomar dos de estos parámetros. Así que volviendo a nuestra vieja lista aquí otra vez, Solo respalde eso. Ahí vamos. Y la posición de la primera es la primera posición y la segunda el valor. Entonces vamos a seguir adelante y llamar a insertar aquí, y ya podemos ver. Lo primero que ponemos es la posición. Entonces digamos que queremos ponerlo en posición dos, en el índice dos. Entonces ahora mismo, el índice dos es el ketchup. Entonces queremos poner algo entre los encurtidos y el ketchup Entonces vamos a tener encurtidos, nuestro nuevo artículo, y luego ketchup Entonces después de poner nuestro índice, poner coma, y ponemos en nuestra nueva variable o lo siento, nuestro nuevo ítem, que voy a volver a ir a Pringles Y si imprimimos eso, podemos ver pringles se pusieron entre encurtidos y Me insertaron como índice número dos. Así que no sólo podemos agregar al final, sino que podemos insertar un ítem en un punto específico dentro de nuestra lista. Ahora, cuando un nuevo artículo se inserta en una lista en nuestra posición de caso, uno de nuestros artículos se pone en el medio, bueno, en nuestro caso, dos y tres, y tenemos un artículo completamente nuevo. Fantástico. Ahora bien, el hecho que podamos agregar a la lista e insertar en una lista es genial. Pero, ¿y si necesitamos eliminar un artículo de tu lista? Bueno, eso lo podemos hacer fácilmente. Todo lo que tenemos que hacer es llamar dot remove Y en este caso, con el nuevo sistema aquí, se refiere a eliminar en Y solo seguimos adelante y pasamos en el índice, ¿no? Entonces si pasamos en dos ahora, pasamos en dos. Esto va a eliminar el ketchup, así que sólo vamos a tener tomate, encurtidos Eso es lo que deberíamos tener cuando ejecutemos esto ahora. Entonces ahí tienes. Hemos quitado el artículo en el índice dos. Por lo que quitar artículos es bastante sencillo, como puedes ver ahí. Ahora, va a haber casos en los que quieras, es posible que quieras obtener un artículo y eliminar el artículo al mismo tiempo. Y podríamos hacer esto en múltiples líneas de código, pero no tenemos que hacerlo porque en realidad podemos sacar esto. Y digo pop porque ese es el nombre de estos dos métodos que vamos a aprender aquí, y eso es pop front y pop back. Entonces, si hacemos Pop, subrayado, frente, y ya ves cuando volvamos a imprimir abarrotes aquí, va a faltar el primer artículo Pero esto en realidad no sólo lo elimina, similar al remove, quita eso que acabamos de hacer. Pero esto también devuelve ese artículo frontal. Entonces, si tuviéramos que almacenar esto en una variable y llamar a este ítem, esto en realidad va a devolver eso, y ese primer ítem de nuestra lista, que será nuestro jitomate que se elimine, se va a asignar a ítem. Entonces, si después imprimimos artículo, vamos a conseguir ese tomate. Y es el mismo concepto. Si salimos por la parte de atrás, vamos a conseguir el último artículo, que serán bollos Por lo que los artículos serán iguales a los bollos. Bien, entonces va a seguir adelante y gritarnos ahí. Entonces lo que querrías que hiciéramos es porque no puede implicar cuál es el tipo, tendríamos que declararlo manualmente así. Entonces hay algunas situaciones en las que no podrás conseguir con esa declaración inferida automática Y tendrás que hacerlo tú mismo. Este es uno de esos pocos casos en los que necesitarías si eliges ir por esa ruta, que probablemente deberías. De nuevo, sólo algo a lo que acostumbrarse. De esa manera, siempre podrás obtener el máximo rendimiento que puedas. De esa manera, si reduces la cantidad de optimización que tendrías que hacer más tarde. Y lo último que vamos a echar un vistazo en este video es que vamos a echar un vistazo a cómo podemos borrar un ítem, aunque no sepamos o dónde está ese ítem en nuestra lista. Si yo solo vamos a volver a imprimir nuestros abarrotes otra vez, y ya no necesitamos esa variable Lo que vamos a hacer es que podemos llamar eras punto. Y para esto, en realidad podemos simplemente escribir el valor. Para que podamos entrar y podamos decir Keto. Ahora, recuerda que esto es sensible a mayúsculas y minúsculas cuando se trata de resortes. Entonces una K minúscula no va a ser lo mismo que una Aunque para nosotros, se ve igual, o lo consideraríamos igual. En código, hay dos cosas completamente distintas. Entonces, si llamamos borrar y simplemente pasamos el valor real, podemos entrar y podemos ver que va a ser borrado sin importar dónde esté en nuestra línea. Ahora bien, se puede pensar, ¿y si tenemos múltiples valores que son iguales, y llamamos borrar? Bueno, sólo va a eliminar o borrar la primera instancia con la que se encuentre, así que va a pasar por ella va a decir, ¿esto coincide con lo que estamos buscando? No. Es esto, no. Es esto Sí y eliminar. Y ahí va a parar. Entonces, si quisieras borrar múltiples, tendrías que seguir atravesando en este momento. Aprenderemos de una mejor manera si quisieras borrar todas las instancias de un valor específico. Pero por ahora, sólo va a eliminar un artículo. Bien, eso lo hará para la lección de hoy o esta lección. Solo tenemos un poco más que aprender sobre las listas antes de poder seguir adelante. Entonces viene una lección más. 10. 10 Empujar y clasificar: Ahora mismo en nuestra lección final sobre listas, vamos a estar viendo los métodos push y cómo podemos organizar nuestra lista y obtener la longitud de nuestra lista. El método push, hay dos de ellos. Nos permiten alterar el contenido de la lista. Hay empuje frontal y empuje hacia atrás. Ambos toman un argumento y ese es un valor. Ahora, al usar push front, nuestro valor se agrega al inicio de la lista, igual que si usaras insert en el índice cero. Así mismo, cuando usamos push back, nuestro valor se agrega al final de la lista, al igual que cuando usamos append Entonces, si tuviéramos que echar un vistazo a esto, entonces podemos tomar nuestras compras y podemos usar push front, y agregaremos en nuestros Y si echamos un vistazo a eso ahora, vamos a tener pringles empujados al frente de nuestra lista Y de igual manera, podríamos usar push back para que lo envíen al dorso de nuestra lista. Ahora, personalmente, suelo terminar usando un pend cuando quiero al final de la lista Pero sí tenemos el pushback alternativo para ponerlo en la parte trasera, claro, empujar al frente en lugar de insertar en la cubierta cero Los métodos push son así de simples. No es un concepto nuevo. Son solo dos métodos más en los que puedes pensar como una forma alternativa de hacer esto. Ahora, a la hora de organizar nuestra lista, puedes ver que en la mayoría de los casos, nuestras listas se crean en un orden impredecible medida que nuestro programa se ejecuta y a medida que le agregamos cosas. Y no siempre puedes controlar ese pedido, especialmente si estás haciendo que el usuario ingrese un montón de artículos. Y por ello, el problema se vuelve inevitable, de verdad. Pero estamos de suerte. Dentro de GD Script, se nos permite ordenar nuestra lista usando un método simple llamado SRT Ahora, SRT comenzará a clasificar nuestra lista en orden alfabético, y esto también cuenta para los números Va a ir en orden para nuestros números. Ahora bien, vale la pena saber que los números se incluyen aquí en otros idiomas, tener números como una lista que contiene uno, tres, y 025 o 025 se ordenaría en el orden de 1025 y tres, mientras que en GD script aquí 025 y 25 se leen como el mismo número exacto, permitiendo que nuestro tipo sea un poco más preciso de lo que puede haber Bien, así que echemos un vistazo si corremos sort, y luego lo imprimimos de nuevo. Después, podemos echarle un vistazo y podemos ver el aspecto normal, y luego tenemos una mirada ordenada que entra en juego aquí. Ahora bien, esto también corre con nuestros números. Entonces, ¿qué pasa si tenemos números como este corriendo, e intentamos ordenar Bueno, ya ves, aquí nos vamos a encontrar con el error. Porque no es realmente compatible para la clasificación que resolvimos. Entonces, lo que necesitaríamos en este caso es que podríamos tener aquí dos listas separadas, dos separadas. A esto le llamaremos entumecimiento. Haremos nuestro uno, 95, tres, 287. Y si tuviéramos que ordenar este, podemos ver que todos nuestros números se resolverán tal como esperaríamos en orden. Entonces uno, dos, tres, 87, 95. Entonces podemos ordenar una lista de números y podemos ordenar una lista de cadenas, pero no podemos ordenar una lista que tenga números y cadenas. Entonces necesitamos una lista que sea una u otra. Si tenemos una lista que contiene ambos entonces tenemos un problema pasando. Solo tenemos que aceptar el hecho de que no somos capaces de ordenarlo, y tal vez deberíamos volver atrás y repensar cómo estamos organizando nuestras listas que necesitamos Ahora bien, lo que también tenemos aquí es que podemos echar un vistazo a la longitud de una lista. Ahora, longitud cuando obtengamos la longitud, esto en realidad nos va a dar que nos devuelva un número. Y cuando se trata de una lista, en realidad se llama tamaño. Entonces, si imprimimos el tamaño aquí, vemos que vamos a obtener un número. En este caso nos está diciendo cinco. Ahora recuerden, tenemos índice cero, uno, dos, tres, cuatro, pero la cantidad de ítems que tenemos es uno, dos, tres, cuatro, cinco. Y como esto nos devuelve, podemos almacenar esto en una variable, y la llamaremos Lista. Probablemente deberíamos llamarlo tamaño de lista. Pero aquí vamos. Y luego, claro, es como cualquier otra variable, y podemos seguir adelante y simplemente llamarla. Si necesitas obtener el tamaño de una lista por cualquier motivo, y hay bastantes razones por las que te encontrarás en tu viaje que necesitarás saber el tamaño de la lista mientras tu lista puede cambiar dinámicamente, bien, para que eso cubra todo lo que estamos pasando aquí con lista Entonces ya terminamos con la lista, y vamos a seguir adelante. Todavía vamos a usar nuestras listas, pero vamos a cubrir un tema completamente diferente ahora o en la siguiente lección. Bien. Cuídate. Y si necesitas regresar, revisa esto. La sección de lista aquí tenía muchas cosas que repasar. 11. 11 para bucle: Ahora que sabemos cómo crear nuestra lista, editarlas, agregarlas, eliminarlas de ellas y sacar elementos específicos de nuestra lista. Ahora podemos echar un vistazo a otro conjunto de características, otro término básico de codificación, vamos a estar hablando lo que se llama un bucle cuatro. Ahora, a menudo hay ocasiones en las que es posible que deba realizar la misma acción en cada elemento de su lista Por ejemplo, si quisiéramos enumerar todos nuestros artículos, tendríamos que entrar e imprimir todas estas cosas, ¿ verdad? Entonces, sigamos adelante. Entra, abarrotes, y vamos a necesitar el índice cero, y simplemente copiaremos esto abajo Uno, dos, tres, y podemos quitar ese editor. Dirán el índice uno, el índice dos y el índice tres. Entonces normalmente tendríamos que pasar por y hacer algo así si quisiéramos enumerarlos a todos. Ahora, esto es agotador. Es innecesario o innecesariamente ocupa mucho espacio. cuando los hemos pasado por todos, y honestamente, mirando el código, no es un código muy atractivo, mirando lo mismo que sucede una y otra y otra y otra vez. Pero cuando se quiere realizar la misma acción en cada elemento dentro de una lista, utilizamos lo que se llama un bucle for. Entonces, mirando nuestra lista de comestibles ahí arriba, podemos ver que está llena de artículos, y si le agregamos algo, vamos a tener que agregar otra declaración impresa, otra, otra Cada vez que lo eliminemos, vamos a tener que sacar o eliminar líneas de ahí. Es una molestia, es molesto de mantener. Pero somos capaces de automatizar este proceso dentro de este cuatro bucle. Entonces, si queremos imprimir las cosas tal como estamos viendo aquí, todo lo que tenemos que hacer solo comento eso muy rápido. Como decimos, o, y te das cuenta que eso va a cambiar color. Tenemos una palabra clave aquí. Y el siguiente ítem aquí es que puedes usar bastante bien cualquier variable que quieras usar aquí. Esta es una completamente nueva. Si quieres hacer algo que te ayude a mantener las cosas claras, puedes usar item, pero una taquigrafía popular popular es simplemente usar I and I significa item Ahora, hablamos de variables y cómo debería hablarle tu nombre a la persona, debes saber exactamente qué es solo mientras la miras. Y se ha vuelto una práctica común usar I para representar ítem que una vez que te metes en la codificación, vas a reconocer lo que es eso. Y además, si una variable solo va a ser utilizada en un solo lugar, como en este bucle, está bien que tu variable se acorte así. Pero pasando, entonces tenemos cuatro, tenemos una variable para representar nuestros artículos a cuatro I o cuatro artículo, decimos N, abarrotes Y lo que esto está diciendo es que cada vez que atravesamos y hacemos cualquier bloque de código que escribamos aquí, voy a ser igual al tomate, y luego voy a ser igual a encurtidos, entonces seré ketchup, y luego seré bollos Entonces al final de nuestro bucle for, podemos poner dos puntos, entrar de cabeza, bajar a la siguiente línea. Ahora bien, se nota cómo ahora estamos sangrando dos niveles ahora. Esta es la primera vez que tenemos que sangrar un nuevo nivel, así que asegúrate de que tu sangría Al codificar en algunos lenguajes, usan las llaves, pero en lenguajes como Python y GD script, usamos el método indentation Y he visto a bastantes personas idear errores o decirme que algo no está funcionando cuando su problema termina siendo que no están suficientemente sangrados o todavía están sangrados y luego vienen hacia atrás y luego salen Así que mantén un ojo en eso. Y vamos. Así que para artículo en abarrotes Todo lo que queremos hacer es imprimir nuestros abarrotes, Solo queremos imprimir ese artículo. Y eso es todo. Eso es todo lo que tenemos que hacer imprimir, pasar en I por artículo. Eso es todo lo que tenemos que hacer, y vamos a obtener el mismo resultado que ves aquí, ahora, la diferencia es que podemos seguir adelante y podemos agregar tantos ítems como queramos a esta lista. Para que podamos entrar e ir así. De nuevo, ya ves cuántos artículos tenemos empieza a ponerse ridículos. Y esto sucede cuando comenzamos a agregar o agregar más ítems a nuestra lista Y ya ves, no tengo que cambiar mi código en absoluto, y todos se imprimen. No hay problema. Igual que si fuéramos a eliminarlos a todos. Y bajar a dos de repente. Solo tenemos esos dos impresos, no tenemos ningún problema. Estaba de vuelta con esta configuración de impresión, vamos a tener problemas porque en este punto, cuando teníamos todos estos elementos ahí, habríamos tenido que entrar y crear un montón más de declaraciones impresas o lo que sea que queramos hacer a cada entrada. Y ahora que estamos abajo a dos, tendríamos que entrar y modificar nuestro código y eliminar las dos líneas de fondo aquí. Así que cada vez que quieras ejecutar el mismo código en varios elementos dentro de una lista, vamos a usar un bucle de cuatro para eso. Todo bien. Entonces ojalá eso quede claro. Dentro de nuestro bucle de cuatro, nuestro primer ítem aquí es una variable, comúnmente conocida como I, pero puedes hacerla lo que quieras. Soportes para artículos. Entonces, para cada artículo en abarrotes, vamos a imprimir ese Entonces voy a ser igual al jitomate. Y luego una vez que lo imprimimos, voy a seguir adelante y convertirme en pepinillos, y luego lo imprimiremos, y luego pasará al siguiente elemento y así sucesivamente . Sólo hay que respaldar esto aquí arriba. Ahí vamos. Ahora bien, ¿ si queremos hacer algo después este bucle de cuatro se haya completado? Bueno, vamos a darle a Enter para bajar a la siguiente línea. Y ya ves como seguimos sangrando dos líneas. Bueno, lo que podemos hacer es sostener Shift y golpear tabulador para, supongo, outdent, ¿verdad Volvemos un nivel, o simplemente podrías darle una vez al back to base key y eso también te llevaremos de vuelta uno. Y ahora se puede ver que el quilate aquí está alineado con el bucle de cuatro. Eso quiere decir que estamos fuera de ella. Entonces podemos seguir adelante e imprimir ahora y decir, cuatro bucles terminados, y veremos que eso solo va a suceder después de que todo lo demás haya sido impreso. Entonces, si quieres hacer algo fuera del bucle de cuatro, solo asegúrate de tirar de tu sangría hacia atrás un nivel Ahora bien, para ayudarte a evitar errores, asegúrate de que todo como estaba diciendo, como dije antes, asegúrate de que tu ortografía sea correcta para las cosas. G mayúscula para abarrotes y una G minúscula para abarrotes. Aunque para nosotros, son lo mismo. Ambos son abarrotes. Son, por lo que se considera código, dos ítems muy diferentes o dos variables distintas en este caso, y lo mismo con nuestro yo ahí. Entonces decimos cuatro yo a minúscula I, no podemos imprimir en mayúscula I. No va a saber qué es eso Y vamos a tener errores a partir de ahí. Y luego, claro, nuestros niveles de sangría que acabamos repasar. ¿Todo bien? Así que eso completa eso en lo que va un bucle básico de cuatro y principios del mismo. Ahora, puedes hacer lo mismo si tuviéramos un conjunto de números aquí. Si tuviéramos que entrar aquí, tú puedes entrar. Sólo hay que poner un montón de números. Oh, este minum. Entonces ahora, cuando lo hagamos por yo y minum, voy a representar los números tres y luego 675 y luego 23 67 Entonces como ahora tenemos números, también podemos hacer matemáticas con eso, así podemos decir I más 100. Mantén las cosas simples. Y ahí vamos. Ahora podemos ver impresos 103, 775, 123 y 167. Y luego nuestra declaración impresa después nos dice que el bucle de cuatro se ha completado. Entonces, si no tienes cuerda y tienes algo así, podrías realizar algunas matemáticas. Tienes números. Por supuesto, con cadenas, si realmente quieres, podrías insertarlas en un marcador de posición, si eso es lo que querías hacer repetidamente Todo bien. Así que eso da una mirada rápida sobre qué es un bucle de cuatro y cómo podemos usarlo. 12. 12 gama: Algo con lo que podamos usar un bucle de cuatro. Normalmente, cuando queremos hacer algo tal vez una cantidad determinada de veces, pero no necesitamos una lista. No queremos pasar por un número determinado de listas o una lista fija de elementos solo queremos hacer algo una cantidad determinada de veces. Bueno, aquí es donde entran en juego cosas como el rango. Ahora podemos usar range para obtener todos los números entre un conjunto de valores si quisiéramos. Y esto requeriría un par de argumentos presionados en. Si echamos un vistazo al rango, podemos ver esto, bueno, en este caso, solo tiene tres puntos por el momento. Pero el primer argumento va a ser el número menor. Entonces si digo diez, entonces eso lleva un segundo argumento, que sería el número más alto, así que digamos 20. Entonces esto nos daría un rango 10-20 así que sigamos adelante e imprimimos esto en forma de un digamos 44, digamos, N para el número cuatro N en rango. Y vamos a imprimir N y ver qué obtenemos. Bueno, si lo miramos, vemos que tenemos diez, 11, 12, 13, 14, 15, 16, 17, 18 y 19. Entonces no obtienes el último número que está impreso aquí porque una vez que lleguemos ahí, si te lo puedes imaginar, si N sería igual a 20 y 20 no es 10-20. Es de 20. Por lo que no se imprime, y los cuatro bucles terminan. Ahora, de igual manera, podemos entrar aquí y podríamos poner un rango de ¿y si ponemos un rango de apenas 20? ¿Imprimimos eso? ¿Qué obtenemos? Bueno, tenemos lo mismo. Sólo vamos hasta 19, pero estamos empezando desde cero. Entonces si quisiera hacer algo 20 veces, podría poner en el número 20, y pasaría. Es sólo que ya estamos empezando con nuestro índice en cero, empezando contando desde cero y sin contar desde uno. Entonces, usando esto, podemos pasar por un rango establecido de números ya sea desde cero hasta un número o todos los números entre un rango establecido. Ahora, puedes hacer esto por si quieres repetir una acción específica. Podrías hacer esto si quieres hacerlo o recorrerlo basándote en lo grande que es tu lista, ¿verdad? Porque sabemos cómo obtener la longitud de eso ahora llamando al tamaño. Cualquier cosa que te pueda devolver un número, podemos enchufarlo aquí. Eso es realmente todo el rango es para es darnos todos los números dentro de un anillo establecido y luego el bucle de cuatro nos tiene pasando. Entonces una cosa que podemos hacer con esto es, por ejemplo, echemos un vistazo, y podríamos imprimir o mejor dicho, sigamos adelante y creamos una variable. Podemos crear una lista completamente nueva aquí. Entonces llamaremos a este cuadrado, y pondremos esto igual a una lista vacía. Y lo que podríamos hacer es que luego podríamos hacer bolígrafo cuadrado para que podamos agregar a nuestra lista. Y lo que vamos a sumar sería un valor exponencial Entonces queremos sumar todos los números al cuadrado. Entonces los números 0-20 todos al cuadrado. Entonces pondríamos eso en un Posh do exponentes. Entonces voy a decir N por cualquier número que tengamos aquí. Con el poder de dos. Y queremos imprimir el interior? No, vamos a imprimir en el exterior. Vamos a seguir adelante e imprimir cuadrado. Todo bien. Entonces tenemos una lista vacía para comenzar. Vamos a pasar por cada número 0-20, y vamos a cuadrar Entonces vamos a decir cero al cuadrado. Lo que sea que eso iguale es lo que vamos a agregar a esta lista. Va a decir uno al cuadrado, que los iguales entrarán, dos al cuadrado entrarán, tres al cuadrado, y así sucesivamente Entonces, si echamos un vistazo a nuestra lista ahora, se puede ver que tenemos cero, uno, cuatro, nueve , 16, 25, etcétera, hasta el 361 Entonces range es una forma en la que podríamos agregar algunos números a una lista o crear una lista basada en algo que ya existe. Entonces valor preexistente. Todo bien. Entonces eso es todo lo que realmente podemos hacer con eso. Entonces hay cuatro bucles y cómo podemos usarlos lista con una lista. Y hay cuatro bucles y cómo los usamos con rango para repetir un conjunto de instrucciones o una pieza de código por una cantidad determinada de veces. 13. 13 igualdad: Oh, el núcleo de cada cheque. Así que parte muy importante aquí para codificación va a ser la declaración if. Y este es el tipo de cosas que atravesaríamos en la vida cotidiana donde comprobamos si esto sucede, entonces hacemos esto. De lo contrario, hacemos esto, ¿verdad? Entonces, por ejemplo, solo usando tu computadora ahí. Si estás en editor, si presionas K, ponemos K en la pantalla. ¿Verdad? Si golpeamos retroceso, eliminamos el carácter anterior Esa es la idea general de cómo funciona una declaración if. Ahora bien, una declaración if siempre está comprobando para ver si algo es cierto, ¿verdad? Entonces, si presionamos K, lo que hicimos, lo presionamos, lo que significa que ahora es cierto. Entonces su respuesta fue poner a K en la pantalla. Entonces, para obtener estos cheques, tenemos que usar declaraciones if con lo que se llama cheque de igualdad. Ahora bien, una comprobación de igualdad es básicamente verificar si dos elementos son iguales. Y podemos comprobar si dos artículos son iguales, fácil. Entramos y hacemos una impresión. Podemos decir cinco es igual a cinco, ¿verdad? Podemos hacer eso, y si lo imprimimos, vamos a conseguir la palabra verdad. Ahora ten en cuenta cuando hagamos una comprobación de igualdad, esto va a ser un signo de dos iguales, dobles iguales aquí. Entonces, si cinco es igual a cinco, así que si cinco y cinco son iguales, vamos a pasar. Ahora bien, si comprobamos cinco iguales a seis, nos vamos a poner falsos porque cinco y seis no son lo mismo. Son dos cosas distintas. Y esto cuenta con la impresión también. Esto vuelve a nuestras declaraciones anteriores. Entonces, si tenemos tomate con mayúscula y comprobamos si eso equivale a tomate con minúscula y lo imprimimos, ya ves que vamos a conseguir falsos porque aunque para nosotros, es la misma palabra porque uno tiene una T mayúscula y uno es un código minúscula lo ve como Entonces ambos tendrían que ser capitalizados para ser verdad. Entonces eso es todo lo que es el cheque de igualdad. Es verificar si esto es cierto o si estas dos cosas son iguales, entonces podemos hacer algo. Así que sigamos adelante y saltemos, ¿verdad? Podemos decir si, y luego puedes escribir. Entonces si volvemos a hacer nuestros tomates, jitomate. Doble igual a tomate. Y luego terminamos esto con dos puntos y entramos para pasar a la siguiente línea. Entonces ahora estamos sangrados a una cuadra. Entonces, lo que sea que pongamos aquí va a pasar si estos dos son ciertos, ¿verdad? Si esta condición es cierta, lo hacemos nosotros. Lo que vamos a hacer es que sólo vamos a imprimir una cuerda. Estos dos son ciertos. Entonces, si tuviéramos que imprimir eso, seguimos adelante y lo iniciamos y notamos que no se imprime porque a medida que pasamos, T y T minúscula marcan diferencia, así que no son ciertas Pero si agregamos apt T ahí, entonces este bloque sangría va a correr Como ve, estos dos son ciertos ahora están impresos. Ahora, aparte del cheque de igualdad, también podemos hacer un control de desigualdad. Y en el caso de este año, donde tenemos una mayúscula y una minúscula, recuerden, podemos usar Entonces en este caso, si queremos ver si estos dos son iguales, podemos decir si el tomate mayúscula es igual al jitomate minúscula punto capitalizar o verdadero, lo que serían porque capitaliza la primera letra, entonces estos dos volverán Ahora bien, alternativamente, lo que esta alternativa aunque podamos hacer es usar la desigualdad. Y con eso, hacemos podemos hacer signo de exclamación igual. Y eso significa no igual. Entonces el signo de exclamación significa que no. Entonces si tomate, no igual tomate, lo que significa que estamos comprobando si estas dos cosas son diferentes, entonces es verdad, y entramos y entramos en nuestro trozo de código aquí, o bloque sangría Ahora bien, alternativamente, lo que podríamos hacer es que en realidad podemos escribir al principio la palabra, no. Entonces, si no, tomate igual tomate. Y eso nos daría lo mismo que decir, yo el tomate no es igual al tomate. Entonces puedes escribir la palabra o usar el signo de exclamación antes de los iguales, si quieres comprobarlo Hay muchas veces en las que vamos a comprobar si dos cosas no son iguales entre sí para lograr cosas diferentes. Ahora bien, miramos esto un poco con números. Pero lo que podemos hacer es que realmente podemos avanzar a si recuerdas de nuevo en matemáticas, donde teníamos mayor y menor que eso que teníamos que verificar y usar. Podemos usar eso aquí en código también. Entonces podemos decir, por ejemplo, si volvimos a nuestro cinco igual a seis y vamos a imprimir igual? ¿Cinco equivale a seis? No, claro que no. Pero podemos preguntar si cinco es menor o igual a seis. Y entonces podemos obtener nuestra píldora de bloque, que obviamente dice igual, lo cual es cierto, que canta ahí fuera para que sea un poco más precisa, ¿verdad? Entonces, si cinco es menor que seis, menor o igual a. Observe eso. Entonces podría ser seis en comparación con seis, y aún así volvería a ser realidad. Mientras que si solo tuviéramos el signo menos que, volvería falso porque seis no es menos de seis, seis es seis. Entonces podemos usar menos de, menos o igual a, mayor que, lector que o igual a, igual a, y no igual a. Sé que son muchos signos y símbolos de igualdad para que recuerdes, pero ojalá puedas mantener ese tipo de cheques en la nuca. Y podemos usar el s para si dijéramos, digamos que alguien va a la tienda y quiere comprar alcohol. Digamos que son 19 para la edad ahí para comprar alcohol. Y obviamente, vas a tener que mostrar tu identificación, demostrar tu edad, ¿verdad? Y si tuviéramos que codificar este escenario, el cajero va a mirar la identificación, y van a realizar una verificación de igualdad Van a ver si la persona frente ellos si tiene 19 años o más, mayores o iguales a 19, entonces volvemos como verdaderos, y realizaríamos la venta. Si volvieron como debajo, ¿verdad? Entonces, si ese cheque volvía como falso, entonces obviamente, no se lo vendería a ellos. Y ese es el tipo de ruta que sé que algunos de estos jugadores también han ido con los videojuegos. Entonces, si un juego está calificado como M para adultos, eso es, creo, una calificación de 17. Y entonces vamos a comprobar para ver si la persona tiene 17 años o más, mayor o igual a 17, vender el juego, si no, rechazar la venta. Entonces esos son dos ejemplos de cómo este tipo de verificaciones de si y verificaciones de igualdad se traducen a, como, la vida real en estas situaciones del mundo real. Entonces ahora que hemos cubierto una, también podemos cubrir dos condiciones al mismo tiempo. Entonces podemos decir que yo seis es menos de seis, y algo más que decir, y cinco es mayor que dos, entonces sabemos que uno de estos es cierto, ¿verdad? Sabemos que seis no es menos de seis, pero sabemos que cinco es definitivamente mayor que dos. Entonces, si tuviéramos que imprimir esto, veremos, no vuelve a ser verdad, no pasa nada. No llegamos a esta cuadra. Y la razón de eso es porque ambas afirmaciones tienen que ser ciertas porque estamos usando y. Entonces esta pieza tiene que ser cierta, y esta pieza tiene que ser cierta. Entonces, si tuviéramos que cambiar esto a cinco, deberíamos decir si cinco es menos de seis y cinco es mayor que dos, vuelve a ser cierto. Entonces puedes tener múltiples condiciones, y no tiene que parar a las dos, ¿verdad? Puedes entrar y puedes agregar una tercera condición, una cuarta condición, una quinta condición. Probablemente no deberías una vez que tenemos tantas condiciones pasando, pero el punto es que podrías. Puedes tener tantas condiciones como quisieras. Ahora bien, lo que también podemos hacer es no tener que comprobar si uno de estos cómo cambia Baca seis, menos de seis, no tenemos que comprobar si ambos son ciertos Podemos usar el operador u. Y esto comprobará básicamente si esto es cierto o esto es cierto. condición uno es verdadera o la condición dos es verdadera, entonces avanzamos dentro de nuestro bloque de código. Entonces solo necesitamos una instancia para ser verdad cuando usamos O. Necesitamos que todas las instancias sean verdaderas cuando usamos y. Ahora bien, lo importante es si no quieres escribir las palabras y así como o, en realidad podemos usar dos pipas verticales para representar o o podemos usar dos ampersands para representar la palabra y Entonces cualquiera que sea la ruta que vayas con eso, de nuevo, va a ser preferencia personal, ya sea que uses los ampersands o los pipas o los aprisands y pipas o simplemente escribiendo la palabra. No va a cambiar nada. Y por lo que yo sepa, no afecta el rendimiento de ninguna manera. Son solo dos opciones de hacer lo mismo. Entonces, en última instancia, estos regresan como verdaderos o falsos. Entonces, en última instancia, esto es lo que estamos tratando ¿verdad? Entonces básicamente estamos comprobando si es cierto. Entonces, si esto es cierto, entonces claro, lo imprimimos, ¿verdad? Eso es en última instancia lo que estamos haciendo. Pero cuando estamos haciendo los controles de desigualdad, estamos comprobando si algo es falso, ¿verdad? Entonces estamos diciendo que si estos no son si no son iguales, entonces eso es cierto, y nos movemos a nuestro blog. Bien. Ojalá eso tuviera sentido ahí. Había muchas cosas por las hacer malabarismos ahí dentro Si estás un poco confundido, regresa, vuelve a verlo. Pero eso lo hará por nuestros controles de igualdad, controles desigualdad. Un booleano es solo el resultado aquí, ya sea verdadero o falso Y veamos, eso cubre también pasamos por múltiples condiciones ya sea a través y o mediante el uso o. Y hemos comparado números. Obtuvimos mayor que menos de igual a no igual a. Pasamos por aquí mucho. Entonces lo haré por esta sección y pasaremos a bien, continuando con nuestras declaraciones I aquí. 14. 14 si else: Todo bien. Entonces tocamos brevemente las declaraciones if porque necesitábamos para usar las cualidades, los controles de igualdad y los controles de desigualdad y todo eso. Entonces, vamos a sumergirnos un poco más en la declaración I. Ahora, con declaraciones I, te darás cuenta en la sección condicional que estábamos pasando, iniciamos nuestro código con yo, claro, porque queremos comprobar si algo es cierto. Entonces la declaración if dice, yo esto es cierto, continuar y entrar en mi bloque de código. Entonces ahora, este es un condicional que te dice si algo es verdadero o falso, esencialmente, y bastante bien siempre sigue o siempre es seguido por la palabra clave I. Creo que lo redacté un poco extrañamente. Nuestro cheque siempre viene después de la palabra clave I. Así que al igual que al verificar que múltiples condiciones sean ciertas, podemos usar eso en nuestras declaraciones if, como verificamos con cadenas antes. Pero una de las diferencias clave es que es un bloque de si declaraciones pueden complicarse un poco cuando tenemos un montón de cheques que se acostumbran, como viste cuando podíamos poner y, y podríamos simplemente seguir agregando más y más condicionales y podríamos usar Os para seguir adelante Más o menos tenemos una cantidad ilimitada de condiciones que podríamos verificar. Y podemos usar condición, cualquier condicional con declaración I. Entonces, si miramos la declaración simple if como lo hicimos antes, dijimos, Si el tomate es igual al tomate, entonces diríamos que es verdad, ¿verdad? Siempre y cuando ambos se deletrearan exactamente igual con capitalizaciones y todo Pero, ¿y si queremos tener una captura a todos, verdad? Entonces, ¿y si queremos vamos a ver? Vamos a crear una variable llamada NUM. Lo pondremos igual a seis. Diremos dentro si estoy listo, diremos si num es mayor o igual a seis. Derecha. Colón y diremos, adelante e imprima ahí dentro. Ja, es mayor. Y si seguimos adelante e imprimimos eso, ya veremos, Bien, ese es el que regresa. Es mayor o igual a seis. No obstante, si decimos si es mayor o igual que siete, nada va a ir a hacerlo. Pero en algunos casos, tal vez quieras que algo suceda como resultado. Y aquí es donde entra el bloque else . Yo sólo voy a bajar eso. Entonces si no, seguido de dos puntos, eso es todo lo que tenemos que poner ahí. Estamos diciendo que si todos esos cheques anteriores son falsos, ninguno de ellos es cierto, entonces el bloque else se encargará de ello. Entonces podemos entrar aquí y podríamos seguir adelante e imprimir esto, tengo un espacio ahí, digamos, esto no es mayor. Y podemos seguir adelante y tener nuestros cheques. Entonces ahora realmente vamos a conseguir esto no es mayor o vamos a obtener la respuesta. Esto es mayor. Entonces, independientemente de que sea cierto o falso, vamos a tener algún tipo de respuesta, algún tipo de acción y podrías seguir adelante y pensar, Bien, bien , solo puedes seguir adelante, von abajo, hacer otro si, otro si, y otro si, y puedes seguir haciendo todas estas comprobaciones diferentes. Pero el problema es, es si todos estos son ciertos, por ejemplo, si cambiamos esto a cuatro, este uno a tres, este uno, dos, En realidad, si cambiamos estos, queremos ir por el otro lado. Si decimos si estos son siete, ocho y nueve, entonces si estos son mayores a seis, ya que estos son si cheques, todos estos van a correr como ven aquí, corrieron por num, siete, ocho, nueve. Todos volvieron a ser verdad, así que todos fueron disparados. No obstante, ¿y si solo necesitamos uno de estos? Y si solo queremos que el primero sea cierto para activarlo. Y entonces si eso dispara, no se comprueba ninguna de las otras condiciones. Bueno, aquí es donde otra palabra clave entra en juego aquí, y esta es la otra si. Entonces es una especie de combinación del yo y el resto juntos, y solo lo llamamos LF. Entonces si entramos aquí y decimos si por estos. Digo, si esto es cierto, entonces hacemos esto. Si no, entonces comprobamos se, si esto es cierto, hacemos esto, de lo contrario, si esto es cierto, si esto es cierto, y si todos esos fallan, nos quedaremos con solo la declaración else. Entonces, si tuviéramos que ejecutar esto ahora, puede ver que el primero se vuelve cierto aquí arriba, y entonces nunca llegamos a estos. Y podemos decir que si entramos aquí y solo ponemos un montón de exclamaciones para poder diferenciarlo Podemos ver que el primero se detecta como verdadero, y luego nos saltamos todos los demás porque no necesitamos verificarlos. Entonces no estamos comprobando si todas estas cosas son ciertas individualmente. Por lo que puede haber ciertas situaciones en las que desee usar múltiplos, múltiples si se comprueba por su cuenta. Pero muchas veces probablemente vas a tener más de un yo más si o un if else. Tipo de cadena pasando como vemos aquí. Ahora bien, esto realmente puede hacer que las cosas se compliquen un poco en los momentos en que entramos en esto. Entonces, si echamos un vistazo a un ejemplo aquí, ahí vamos. Muy bien, entonces tenemos todos nuestros cheques en su lugar aquí. Así que solo selecciono un número aleatorio para los 15 años de edad. Entonces vamos a comprobar si la edad es menor a 13 años. Bien, vamos a asumir la suposición de tal vez los precios de las salas de cine, ¿verdad? Entonces entra ahí, diremos, tengo 13 años, va a ser este precio, si es 13-64, entonces es mayor que 13, menos de 64, es este precio, y si es superior a 64, hacemos este precio Y entonces tenemos un dicho aquí de que no es válido, que es por si acaso atrapar a todos. Nunca debemos tener una situación como esta. Vamos. Entonces tenemos 15. Podemos pasar por nosotros mismos. Digamos, no es menos de 13. Así que sáltate eso. Vamos a nuestro segundo cheque. La edad es mayor a 13 y menor a 64. Sí, 15 es. Entonces deberíamos recuperar el precio es de 14 50. Si tocas eso, podemos ver que eso es exactamente lo que obtenemos. Entonces hay un ejemplo de hacer un tipo de cadena if, else if and else pasando ahí. Entonces nuevamente, el ejemplo habría algo así como tal vez una sala de cine con diferentes precios de entradas en función de la edad de la persona que necesita una entrada. Ahora, podemos usar estas declaraciones if también, y se fusiona como que con nuestras cuatro declaraciones o 44 bucles, y podemos platicar cosas como digamos que tenemos nuestras compras ¿Correcto? Cereales. Ketchup. Leche. Sin embargo, es posible que tengamos un cheque por artículos fuera de stock. Que tal vez estés desarrollando una aplicación que realiza seguimiento de qué artículos están agotados y en stock. Cuando un artículo esté agotado, aparecerán aquí. Entonces vamos a decir, esta tienda está fuera de stock de leche, ¿verdad? Entonces diremos que no tenemos leche, pero queremos comprobarlo. Entonces queremos revisar nuestra lista de abarrotes. Entonces queremos decir por mí, ¿no? Para artículo en abarrotes, tal como lo hicimos anteriormente en la sección de cuatro Lucas Y queremos ver si ese artículo está en nuestro agotado. Entonces armando todo esto que tengamos para artículo en abarrotes Queremos verificar si estoy agotado. Entonces, usando aquí va a verificar si el artículo está ahí. Entonces, si el cereal está en esta lista, vamos a hacer este siguiente bloque de código. Y si no lo es, vamos a seguir adelante. Entonces vamos a decir que vamos a imprimir y estamos reuniendo todo aquí. Diremos que el porcentaje S está agotado. Y luego solo pasaremos en el porcentaje I para pasar nuestro artículo a nuestra cadena. Armando todo esto, vemos que lo único que lo desencadena es la leche porque de hecho la leche está dentro de nuestra lista agotada. que veas lo rápido que estamos empezando a encadenar las cosas. Estamos imprimiendo en nuestra consola, estamos insertando variables en nuestras cadenas. Estamos usando cheques I para ver si algo es cierto, y estamos ejecutando un ciclo cuatro para recorrer todo lo que hay dentro de nuestros comestibles Repasa todo lo que hay dentro de nuestra lista. Bien, así que eso debería cubrir todo aquí para ir con los cheques if y si, de lo contrario, si, más, así como ojalá algunos ejemplos para que las cosas sean un poco más claras y para ver como todo esto se junta 15. 15 diccionarios: A todo bien. Todos, hoy vamos a echar un vistazo a los diccionarios. Ahora bien, obviamente no estamos hablando del tipo que recoges, este tipo de palabra y una definición asociada a ella, pero podrías usar un diccionario para hacer un diccionario. Y un diccionario es bastante buena relación con lo que está codificando un diccionario. El motivo de esto es porque trabajan en la función de tener un par de valores clave. Entonces, en relación a un diccionario normal, tendríamos la palabra como clave, y entonces la definición sería el valor. Entonces los diccionarios son un conjunto de datos que pueden contener tipos de datos de cualquier tipo que hayamos discutido hasta este momento, incluyendo otros diccionarios en sí mismo. Un diccionario puede mantener un conjunto de información relacionada en un solo lugar, como la configuración del juego o programa o información sobre personajes enemigos. Un diccionario se puede identificar fácilmente ya que todos los datos, todos sus datos se encerrarán dentro de un conjunto de llaves versus una lista que usa los Entonces, sigamos adelante y echemos un vistazo a cómo se formatean estos diccionarios. Todo bien. Entonces yendo aquí arriba en la parte superior, vamos a hacer una nueva variable. Voy a llamarlo diccionario M. Y claro, vamos a poner esto e igual a un par de llaves rizadas Ahora bien, la forma en que esto funciona es que podemos seguir adelante y entrar para que sea más agradable de ver Y hacemos un par de valores clave. Entonces, por ejemplo, diremos clave uno, y luego hacemos dos puntos y luego el valor. Entonces vamos a ir este mi valor y si quieres insertar otro, ponemos una coma, y podemos ingresar desplegable a la siguiente línea, y podemos hacer la tecla dos Ahí vamos. Este es mi nuevo valor. Y, así sucesivamente todo el camino abajo de la lista. Ahora bien, el nombre de nuestro diccionario puede ser lo que quieras, igual que una variable normal. Pero una vez que nos metemos dentro de nuestras llaves, se puede ver que tenemos una cuerda, y esta primera cadena de aquí es nuestra clave Obviamente puedes nombrar esto como quieras, pero similar a las variables, debería quedar claro sobre con qué datos están relacionados. Por lo que debería tener algún tipo de indicador de lo que el valor está relacionando. Ejemplo, esto podría estar dentro de tal vez un diccionario meteorológico. Una clave podría ser temp o temperatura, y entonces el valor sería el número real. Todo bien. Entonces un ejemplo de esto si estás haciendo ajustes, podría ser tener un diccionario de audio y un diccionario de gráficos. Ahora, tu clave, como puedes ver ahí se le sigue con dos puntos y luego tus datos. Tus datos aquí son a lo que nos referimos como el valor, y se tratan de manera similar a una lista con un índice de cero, si eso tiene sentido, siendo tu primer valor. Ahora, podríamos seguir adelante y llamar a esto con diferentes situaciones o un par de formas diferentes que en realidad podemos llamarlo. Incluso puedes, supongo, podemos tener diferentes tipos de datos ahí dentro. Podríamos tener una lista ahí dentro como uno de nuestros valores. Entonces si queremos índice cero aquí, vamos a darle nos dará nuestro nombre, regresando con Jim e Index uno, devolviendo sí. Nos estamos convirtiendo como nuestra salud. Entonces si lo tuviéramos en lo siento, un diccionario dentro de un diccionario, que podemos seguir adelante y hacer aquí, ¿verdad? Entonces diremos que este es el nombre, y esto sería reportar como él y el siguiente tendremos salud, y diremos 100. Entonces en una situación como esta, de aquí donde los índices que vienen de. Ahora, por supuesto, no tenemos que usar índices. Podríamos simplemente escribir completamente los nombres cuando se trata diccionarios, lo cual siempre es agradable. Solo recuerda que cada clave debe estar separada con su propia coma, así que sigamos adelante y vamos aquí abajo a nuestra lectura echemos un vistazo a cómo podemos acceder a un diccionario ¿Todo bien? Entonces, cuando accedamos a nuestro diccionario, vamos a seguir adelante e imprimirlo, por supuesto. Y lo que vamos a estar viendo es que vamos a estar imprimiendo mi diccionario, por supuesto, y podríamos simplemente imprimir así. Pero claro, si queremos acostarlo , echemos un vistazo. Entonces se imprime es que obtenemos Key one y luego obtenemos la clave dos, y luego esos van dentro de otra llave rizada para el otro conjunto. Así que aquí podemos obtener la clave uno o la clave dos. Ahora bien, si queremos obtener la clave uno, podemos simplemente hacer llaves justo al lado, similar a una matriz. Sólo nosotros podemos seguir adelante y teclear Clave uno. Y como ven aquí, vamos a obtener el resultado, Clave uno ahí abajo. Y lo mismo. Si hacemos k dos, vamos a conseguir el nuevo diccionario que Kit está sosteniendo. Ahora bien, ¿qué pasa si seguimos adelante y usamos cero para nuestro diccionario aquí? Intenta acceder a eso. Vamos a encontrarnos esta situación porque estamos fuera de los límites de este diccionario Entonces hay diferentes situaciones para algo como esto. Por ejemplo, lo que podríamos hacer es ir a mi diccionario, ¿verdad? De nuevo, y podemos hacer teclas de punto y algo así. Esto solo va a obtener todas nuestras claves y devolverlas como una matriz, así que esta va a ser una lista de todas nuestras claves. Y entonces podemos hacer nuestros corchetes y poner un cero ahí dentro. Entonces podríamos hacer algo como esto, y esto funcionaría, aunque es un largo sin duda mucho más largo de lo que necesita ser. Y sé que con tres, ocasionalmente, esto funcionaría también. Podrías simplemente puntear Key uno. Sí, ahí tienes. Así que solo puedes hacer punto y poner en el valor clave aquí. Entonces podemos hacer dos, y la K dos entra en otra lista propia, perdón, otro diccionario propio. Entonces podríamos ir y hacer otro punto. Para que podamos hacer mi diccionario.k2 punto, voy a decir Salud. Y como veis, nuestro resultado es 100. Así que hay un par de formas diferentes en las que realmente podemos acceder al contenido de nuestro diccionario, ya sea yendo al método de registro obteniendo una lista de nuestras claves y poniendo un índice, simplemente pasando la clave que queremos como cadena o usando un método punto como este, similar a una llamada a una función o una llamada a método. Ahora, cuando tenemos diccionarios dentro de diccionarios, has visto esencialmente lo que vamos a hacer aquí con dotqt dot HeL. Solo tú puedes acceder a eso a través de nuestros corchetes. Entonces podemos hacer la clave dos. Y luego justo al lado , solo haremos otro juego de corchetes. Eso también podemos simplemente escribirlo así, que tiene un par o dos pares de corchetes cada tecla bajando. Entonces así es como podemos acceder a nuestros diccionarios y lado de diccionarios. Puede ser un poco confuso, así que ojalá eso fuera lo suficientemente claro, al menos si no la explicación con la demostración real de verla en uso aquí. Ahora, los diccionarios pueden contener, todos los demás tipos de datos. Entonces podrían tener lista en ellos. Podrían tener números, ya sabes, enteros, flotadores, cadenas, diccionarios y lado de Así que tenemos todo este conjunto salvaje, y por supuesto, acceder a esos realmente va a bajar a los métodos que te hemos mostrado allí, y en base a qué tipo de datos es, obviamente si el valor va a ser una matriz, entonces vas a acceder a los valores ahí como una matriz. Ahora bien, ¿y si queremos agregar a nuestro diccionario, verdad? Entonces tenemos mi diccionario ahí. Sigamos adelante y creamos uno nuevo. esto lo llamaremos Colores, tenemos la secuela de un diccionario vacío Dame errores para allá abajo porque no lo rellenamos. Ahora bien, ¿qué hacemos para pasar algún dato aquí algún dato si queremos agregar una nueva entrada a nuestro diccionario? Bueno, sólo podemos ir a nuestros colores y vamos a seguir adelante y pasar una llave como si estuviéramos tratando de acceder a ella. Entonces llamaremos a esto vamos a ir con colores fríos o fríos, y luego simplemente establecemos eso igual al valor que queremos. Entonces iremos con un azul. Si imprimimos nuestros colores ahora, deberíamos ver el azul siendo el valor, siendo un valor de cadena aquí de la clave cool. Entonces deberíamos ver eso aquí dentro de nuestro diccionario de colores. Y ahí vamos. Eso lo podemos ver ahí mismo. Entonces es tan simple como eso, se agrega a él, y esto también debería funcionar para una matriz. Entonces, si solo tenemos una lista aquí e imprimimos eso, como ves, funciona igual que te imaginas que funciona igual, aunque estemos haciendo diferentes tipos de datos establecidos aquí. Entonces ahí tienes. Lo suficientemente fácil de hacer para nosotros. Simplemente lo llamamos y luego configuramos y esto funciona la misma manera si quieres restablecer o cambiar esto también. Entonces, si quieres cambiar la llave dentro de ella, si vienes aquí abajo y cambias estos libros. Entonces primero, van a ser estos números, y luego vamos a cambiarlo a rojo y volver a imprimirlo. Como ves, puedes agregarle claves y sobrescribirlas usando el mismo formato Ahora bien, lo que se complica un poco es cuando se quiere agregar un diccionario al diccionario. ¿Acabamos de sacar eso? Y veamos si esto ahora funciona, tecleando esto. Entonces diremos e uno. Bien, aquí vamos a decir valor. Y veamos si esto funciona. Bien, genial. Así podemos hacer diccionarios de esta manera con la misma facilidad. Impresionante. Entonces no tengo que repasar ningún tipo de trabajo en torno a eso Perfecto. Bien, así que ahí tienes. Así es como podemos agregar a nuestro diccionario y sobrescribir las claves Ahora, podemos echar un vistazo al bucle a través de nuestros diccionarios Entonces, obviamente, los diccionarios van a ser un poco diferentes aquí. Así que vamos a usar Mi diccionario otra vez, y en realidad vamos a ejecutar un bucle de cuatro para que podamos ir a través de él. Entonces lo que queremos hacer es que queremos hacer cuatro y normalmente, vamos a usar cuatro claves en mi diccionario. Entonces en este punto, vamos a obtener la clave uno y la clave dos. Esto es lo que vamos a recorrer. Y si solo imprimimos eso, imprime P. ves que vamos a conseguir la clave uno y dos impresos para nosotros. Ahora bien, si queremos ir aún más adentro dentro de esto, podemos ir por valor, digamos, en Key, podemos imprimir valor y podemos ver lo que llegamos ahí yendo dos capas más profundas. Oh, aquí vamos. Mi error. Mi diccionario y rodear las mismas llaves. Ahí vamos. Eso es lo que queremos hacer, e imprimiremos el valor de esa manera. Y ahí vamos. Entonces vemos Clave uno, nombre, salud y clave dos. Ahora en esta situación, como aquí sí tenemos una cadena, sí imprimió todos los caracteres individualmente, que es lo que están viendo aquí con que es vertical. Y los personajes sí incluyen espacios. Eso es todo lo que tenemos ahí. Como ve, pasamos por clave y diccionario así que obtuvimos la clave uno. Y luego lo que hacemos aquí, luego recorremos el valor, y estamos imprimiendo todas estas letras individualmente, y luego imprimimos el nombre de la clave. Entonces por eso tenemos esto y luego uno clave. Y luego pasamos a la clave dos, e imprimimos la siguiente. Entonces nombre y salud, y luego imprimimos en la clave dos. Entonces puedes ver cómo recorremos estos diccionarios y podrías ir más allá o puedes recorrer un conjunto específico de diccionarios. Para que puedas ver cómo vamos en bucle a través de estos diccionarios Todo bien. Entonces eso es todo lo que necesitas saber para poder usar y acceder a elementos de tu diccionario. Entonces eso lo hará por aquí. A continuación, echaremos un vistazo a cómo obtener información del usuario, y estaremos saltando a un poco más de bucle 16. Cómo obtener entradas: Bien, entonces me han llamado la atención que al parecer faltan entradas en la porción de idioma Entonces vamos a seguir adelante y voy a mostrar para hacerlo muy rápido. Sólo voy a hacer una interfaz de usuario. Sólo voy a hacer clic en Control para mi nueva escena. Voy a seguir adelante y renombrar esto. Voy a llamarlo. Vamos a la prueba de entrada. Seguiré adelante y lo guardaré con Controles, prueba de entrada punto TSN. Eso está bien. Y le agregaré un guión. Genial. Y voy a cerrar todas estas otras secciones que no necesitamos para esto, ¿verdad? Entonces, en mi caso, estoy extendiendo un control, pero en tu caso, podría estar extendiendo un cuerpo de personaje dos D a la hora de crear jugadores para juegos o realmente cualquier cosa, no importa demasiado lo que esté extendiendo porque puedes agregar o tomar entrada de bastante bien cualquier tipo de nodo. Derecha. Ahora, lo que voy a hacer Sí, solo usaremos la impresión para reconocerlo. Entonces, hay algunas formas en las que podemos obtener aportes. Y una de las principales formas en las que verás que hace mucha gente va a estar dentro de un proceso de subrayado funk, o va a estar bajo el proceso de Funk Estos son dos puntos diferentes en el marco. El proceso de física es donde debes poner cualquier cosa que esté relacionada con la física. Entonces algo así como mover a tu jugador. Como probablemente vas a tener que lidiar con cosas como colisiones y otras cosas basadas en la física, probablemente deberías hacerlo en proceso de física en el marco Y el proceso aquí arriba es probablemente donde van a ir muchas otras cosas dentro de tus proyectos, pero usualmente quieres intentar mantener esto lo más claro posible. Ahora, otra situación que podrías ver usada va a ser otra función llamada input. Y entrada no controlada, y nuestra última es entrada clave no controlada Ahora bien, hay algunos pequeños cambios en cuanto a cómo se manejan estos y a ver si solo sostengo el mouse por aquí, dependiendo de la versión de Gudo que tenga, puede que vea esto o no Si no ves los pop ups y tu versión, deberías poder simplemente mantener el control y hacer clic en la función y obtendrás la misma información. Usted lee sobre algunas de estas diferencias aquí con entrada de clave no controlada, entrada no controlada, y así sucesivamente Pero estos tres últimos aquí son específicamente para entrada. Y entonces aquí arriba es donde vas a tener cosas más continuas como mantener pulsado hacia adelante para moverte, por ejemplo. ¿Todo bien? Entonces me voy a deshacer de los inmanejables. No lo vamos a necesitar para esto. Yo solo quería señalarles a ustedes muestran esos son una opción para usar aquí. Voy a deshacerme de la ¿Quiero deshacerme de eso? No. Eso lo guardaré de mi ejemplo. Y voy a deshacerme del proceso de física solo porque no voy a estar moviendo ningún personaje ni haciendo nada basado en la física. Y te voy a mostrar aquí. La forma más fácil para nosotros de hacer alguna entrada va a ser si input, y esta clase de entrada contiene todas las entradas que están disponibles ya sea integradas o las que agregue al mapa de entrada. Entonces vamos a decir que entré punto. Podemos decir yo y puedes ver aquí, yo cualquier cosa presionada es similar a como llegarías a un menú principal y dirías presionar cualquier botón. Entonces, si presionas algún botón, esto se va a activar. Aparte de un menú principal, no estoy seguro de dónde podrías incorporar esto, pero si lo necesitas, ¿ hay algo presionado? ¿ hay para ti? Y vamos a seguir adelante y probarlo. Entonces decimos, yo entrada es cualquier cosa presionada y tabulada en eso, vamos a decir imprimir algo si podemos deletrear, ortografía es dura a veces, algo presionado, y voy a seguir adelante y golpear Ejecutar escena actual Verás, mientras nos sentamos aquí, solo tómate un segundo para correr. Ahí va. Si presiono algún botón de mi teclado, voy a presionar J, algo presiona y en realidad se dispara cinco veces con que está justo donde está justo en el proceso. Si le pego a L, ahí vamos. Podemos ver que los números aumentan. Si me deshago de la pila, puedes ver Cada vez que presiono botones aquí, puedes ver nuestro número aquí abajo en la esquina. Llenando, ¿verdad? Así que incluso simplemente haciendo clic en él, porque eso es entrada, eso es algo. Clic izquierdo, clic derecho, alguno de estos botones en el teclado, ¿verdad? Siempre trabajar. Todas estas cosas se activan porque cualquier cosa puede desencadenar. Es cualquier cosa presionada. Ahora bien, ¿qué otras opciones tenemos? Tenemos es, y tenemos acción recién presionada, acción recién liberada, acción presionada. Y entonces tenemos algo de alegría. Entonces estos botones de alegría, claro, van a ser tus controladores, ¿verdad? Entonces te va a pedir un dispositivo, y luego te va a pedir un botón de alegría. Ahora bien, no tengo un controlador enchufado, pero esto es que puedes hacer algo específico para controladores, que no es lo que vamos a hacer aquí, sino que es algo que señalar para nosotros, al igual que tenemos etiqueta de tecla, pulsación de teclas, la tecla física, botón del mouse Para que veas, tienes una gran cantidad de cosas que puedes aquí Así que vamos con el fácil , el sencillo. Digamos, perdón, solo toma un trago. Bien. Entonces, si la entrada es acción simplemente presionada. Ahora, obviamente no vas a tener un montón de estos. Probablemente vas a ver muchos de estos botones de interfaz de usuario aquí abajo. Algunos de estos UI excepto, creo que esa es la clave enter por defecto. Y ya ves que estamos pasando en una cadena de una acción. Sí, así que vamos a seguir adelante y poner eso en. Y ahora ya verás cuando lo ejecute ahora ten en cuenta que esto es acción presionada. Entonces, si presiono el botón hacia abajo, lo estoy sosteniendo, solo se está presionando una vez, ¿ verdad? Sólo aparece una vez. No hay problema. Y lo solté, no pasa nada. Ahora podemos tener otro sistema configurado, así podemos decir que entré punto es acción, podemos decir liberación. Vamos a ir con el mismo botón aquí. Acepto, y vamos a seguir adelante e imprimir y vamos a decir algo suelte. Hemos pulsado y acabamos de soltar, y estamos usando la tecla enter para ambos. Entonces, si presiono este botón hacia abajo, dice algo presionado. Si la mantengo presionada, no pasa nada. Y en cuanto levante de la llave, algo se soltó. Entonces, dependiendo de lo que estés haciendo, posible que quieras que algo suceda en la prensa, o quizás quieras que algo suceda en el lanzamiento. Ahora bien, alternativamente, hay otra opción que viste ahí. Va a ser si input es action press, así que no solo presione, sino presione. Y voy a decir que acepto. Genial. Para que podamos ver la diferencia aquí. Imprimir. Esto es lo que va a desencadenar cuando algo se mantenga presionado. Entonces algo aguantó. Entonces vas a ver, voy a presionarlo. Vamos a ver nuestro algo presionado. Voy a mantenerlo presionado por un momento, así que vamos a ver un spam en esta consola de salida de algo retenido, algo retenido. Y luego cuando libere, veremos algo liberado. ¿Correcto? Eso lo hice solo por un momento ahí. Yo saqué esto. Podemos ver algo presionado, y luego algo retenido durante todo este tiempo. Y luego algo soltó cuando levanté del botón. Ellos ven que tienes tres situaciones distintas que puedes usar aquí. Y dependiendo del tipo de sistema que estés haciendo, qué tipo de entradas estás haciendo, puedes usar cualquiera de estos para tu propósito. Ahora, yo sí mencioné que también teníamos clave decir es clave Prensa. Y entonces esto va a tomar un código clave. Entonces en nuestro caso, con lo que estábamos haciendo ahora será clave Enter, derecha. Y sólo vamos a seguir adelante e imprimir Enter, presionar. Y corremos eso, lo sujetamos y podemos ver que lo conseguimos. Así que no solo nos presionan y solo nos sueltan cuando se trata de llaves. Así que tenlo en mente. Ahora bien, si quieres establecer tus propias acciones aquí, yo solo respaldaré esto. Más. Ahí vamos. Como acepto como tenemos aquí. Vamos a estar haciendo esto en la parte de juego. Pero solo tienes que ir a la configuración del proyecto, ir a Mapa de entrada, y luego puedes agregar una nueva acción, asegúrate de estar en el cuadro correcto aquí. Diré nuevo vamos a seguir adelante y llamar a esta acción de prueba. Presiona el botón Agregar. Ahora bien, si me desplazo hacia abajo hasta aquí abajo en la parte inferior, puedo darle a este ícono más, y puedo poner el botón que quiera. Entonces digamos que puse el botón K, ¿verdad? Golpeé Bien. Y puedo entrar aquí y puedo decir, yo acción acabo de presionar, probar acción. Ahora yo dirijo eso. Ahora bien, si presiono el botón K, conseguimos que se active ese algo presionado. Por lo que agregar nuevos insumos a tu proyecto es tan sencillo como eso. Y hay algunas otras cosas en las que podrías meterte. Entonces van a tener o van a tener más detalles como acción palabra cosas como acción fuerza Entonces, la fuerza de acción es donde vamos a obtener números reales. Entonces entrada, consigue fuerza de acción. Y si tuviéramos que echarle un vistazo, vemos si vamos a recibir golpes. Vamos a recuperar un número 0-1. Y esto es lo mucho o lo duro que se está sujetando un botón. Entonces en un teclado, básicamente es cero o uno, ¿verdad? O es prensa o no lo es. Sin embargo, si tratas con controladores, aquí es donde puedes crear cosas como mantener presionado un botón hasta la mitad para apuntar y presionarlo todo el camino hacia abajo para disparar Por ejemplo, había bastantes juegos antiguos que tienen ese tipo de sistema con eso. Metal gear solid tenía donde pulsarías creo que era el botón cuadrado en los viejos juegos. Presionarías para apuntar, y lo presionarías hasta el final o soltarías para hacer el disparo. Y obtener fuerza de acción es como en realidad lo conseguiríamos. Bien, así que hay muchas opciones que puedes hacer para obtener aportes, pero te he mostrado todas las principales para lidiar con eso Y todavía tengo entrada aquí establecida, y eso es porque evento de entrada evento es cualquier cosa. Entonces eso podría ser un clic del mouse, podría ser uno de teclado. Podría ser solo mover el mouse en la pantalla porque el movimiento del mouse es un evento de entrada, ¿verdad? Entonces si solo me adelanté e imprimo evento, aquí. Y le echas un vistazo. Mira, como acabo de mover esto, se puede ver que el movimiento del ratón viene con muchas cosas. La posición relativa, tienes pluma y presión e inclina, o si quieres hacer soporte para tablet lo entendiste. Obtuviste la velocidad, que es lo rápido que se mueve el ratón. Bien. Déjame ver el índice del botón. Entonces click izquierdo va a ser Índice uno, click derecho es Índice dos. Entonces, si vas a estar usando algo como input, vas a tener que acostarlo. Entonces, por ejemplo, haríamos algo como VR digamos que I evento es evento de entrada. Entonces podemos decir clave si quisieras que fuera un teclado, botones JoyPad Si quisieras que fuera un botón, acción de evento, mouse, botón del mouse, movimiento del mouse, arrastre de pantalla, pantalla táctil. Estas son cosas que usarías para crear un botón de pantalla táctil, por ejemplo. Evento de entrada, acceso directo. Entonces tienes todas estas cosas aquí, pero digamos evento de entrada. Vamos. Tecla de evento de entrada. Y entonces podemos decir ar EV es igual a evento como clave de evento de entrada. Y sigamos adelante e imprimimos EV, a ver qué obtenemos de aquí. Vemos que aquí no pasa nada. Y tan pronto como presioné un botón del teclado, ya podemos ver que estamos recibiendo botones, ¿ verdad? Estamos recibiendo coodes clave Estamos recibiendo los mods, ya sea físico, la ubicación, si está presionado, y por supuesto, echo, que por supuesto, echo va a ser cierto si se mantiene pulsado el botón. Así que ahora tenemos estas claves de eventos de entrada. Todo bien. Así que ahora podemos seguir adelante y podemos decir que yo EV presione, ¿no? Entonces si se está presionando el botón, y podemos usar la palabra aquí o puede usar dos ampersands y simplemente mejorado Así que estamos comprobando para asegurarnos de que ambas condiciones trouve y el código EVP iguales a P ED, en mi caso Y puedo seguir adelante e imprimir algo como D, E, prensa. Ahora si tuviera algún otro botón en el teclado, no va a pasar nada, pero en cuanto presione el Dkey, conseguimos que se le reconozca Ahora bien, si realmente lo quieres, podrías simplemente entrar aquí y dentro de tu entrada, solo di que entro acción prensa, Film. Puedes hacer todo eso aquí. Pero cuando estamos recibiendo evento, también puedes usarlo, y este es el tipo de situaciones que puedes hacer ahora, si quieres usar el evento también, así como la acción aquí. Todo bien. Podemos decir si event es input event key, si queremos, y evento es action press, y ahora podemos seguir adelante y escoger algo que teníamos prueba de acción. Realmente no recuerdo qué fue la acción de prueba. No voy a tener idea de eso. Pero voy a decir acción Prensa. No recuerdo lo que fue eso. Creo que fue el KK. Espero tener razón. Y le pegué, y vemos a Action Press. Bien. Entonces ahí vamos. Entonces tenemos eso funcionando para nosotros. Bien, entonces espero que eso te dé una idea bastante buena de cómo podemos obtener aportes del jugador. Hay algunas otras pequeñas formas. Por ejemplo, si tuviéramos un cuadro de texto en pantalla, podríamos sacar la propiedad de texto de eso. Y creo que si recuerdo bien, vamos a estar viendo eso en nuestro primer proyecto. Bien, ojalá eso aclare cualquier confusión que pueda haber, y ojalá puedas entender algunas de las formas en que podemos obtener aportes del jugador 17. 17 bucles mientras: Bien echemos un vistazo a while loops. Ahora, hemos usado un bucle cuatro antes en el pasado, y ahora tenemos un segundo tipo de bucle. Y un bucle de cuatro, como recuerdas, recordaremos un conjunto de elementos que están dentro de otra cosa, ya sea dentro de un rango de números o dentro de una lista. Un bucle Wile es algo que va a hacer bucle para siempre y cuando una determinada condición sea cierta Entonces, sigamos adelante y echemos un vistazo a cómo podemos usar un bucle Wile En este caso, lo vamos a utilizar para contar. Bien, así que vamos a seguir adelante y crear voy a guardar MyNum, establecer eso igual a cero por defecto Y vamos a decir que Wile BiNum es menor o igual a cinco Sólo vamos a imprimir MyNum. Y en este punto, si seguimos adelante e intentamos esto, nuestro bucle se va a quedar atascado, y todo el programa va a chocar. Nos vamos a quedar atascados en la pantalla de presentación. Y como puedes ver en la consola de salida ahí abajo, solo va a spam cero porque eso es todo lo que sabe hacer. Y de hecho, esto ni siquiera va a cerrar, así que tengo que presionar el botón de parada en la parte superior. Entonces con un bucle wile, es peligroso quedar atrapado en él. Hay que tener una manera de salir en todo momento. Si no hay ninguna salida codificada, se estrellará. Ahora bien, hay muchas formas de hacer una salida, y en este caso, estamos comprobando si M NUM es menor o igual a cinco, así que la forma más fácil de solucionarlo sería crear esa declaración para que se vuelva falsa. Ahora, podemos hacer eso simplemente estableciendo M NUM ahora es igual a seis, lo que lo romperá. No vamos a contar , pero se romperá. Se saldrá del bucle. Pero lo que preferiríamos ya que estamos usando un bucle salvaje, podemos asumir que queremos contar para arriba así que solo vamos a llamar a MyNum, digamos más es igual a uno Ahora, eso es exactamente lo mismo que decir M NUM es igual a MyNum más uno Es solo una forma más corta de escribirlo haciendo más igual a uno. Entonces ahora si lo ejecutamos, vamos a ver que cuente de cero, uno, dos, tres, cuatro, cinco, y luego una vez que lleguemos a seis, eso ya no va a caer dentro de nuestra condición. Entonces eso va a hacer que nuestra condición vuelva a ser falsa, y saldremos de ese bucle. Entonces esa es una forma y manera bastante sólida de atravesarla. Sin embargo, no es la única forma de abrirse paso. Como viste, cuando acabamos de tener un número de impresión, provocamos el choque. Pero lo que podemos hacer es que en realidad podemos usar una palabra clave aquí llamada freno. Y eso romperá el bucle, pase lo que pase, no importa si la condición es verdadera o falsa, solo va a salir de ese bucle, como ves ahí. A pesar de que cero es definitivamente menor que un cinco, porque usamos esta palabra clave, somos capaces de salir de ese bucle, independientemente de si la condición era verdadera o falsa. Ahora, podemos usar bucles while con cosas como diccionarios y lista y una lista. Entonces vamos a seguir adelante y echar un vistazo. Entonces vamos a decir Wile nuevos usuarios. Y todo lo que eso significa es que mientras haya usuarios dentro de esta lista y no esté vacía, se devolverá como verdadero. Y una vez que la lista esté vacía, volverá como falsa. Entonces, lo que vamos a hacer dentro de este bucle como podemos decir nuestro usuario actual es igual a nuestros nuevos usuarios dot POP y podemos pop front. Y vamos a seguir adelante e imprimir ahí fuera. Verificando usuario, y podemos hacer nuestro porcentaje S y simplemente pasar en nuestro usuario actual. Todo bien. Entonces ahora si seguimos adelante y corremos eso, podemos ver que vamos a pasar. Y una vez que todo está salido o una vez que has sacado todos los nombres, esto ahora es falso y salimos de ese bucle Y se puede ver abajo en la salida, imprimimos esta declaración para cada usuario que sacamos. Ahora bien, si quieres quitar las cosas de un bucle, ciertamente podemos hacerlo de una manera muy fácil también. Y, por supuesto, esto no solo cuenta para quitar cosas, sino que echaremos un vistazo a nuestros animales ahí, y podemos ver que tenemos lagarto ahí dentro tres veces Entonces lo que podemos hacer para otro cheque de estado aquí es que podemos decir, si lagarto, ahí vamos O lagarto salvaje en animales. Entonces mientras lagarto sea una de las llaves dentro de los animales ahí, esto va a seguir corriendo Si recuerdas lo que dije antes o antes cuando estábamos viendo listas, yo dije, Si tuvieras varios elementos en tu lista de los que querías deshacerte de eso eran decir duplicados, tendrías que llamar a eliminar o borrar en ellos constantemente una y otra vez hasta que todos se hayan ido Bueno, ahora que sabemos de Woloops, simplemente podemos hacer un chequeo para ver si lagarto está dentro Y mientras hay un lagarto en los animales, vamos a seguir adelante y retirarlo. Tan simple, sólo vamos a llamar a Animals Dot. Retirarlo, no quitarlo. A lo que llamas borrar Lezard. Ya ves aquí, vamos a seguir adelante e imprimir animales después. Cada vez que lo quitamos y echamos un vistazo. Y vemos que ahora tenemos dos lagartos. Empezamos con tres. Después agregamos una lagartija, y luego no tenemos lagartijas Entonces puedes ver que esta es una manera fácil que quieres correr a través un bucle y decir, eliminar todos los duplicados. Bien, así que eso lo cubrirá por lo que son los bucles wile y cómo podemos usarlos en algunos escenarios diferentes 18. 18 Funciones y argumentos: Sigamos adelante y saltemos a las funciones. Ahora, funciones, ya vimos y usamos dos de ellas. Hemos utilizado proceso y listo a lo largo del curso hasta el momento. Pero puedes crear completamente tus propias funciones. Y como ejemplo, podemos tener uno que sería algo así como lo siguiente que ven aquí. Entonces podríamos tener uno llamado saludo que te dé la bienvenida a lo que sea que estemos haciendo, ¿verdad? Libros si podemos deletrear eso correctamente. Ahora, notarás algo en común con todos estos. Ahora, solo mirando todo esto, verás algunas similitudes, y verás que estas han sido la estructura básica que hemos estado usando todo este tiempo, y estas conforman la estructura básica de cualquier función que alguna vez escribas. En la primera línea, comenzamos con la palabra clave Bunk FNC, que le dice a GDScript que queremos definir o crear una función Y a esto le sigue otra palabra o serie de palabras, pero no podemos tener espacios en ella. Que luego va precedido de un par de paréntesis, y esto crea una función Por supuesto, tenemos que terminarlo con dos puntos y luego entrar en la siguiente línea y tabularlo en uno. Ahora, comenzando en esta segunda línea está el trozo de código que queremos escribir o ejecutar dentro de nuestra función, y por supuesto, solo ejecutaremos dentro de nuestra función. Entonces, si tuviéramos que ejecutar esto ahora mismo , no pasaría nada. Pero lo que podemos hacer es que podamos subir a nuestra lista para que cuando se cargue este script, podamos llamar a saludo la función que acabamos de crear. Y eso significa que esa función se va a activar cada vez que se active listo. Entonces, aunque no tenemos que escribir todo dentro de la función ready, podemos organizarlo todo en funciones individuales separadas y llamarlas. Esto ayudará a mantener nuestro código más limpio y más agradable de buscar. Y tu nombre de función debería seguir los mismos patrones, supongo que deberías decirlo como tus variables. Entonces, por ejemplo, repasé cómo sus variables deberían ser preferiblemente más cortas, bien definidas y decirle exactamente qué pieza de datos contiene. Bueno, una función debería hacer exactamente eso, también. Una función debe contener o decirte exactamente lo que está pasando dentro de la función con solo leer el nombre. Y no sólo eso, sino una función sólo debería hacer una cosa y una sola cosa. Esa función no debería ser hacer cuatro cosas diferentes dentro de ella. Ahora, hemos repasado o utilizamos algunas de estas funciones que han tomado argumentos o parámetros. Algunos de estos como eliminar eso y borrar donde tenemos que agregar en otro dato. Bueno, podemos hacerlo con nuestras funciones también. Entonces digamos que queremos crear un programa que dé la bienvenida a alguien. Ya lo hemos hecho antes. Hemos hecho nuestros porcentajes. Ponemos en eso. Pero en lugar de crear una variable en la parte superior, vamos a crear una justo dentro de nuestros paréntesis de funciones Ahora, podríamos dejarlo así y tomará cualquier tipo de datos, pero también podemos seguir adelante y declarar qué tipo de datos tiene que ser. Incluso podemos ir un paso más allá y podríamos contarlo o declararlo, así como darle un parámetro predeterminado. Ahora, cuando algo tiene un parámetro predeterminado, eso significa que es opcional. No tenemos que poner un argumento en cuando llamamos a la función aquí arriba y lista. No tenemos que escribir nada aquí, y si no escribimos nada, el parámetro predeterminado es lo que se le asignará. Sin embargo, si tecleamos algo aquí, lo va a sobrescribir. Entonces sigamos adelante y le demos un default de Bob. Y podemos seguir adelante y agregar porcentaje de usuario en. Por, sabemos qué rellenar. Y ya verás si solo llamamos saludo y no metemos nada, obtenemos Welcome Bob. Pero si seguimos adelante y tecleamos algo aquí como, vamos con Jim. Y lo escribimos. Verás, recibimos la bienvenida Jim Jim luego entra y sobrescribe el predeterminado predefinido de Bob Ahora bien, ¿qué pasa si tratamos de poner algo en que sea un tipo irrelevante? Entonces pongámoslo a cero. lo que echamos un vistazo, EC, inmediatamente obtenemos un error, y nos dice que debería ser una cadena, no un int. Y ese es el beneficio que vas a obtener al declarar qué tipo de variable debería ser Si no tuviéramos eso y nosotros simplemente, Hey, usuario es igual a Bob, ahora podríamos sobrescribirlo Y decimos, bienvenido cero, lo cual no tiene sentido, cuando necesitas piezas específicas de datos en tu función, probablemente vas a necesitar que también sea de un tipo específico. Así que al igual que las variables, va a ser una buena idea que rellenes exactamente qué tipo de información o declares tu tipo de argumentos. Incluso si no quieres establecer un valor por defecto, ahora, también vale la pena señalar que podemos tener múltiples argumentos, y aquí es donde las posiciones empiezan a importar. Así que hemos hecho esto antes donde teníamos inductor o nombre y trabajo Entonces, si hacemos una coma aquí para separarlo, y podríamos poner trabajo ahí, y solo pondremos una cuerda Y nuevamente, podemos seguir adelante y podemos llamarlos en cualquier orden a la hora de rellenarlos en nuestra impresión igual que si fueran variables normales, y probablemente estés notando este error aquí Ahora bien, funcionalmente, no hay nada malo con el código aquí Pero lo que te está diciendo es algo que tienes que tener en cuenta, y eso es todo lo que tenga un parámetro predeterminado tiene que ser colocado al final, porque todos los parámetros opcionales deben estar al final de tu lista de argumentos. Es solo la forma en que está en el guión GD. Entonces hay que poner todos los obligatorios por adelantado, y luego los opcionales al final Entonces ves que todo lo que hicimos fue simplemente cambiar de trabajo y usuario, y ahora no tenemos ningún error, aunque funcionalmente, es lo mismo Bien, así que eso lo hará para nuestra rápida introducción aquí en funciones y argumentos, también conocidos como parámetros aquí para que los rellenemos así como mostrarte nuestros valores predeterminados o cómo asignar valores predeterminados y el orden en mostrarte nuestros valores predeterminados o cómo asignar que deben estar todas estas cosas 19. 19 Alias de funciones: Bien, así que vamos a armar todo lo que estamos haciendo en este punto Así que sigamos adelante y voy a abrir la entrada que hicimos antes simplemente haciendo doble clic en el script fuera de mi sistema de archivos. Y voy a seguir adelante y agarrar todo lo que tenía aquí listo. Y podríamos meterlo listo. Pero lo que vamos a hacer en cambio es que vamos a poner todo esto en una nueva función que vamos a crear. Y voy a llamar al mío Proceso de texto. Texto de proceso. Ahí abajo, y ahí vamos. Y justo ahora podemos decir pasar dentro de nuestro listo. Bien, entonces ahora tenemos nuestra función dentro del texto de proceso. Y lo que voy a hacer en realidad mis disculpas. No vamos a hacer eso ahí. Eso va a estar dentro de nuestro listo. El proceso de texto en realidad se va a hacer en una etapa separada, y eso va a tomar un argumento que podamos llamar nuevo texto, y lo asignaremos con un parámetro predeterminado de nada. Todo bien. Ahora, solo voy a resaltar estos, mantener presionada la tecla Alt y usar la tecla de flecha hacia arriba para moverla hacia arriba. Bien, entonces en el texto de proceso, lo que vamos a hacer es que queremos tomar este texto como si estuviera metido, y podemos comprobarlo, similar a lo que hicimos aquí en el proceso aquí Entonces solo voy a seguir adelante y copiar lo que teníamos en la entrada, moverlo aquí a nuestro texto de proceso. Agarra estos y tira hacia atrás manteniendo presionada la tecla Shift y golpeando pestaña. Ahora bien, lo que vamos a hacer es que podamos mantener esto tan rápido, pero voy a cambiarlo a Q. Así que si mi texto es igual a Q, y no necesitamos obtener el campo de texto en absoluto, porque vamos a usar nuestra nueva propiedad de texto. Entonces ahora vamos a pasar un trozo de texto a nuestra función de texto de proceso. Y vamos a comprobar si el nuevo texto es Q, entonces vamos a llamar al Quit tal como lo hicimos en nuestra entrada, y vamos a crear una variable llamada My Name si no la hay. Y vamos a asignarle eso a lo que sea el nuevo texto que pase a este argumento o pase a esta función como argumento. Y luego podemos rellenarlo de nuevo, igual que hicimos con nuestro aporte. No hacer nada elegante aquí. Vayamos a necesitamos obtener nuestro aporte. Así que vamos a entrar en nuestro proceso, y vamos a hacer nuestra declaración if, así que vamos a decir que entrada es actina y vamos a ir con solo lanzamiento Y nosotros iremos con el Enter. Ahora bien, si pones ahora, si no tienes ninguna acción aquí, podrías usar UI excepto, creo, es una predeterminada por es espacio o Enter o la tecla enter. Pero si no creaste uno antes en la sección de entrada, simplemente dirígete a la configuración del proyecto y proyecto, entra en la pestaña del mapa de entrada en la parte superior, agrega una nueva acción llamada Mind Enter. Y luego además de esa acción después de agregarla, verás un botón más. Puedes presionar eso y puedes seleccionar cualquier tecla o botón que quieras que sea. Así que todo lo que vamos a hacer aquí cuando liberemos la entropía es simplemente llamar a nuestro proceso de texto, y de hecho podemos pasar en este campo de texto que teníamos Entonces, sigamos adelante y tomemos ese campo de texto y tomemos la propiedad de texto de. Ahora ya verás una vez que vengamos aquí, podemos seguir adelante y escribir lo que queramos. Y rellena tal como lo hicimos anteriormente dentro de la sección de entrada. Entonces todo esto funciona igual y fundamentalmente, es lo mismo. Pero como pueden ver, cuando escribimos esto, esto es todo lo que necesitamos ahora. Tenemos pulsada la tecla I, ejecutar esta función. Es mucho más corto, es mucho más limpio y agradable a la vista Y sobre todo, podemos usar esta función en cualquier lugar que la necesitemos, así que no tenemos que escribir la misma pieza de código una y otra vez. Ahora bien, si tienes una pieza larga de código, o lo siento, no una pieza larga de código, un nombre de función largo para el que simplemente no puedes pensar en un nombre mejor, lo que realmente podemos hacer es que puedas crear un alias para ese nombre. Ahora bien, un alias es como un stand in, ¿verdad? Entonces podemos tomar este nombre corto, y va a representar esta función. Entonces va a representar este nombre largo, algo así como lo hace una variable. Tenemos un nombre corto y representa este gran dato. Entonces este va a ser un nombre de variable que va a representar una función completa. Bien, así que sigamos adelante y aquí arriba en la parte superior de nuestro guión, podemos seguir adelante y crear una variable Voy a llamar a esto alias. Y a lo que vas a establecer esto igual es que podemos simplemente establecer esto al nombre de nuestra función. Bien, procese así, y funcionará. Entonces si bajamos aquí y golpeamos Enter, podemos seguir adelante y hacer alias dot, Paul, y luego dentro de estos paréntesis es lo que queremos pasar Entonces este sería nuestro campo de texto y nuestra propiedad de texto del mismo. Verás si seguimos adelante y corremos eso. Boom, todo funciona exactamente igual que antes. Es solo un poco más corto y estamos usando un alias. Ahora bien, alternativamente, si tienes tal vez quieras crear un alias para una función que viva dentro de un guión diferente en una nota completamente diferente, la alternativa a ella va a ser similar a esa. Entonces voy a crear un alias también, y estos se llaman callables Y un callable es la función psicópata, ¿verdad? Entonces la única diferencia es cuando lo creamos como un callable, en realidad tenemos que agregar dos argumentos ahí dentro Entonces el primero es donde está la función. Entonces en este caso, está en el mismo guión que las ventas. Entonces podemos decir yo mismo. No obstante, si esto estuviera en, digamos, nuestro campo de texto, entonces haríamos nuestro campo de texto en dólares, cel. Pero como esto está en el mismo script, podemos escribir en self, y luego se necesita un segundo argumento, que, como ves, es un nombre de método o función en forma de cadena. Entonces seguiríamos adelante y lo escribiríamos así. Y ahora puedes ver que podemos hacer exactamente lo mismo que hicimos para alias to.com y pasar en nuestro arte Ahí vas. Entonces esas son solo dos formas en las que podemos crear un alias para una función. 20. 20 clases: ¿Cuál es la clase y cómo podemos crear una? Entonces ya hemos usado clases. Simplemente no nos hemos referido a ellos como clases. Los hemos llamado objeto. Y la línea edita aquí, esta es una clase, y todas las clases que existen están en forma de nodos aquí. Para que puedas navegar a través, y puedes echar un vistazo a todas las diferentes clases. E incluso hay algunas clases que no están en esa lista, como JSON, a las que llegaremos cuando se trate cuando repasemos cómo guardar y cargar diferentes tipos de archivos. Pero esto es lo que hacemos, ¿verdad? Llamas a una clase y llamas a new para crear una nueva instancia de lo que sea esa clase. Ahora, en el caso de una edición de línea, tenemos algo gráfico, pero en el caso de algo así como JSON, donde no tenemos nada gráfico, pero sí tenemos cosas que podemos usar. Y veremos esto en nuestra siguiente sección, también repasaremos las expresiones regulares. Así que sigamos adelante y nos demos una idea de cómo funcionan estas cosas. Sigamos adelante y vamos a crear nuestra propia clase. Solo voy a hacer clic derecho en mi sistema de archivos esta vez y seleccionar Nuevo script. Vamos a heredar de en este caso, sí, podemos heredar del nodo. Eso está bien. Y voy a llamarlo mi clase de PET y pegaré gratis. Y ahora lo voy a encontrar y hacer doble clic en él para que podamos abrirlo. Y voy a borrar todo lo que hay en ella excepto por nuestra extiende en la parte superior. Ahora, para crear una nueva clase, en realidad no necesitamos ninguna de esas cosas que teníamos antes. Lo que vamos a hacer es escribir en clase underscore name con un espacio, y podemos poner lo que queramos que sea el nombre de esta clase Así que siguiendo con el nombre del guión, lo voy a llamar PET y esta va a ser nuestra clase PET. Ahora, vas a agregar un segundo argumento aquí en forma de cadena, y este sería un camino hacia una imagen dentro de tu proyecto. Un icono, y ese icono realmente aparecerá aquí, similar a cómo el control tiene un pequeño círculo aquí, círculo verde. Tu función reemplazará ese icono. Todo bien. Entonces dentro de Pet, lo que vamos a hacer es que vamos a poder crear algunas variables aquí, ¿verdad? Entonces savar nombre, derecho. Y eso será igual a una cadena vacía. Tendremos nuestra edad de nuestro PET. Y luego solo se pondrá a cero por defecto, y podremos tener el tipo, que se establecerá en una cadena. Ahora bien, ya que esta va a ser su propia clase, sería bueno que tuviéramos formas de cambiar algunas de estas cosas. Entonces podemos seguir adelante y podemos crear una función llamada name. Vamos. Y voy a poner esto a nuevos nombres para que podamos evitar conflictos. Eso y vamos a hacer esta función llamada change name. Vamos. Entonces ahora tenemos eso y podemos hacer lo mismo para nuestra edad y todo lo demás. Así que podemos entrar y podemos crear nuestro funk como un guión normal o como lo hacemos normalmente en un guión con una edad de cambio Pasaremos en una nueva era y simplemente nos pondremos Tenemos estos dos Mirlo Sí. Entonces queremos establecer la edad igual a la nueva era. Y podemos hacer lo mismo con el PET, con t eso cambiarías de tipo lo que realmente no tendría sentido a menos que tengas algún tipo de animal realmente extraño que pueda cambiar qué tipo de criatura es, supongo que algo así como lo mismo en Pokémon Entonces sigamos adelante y con un tipo igual al nuevo tipo. Y podemos determinar cuáles son estos. Diré cadena, y cadena de esa manera, no tenemos problemas y pasando las cosas. Y ahora que tenemos esto, voy a seguir adelante en cerrar la clase de función. Queremos agregar un nuevo script a un control aquí. Prueba de clase. Todo bien. Ahora bien, lo que vamos a hacer está dentro de nuestra bonita función. Ahora podemos seguir adelante y crear una nueva variable llamada PET y podemos establecer esto en PET dot new. Y ahora tenemos acceso a todas nuestras funciones, así que podemos decir PET, hacer un punto. Y ahora puedes ver, tenemos el nombre de la edad, tipo change age, el cambio de nombre, el tipo de cambio, y luego todas las cosas estándar que tendríamos en un nodo típico que estamos extendiendo. Entonces si quisiéramos, ahora podemos imprimir este es mi mascota por ciento S. Él es un por ciento S y es por ciento S O. Y ahora fácilmente podemos simplemente rellenar esto. Lo que tenemos aquí. Así que lo primero de PET son los nombres. Diré Etname alimentado por pet dot Type y pet dot H. Ahora, esto se está alargando un poco Se dan cuenta de estas líneas de luz aquí en el editor, y luego una línea mucho más dura aquí. Trate de no pasar esas líneas cuando sea posible. Y lo que podemos hacer es simplemente darle Enter no lo va a ver ahí. ¿Está en el oro? Entonces lo que podemos hacer es algo así y mantener todo organizado en una línea única. Podemos mantener todo claro así, y cuando escribamos o cuando arranquemos esto, crearemos una nueva mascota, pero no la vamos a agregar al árbol porque no necesitamos, en este caso, porque solo queremos acceder a las propiedades del mismo, ¿verdad? Y podemos crear. Esta es mi PET. Tenemos esta frase y rellenamos en base a la información que ahí tenemos, que la información que tenemos ahí, los valores por defecto están todos vacíos excepto el cero Entonces la frase todavía se ve un poco rara. Pero lo que podemos hacer es antes de hacer esa impresión es que podemos llamar Pet dot change Vamos a usar Name, por ejemplo, y podemos pasar en un nombre. Entonces vamos a decir Billy. Y ahora puedes ver que se llena aquí dentro de nuestra consola de salida. Y podemos hacer lo mismo con la edad y el tipo. Sin embargo, si vamos a hacer algo así obligatorio, entonces eso va a ser un poco molesto exigir que otro usuario lo haga de manera consistente. Entonces, lo que realmente hacemos allí es que podemos llamar una función int, y esto es algo que está integrado en todas las clases. Así funk subrayar INIT, abrir y cerrar Y aquí es donde podemos tener una lista fija de parámetros que tenemos que introducir. Y estas son todas las cosas que se establecerán de un default tan pronto como se haya creado nuestra clase. Entonces vamos a seguir adelante y pasar voy a decir nuevo nombre. Y luego haremos new age y new age, ¿verdad? Y entonces todo lo que vamos a hacer es que vamos a decir nombre es igual a nombre nuevo. Vamos a decir que la edad es igual, igual a la nueva era, y el tipo es igual al nuevo tipo. Ahora, cuando volvamos a nuestro script de prueba, verás que tenemos un error. Al menos deberíamos tener un error que surja. Aquí vamos. Y eso es porque ahora tenemos que tener argumentos. Entonces dentro de nuevo dentro de la nueva llamada aquí, esto es todos los parámetros que debemos rellenar para nuestra función int. Entonces necesitamos un nombre, una edad y un tipo. Y nuevamente, podemos llamar a estos por tipos tu cadena y y cadena ya ves cuando entremos aquí ahora, vamos a tener tenemos que rellenar esto, así que sigamos adelante para que podamos poner un nombre ahí dentro. Digamos murciélagos. Nuestro segundo argumento es nuestra edad que podemos poner en dos. Y entonces necesitábamos un tipo. Digamos perro Muy bien. Sigamos adelante. Podemos ejecutar eso. Y ahora vemos todo lo que se construye. Este es mi bax mascota. Tiene un perro y tiene 2 años de Ahora, todo eso se llena. Condensamos eso porque no necesitamos hacer no necesitamos escribir tres funciones diferentes para cambiar esto de nuestra mascota Y en cambio, simplemente lo ponemos todo dentro de nuestro en él o nuestra función inicializada que viene a reconstruir en todas las clases Derecha. Espero que eso te dé una idea de qué son las clases y cómo podemos crearlas y cómo podemos realmente usarlas dentro de nuestro código. Se puede acceder a una clase para cualquier script o más bien se puede crear una nueva instancia de esa clase a partir de cualquier script. Y podrías crear una clase solo para tener algunas utilidades para que puedas ahorrar tiempo. Yo solo lo traigo en una utilidad y llamando a algunas funciones específicas que quizás necesites por todas partes, o podrías usarlo para crear un objeto, como, en este caso, una clase de mascota o si estás creando un juego, tal vez una clase enemiga, y entonces ese enemigo tendría su propia salud y su propio ataque y su propio conjunto de información. 21. Lo que vamos a hacer(espacio llenado): Bien, esta semana, vamos a poner las cosas a un nivel superior y en lugar de salirnos de solo algún texto, como hicimos la semana pasada Esta semana, vamos a estar creando o recreando un viejo juego de dos D de los 80 llamado Frogger Ahora esto nos va a dar la oportunidad de trabajar con un controlador de dos jugadores D. Colisiones. A lo mejor nos meteremos en algunas partículas. Podemos trabajar con algunos reproductores. Y como ves, si nunca antes has jugado Frogger o nunca has oído hablar de él, ya ves aquí, vamos a estar trabajando con UI para heads up display Tenemos puntos que vamos a necesitar hacer un seguimiento. Encuentra mi ratón ahí por un segundo. Pero no sólo eso, sino que también vamos a tener que ver ¿lo va a mostrar aquí? Bien, entonces tenemos cierta cantidad de ranas por jugador. Obviamente, no tenemos que meter monedas. Pero este es esencialmente el juego aquí. Entonces tenemos dos pequeñas zonas seguras en esta pequeña área morada. Tenemos una carretera en el medio que tiene cinco carriles de tránsito alternando de ida y vuelta. Y si la rana es atropellada por uno de estos autos, mueren y el jugador pierde una vida. Lo hacen hasta la cima. Pueden subirse a las tortugas y troncos para llegar a la zona segura Si aterrizan en el agua, eso también es un fracaso. Lo cual supongo ahora que lo piensas , como que no hace demasiado en sentido, ya que es una rana. Pero ahí tienes. Esa es la idea de lo que vamos a estar creando, y eso es lo que es Frogger si nunca lo has jugado o oído hablar de él 22. Crear el libro de cuentos: Bien, bienvenidos, a todos. Y hoy, vamos a empezar a crear nuestro primer juego. Lo que vamos a crear hoy es en realidad el libro de cuentos para nuestro MadisGame Y este libro de cuentos va a contener todas nuestras historias así como las indicaciones que le vamos a pedir al jugador Ahora, si quieres, puedes seguir adelante y crear esto en un proyecto totalmente nuevo. Yo sólo voy a seguir adelante y borrar nuestros pequeños ejemplos aquí que estábamos usando. Cuando estabas aprendiendo el idioma aquí, solo vas a seleccionarlos y eliminarlos. De esa manera, puedo comenzar con borrón y cuenta nueva. Y como solo voy a mantener todos nuestros proyectos dentro de este proyecto de aquí, solo voy a seguir adelante y crear una nueva carpeta y llamarla MDLibs Nuevamente, te recomendaría que crees un nuevo proyecto por completo. De esa manera eres capaz de exportar todo de forma individual. Bien, así que seguimos adelante y tenemos esto. Contamos con nuestra MadipsFolder, para tu proyecto. Y sólo voy a seguir adelante y dar click en mi carpeta. Si estás iniciando un nuevo proyecto, puedes simplemente hacer clic derecho en un espacio vacío. Y voy a crear un nuevo guión. Voy a seguir adelante y crear un guión aquí, y solo voy a llamar a esta clase de libro de cuentos y golpear Preate Todo bien. Entonces ahora puedo seguir adelante y el mío no cayó en mi carpeta porque hice clic en el exterior, así que solo voy a hacer click derecho y moverlo a donde me gustaría Y lo tengo dentro de mi carpeta aquí, ¿no? Voy a abrir eso. Podemos extender No, está bien. No vamos a necesitar ninguno de estos porque esta clase sólo va a tener alguna información para nosotros. Entonces voy a seguir adelante y poner en un libro de cuentos de nombre de clase, y vamos a necesitar extiende para esto No, no creo que lo seamos. Así que voy a seguir adelante y mover todo eso para que tengamos un nuevo comienzo completo aquí. Bien, así que aquí vamos a crear nuestras historias, y nuestras historias van a ser mantenidas dentro una variable que es de tipo diccionario Bien, así que voy a crear una variable llamada Historias. Y eso va a ser un diccionario. Y porque es un diccionario, voy a seguir adelante Enter para abrir esto. Recuerde que el diccionario se denota las llaves que rodean nuestra información aquí Y para estos, sólo puedo decir historia uno y dos puntos, esa va a ser nuestra clave. Y ahora necesitamos un valor para eso. Y ese valor también será un diccionario porque vamos a necesitar dos piezas de información aquí dentro de la historia. Vamos a necesitar la historia real. A y eso va a ser solo una cadena vacía por ahora. Y entonces también va a tener uno para nuestros apoyos. Y eso solo va a ser una matriz. Entonces aquí vamos a tener corchetes. Y esta es la plantilla que vamos a utilizar para todas nuestras historias. Entonces vamos a tener la historia uno, historia dos, la historia tres, cuarta, etcétera Y todo lo que vamos a hacer es seguir adelante y construir esto. Entonces, por ejemplo, para la historia, vamos a decir, vamos a ver ¿qué queremos poner aquí? Bien, así que seguí adelante y creé mi pequeña historia aquí Entonces un día el porcentaje S. Ahora, porcentaje S es solo un marcador de posición para cualquier cadena Y podemos reemplazar esto más adelante con lo que sea que el usuario ponga en. Entonces este porcentaje S, en este caso, va a actuar como nuestro espacio en blanco en nuestra historia. Así que un día el espacio en blanco se fue al blanco para recibir una Quest. Esta búsqueda era ir a Blank para recuperar el espacio en blanco, ¿verdad? Entonces tenemos esta pequeña historia aquí, y ahí vamos. Si quieres dividir la historia en múltiples líneas, fácilmente podemos hacer esto. Entonces al hacer esto teniendo nuestro corte aquí al final, y luego en la siguiente línea, tenemos un plus Se va a agregar esta cadena a esta cadena, y ahora podemos tenerla toda junta en un solo lugar. Pero no solo eso, es mucho más fácil de ver cuando está todo en línea o en un sitio como este. Ahora, seguí adelante e imprimí esto con un int solo para fines de prueba solo para asegurarme no estamos pasando problemas, no hay errores raros. Ahí vamos. Estamos todos preparados. Ahora, para nuestras indicaciones, estas van a ser cadenas dentro de esta matriz dentro de esta lista Y a medida que avanzamos, un día, el espacio en blanco. Entonces este espacio en blanco tiene sentido si es un sustantivo, así podemos seguir adelante y simplemente escribir sustantivo ¿Y qué sigue? Se fue al espacio en blanco, así que este va a ser un lugar. Nuestro próximo en recibir una búsqueda. Esta búsqueda era ir a la era para ir a, y este será otro lugar para recuperar algo. Eso sólo sería otro sustantivo. ¿Todo bien? Entonces así es esencialmente como vamos a trabajar con nuestras indicaciones. Así que vamos a través. Tenemos sustantivo entonces un lugar, luego otro lugar, y luego un sustantivo, y eso llena todas nuestras opciones aquí Eso nos dará suficientes cosas para llenar nuestros espacios en blanco. Y todo lo que tenemos que hacer ahora para más historias es simplemente poner una coma aquí al final, caer a una nueva línea, pegar un duplicado de lo que acabamos de tener, cambiar la historia uno a la historia dos Y ahora podemos seguir adelante y crear otra historia con algunas indicaciones más, y podemos simplemente seguir adelante y hacer esto repetidamente Con el fin de tener un bonito libro de cuentos completo para usar. Bien, entonces tenemos una segunda pequeña historia aquí. Una mañana, D Baker fue a Fui a Blank U en tienda. Para su sorpresa, sin embargo, había un espacio en blanco que paraba en blanco. Ahora, seguí adelante con el sustantivo verbo y Pronow, pero ahora pensando en ello, Pronoun probablemente no tiene sentido, porque ya dijimos que esto era un él Su tienda, su sorpresa. Entonces solo voy a cambiar esto de nuevo a solo ser un sustantivo, así que deja de ser Blaine Y puedes simplemente seguir adelante y hacer esto continuamente y crear tantas pequeñas historias divertidas como puedas y realmente llenar tu libro de cuentos Y una vez que tengas tu libro de cuentos completamente creado y listo, entonces podremos pasar a la siguiente sección de este y comenzar a crear la interfaz con la que nuestro usuario interactúe Y entonces realmente vamos a entrar en la creación del código y hacer que todo funcione. 23. Crea la interfaz: Bien, así que sigamos adelante y comencemos a crear la interfaz que vamos a necesitar para nuestro jugador realmente juegue el juego Entonces en este momento, aquí solo tenemos una escena vacía, y vamos a necesitar una nueva. Entonces vamos a ver ¿qué queremos? Bueno, vamos a necesitar que el jugador pueda escribir algún texto, justo para las indicaciones que se proporcionan Obviamente vamos a necesitar mostrar texto en la pantalla para que el usuario sepa qué indicaciones necesita, así como leer la historia al final Y podemos seguir adelante y poner un botón ahí también. De esa manera, si el usuario no quiere presionar Enter, puede hacer clic en el botón y aún así enviar su texto. Entonces esas son tres cosas que vamos a necesitar como mínimo aquí. Entonces, sigamos adelante. Podemos crear voy a seguir adelante y dar clic en Interfaz de usuario aquí en la sección crear nodo raíz en el lado izquierdo, y eso nos va a dar un nodo de control para iniciarnos. Todo bien. Y voy a seguir adelante y renombrar esto a Maine ya que esta va a ser la fuente principal aquí para nuestro juego. Voy a presionar este pequeño botón más justo encima de él con Main seleccionado, y esto me va a incitar a crear un nuevo nodo. Ahora aquí solo estás haciendo todos los diferentes objetos que podríamos crear. Y recuerden, también podemos hacer esto en código. Sólo estamos haciendo, por ejemplo, vamos a entrar en Control. Y sabes que sólo voy a seguir adelante y buscar. Estoy buscando esto. Entonces el equivalente a seleccionar eso y que se agregue aquí sería lo mismo que si tuviéramos un guión en nuestro principal aquí, y acabamos de decir línea editar punto nuevo, y luego lo agregamos a la escena. Eso es exactamente lo mismo que lo que acabamos de hacer aquí, solo que estamos haciendo las cosas visualmente, solo porque esto va a ser más rápido al final del día. Y si tenemos las herramientas para acelerar la producción, también podemos aprovecharlas. Voy a seguir adelante y solo agarrar las naranjas pequeñas manilla anaranjada aquí, estiro. Y voy a seguir adelante y mientras eso esté seleccionado, voy a ir a la parte superior de mi pantalla. Haga clic. Ahí vamos. Este pequeño icono al lado del ancla, y obtendrás una ventana emergente para los ajustes preestablecidos de anclaje Y sólo voy a seleccionar la que esté en el centro de mi pantalla. Ahí vamos. De esa manera, sé que mi campo de texto siempre estará justo en el medio. Bien. Entonces ahora este objeto tiene un montón de propiedades o también se puede llamar son variables, derecho, que están en estas a las que podemos acceder. Y uno de estos es el texto de marcador de posición. Y podemos ver eso si echamos un vistazo en el lado derecho del inspector. Podemos ver el texto del marcador de posición aquí. Ahora, podemos seguir adelante y escribir aquí, y esto le dará a nuestro usuario una idea de lo que se supone que debe escribir. Al igual que cómo vas a un sitio web y podría decir correo electrónico en el campo de correo electrónico y contraseña en ese campo. Entonces vamos a decir enviar prompt, dot, dot, dot. De esa manera nuestro usuario sabe que aquí es donde envía su prompt. Y voy a seguir adelante y renombrar mi línea editar a usuario quieres llamarlo User prompt? No, llamémoslo prompt quieres ir prompt text, prompt field. Envío rápido. Ahí vamos, porque enviamos nuestra fuente aquí o no fonti prompt, lo siento Entonces voy a ir con eso y solo llamar a envío rápido. Ahora, sí mencioné que quería un botón, así que volveré a seleccionar Principal. Quiero que ese sea el dueño. Voy a escribir botón en la parte superior. Y ahora tengo un botón, y voy a poner el texto de este botón para que sólo diga, Bien. Y voy a hacer lo mismo con botón seleccionado, voy a seleccionar el botón en la parte superior junto al ancla y seleccionar centro. De esa manera, se puede centrar. Y solo voy a agarrarlo con click izquierdo, y luego voy a sostener Shift después y deslizarlo hacia la derecha si puedo conseguirlo Aquí vamos. Así como así. Ahí vamos. Ahora bien, creo que algunas historias pueden llegar a ser un poco largas. Entonces voy a seguir adelante y agarrar ambos de estos, tanto mi prompt como mi botón o. Y para eso, yo solo seguí adelante y puedes cambiar clic o Click de Control. De cualquier manera, trabajaremos para aquí. Voy a agarrarlo en mi UI y luego mantener presionado Shift para que podamos mantenerlo en línea recta, y solo voy a moverlo un poco hacia abajo solo para que tengamos un poco más de espacio la parte superior en caso de que nuestras historias se alarguen un poco. Bien. Entonces, ¿estas anclas muestran dónde va a estar nuestro objeto en relación a este punto en la pantalla Entonces este ancla está en el centro muerto de nuestra pantalla. Entonces, independientemente de cuán grande sea la ventana, este campo de texto, esta línea edita, y este botón Bien va a estar tan lejos, aproximadamente del centro en todo momento. Entonces eso casi va a actualizar automáticamente su posición en función de los anclajes y el tamaño de la ventana Lo cual es genial para nosotros, es porque nunca sabemos qué tan grande va a ser una pantalla Veamos. Yendo de aquí, ¿ qué más necesitamos? Bueno, vamos a necesitar mostrar algún texto. A ver. Podríamos usar una etiqueta para solicitar o mostrar nuestra información. También podríamos usar un Texto enriquecido, que creo que vamos a usar un thad Entonces vamos a seguir adelante y agregar otro a nuestra escena, y esta va a ser una etiqueta de texto enriquecido. Y sólo voy a sacar esta caja naranja, esta manija. Y creo que voy a poner las anclas al centro de esa manera todo va a ser relativo aquí Haga clic en mantener presionada la tecla Mayús y colóquelo. Y creo que eso servirá para mucha de nuestra información, ¿qué tan grande es este texto? Sí, creo que va a estar bien. Bien, vamos a ver. Etiqueta de texto enriquecido, voy a seguir adelante y cambiarle el nombre a mi texto de visualización. Bien. Entonces creo que eso es todo lo que vamos a necesitar. Voy a seguir adelante y golpear Controles y guardar mi escena. Aquí está dentro de mi carpeta. Y ahora si fuéramos a ejecutar eso, no tendríamos problemas. Podemos ver que todo ha funcionado perfectamente bien aquí. Todo se ve bien. Podemos escribir dentro de nuestros libros. Y voy a seguir adelante y buscar la ventana, para que pueda mostrártelo aquí. Ahora va a ser importante que veas la ventana. Ahí vas. Se puede ver que podemos escribir en él, y eliminar cosas fuera de él. Impresionante. Podemos presionar el botón OK. Fantástico. Ahora bien, este trasfondo es un poco soso. Es un poco aburrido. Entonces lo que voy a hacer es dirigirme a Google y simplemente seguir adelante y buscar Blackboard Ahí vas. Busca pizarra, pizarra, lo que quieras buscar así Y voy a seguir adelante y sólo escoger una imagen al azar y guardarla. Entonces ahora solo tengo que encontrar donde están mis carpetas. Aquí. Ahorra, vuelve a Gato. Y ahí tienes. Podemos verlo guardado aquí mismo. Dentro de mi carpeta. Entonces voy a agregar un objeto más a mi principal aquí en mi escena. Y esto va a ser una textura rect que solo voy a renombrar fondo Y solo voy a arrastrar aquí la imagen de Blackboard que creé o lo siento, no creé que encontré en Google Y con fondo seleccionado, la textura rect, voy a arrastrarla a la ranura de textura del lado derecho, dentro del inspector y soltarla Y si es necesario, vas a cambiar el tamaño de expansión aquí y el estiramiento si es necesario para cambiar el tamaño y ajustar esto Por ejemplo, si configuramos esto para mantener aspecto, no se va a mover, pero si cambiamos nuestro modo de expansión para ignorar el tamaño, por ejemplo, aquí vamos. Podemos ver que podemos ir con eso. Y si solo cambiamos mantén aspecto a escala, aquí vamos. Ahora podemos estirarlo para que se ajuste a nuestras necesidades. Ahora bien, lo importante es que veas este contorno azul aquí. Todo dentro de esa caja es lo que vamos a poder ver dentro de nuestra ventana. Así que solo voy a hacerlo un poco más grande que nuestra ventana solo para asegurarme de que esté completamente cubierta. Y nuestras anclas en la esquina superior izquierda. Ahora, para un trasfondo, eso no va a funcionar. Entonces voy a seguir adelante y ajustar mis anclas, y voy a seleccionar la que esté completamente destrozada Y eso va a poner un alfiler en cada esquina. Eso va a asegurar que no importa el tamaño de nuestra ventana, este fondo siempre va a llenarlo. Todo bien. Entonces ahora tenemos un tema. Nuestros antecedentes están por encima de todo. No podemos ver nuestro botón ni nada de lo que hicimos antes. Bueno, esto es solo por capas, esencialmente. Si has trabajado en algo como Photoshop, aquí estarás familiarizado con las capas. Todo lo que tenemos que hacer es simplemente agarrar nuestros antecedentes, y en realidad tenemos que refrenarlo. Porque lo que hay en la parte superior va a estar detrás de todo lo demás en la parte inferior. Sé que es algo así como al revés en Photoshop. En la parte inferior suele estar lo que hay detrás de todo. Entra aquí, solo una especie de volteo, algo que tienes que recordar. Pero ahí vamos. Con eso, tenemos todas nuestras imágenes preparadas aquí y estamos listos para comenzar a saltar a parte del código para que nuestros botones y todo lo demás funcionen y comenzar nuestro juego 24. Selecciona la historia y cómo indicar al jugador: Bien, vamos a seguir adelante y saltar a hacer algo de nuestro código ahora Aquí vamos a poner nuestro script en nuestro nodo principal. Entonces solo voy a agregar un guión. Sólo voy a dejar el mío llamado Min y darle a Create. Bien, así que vamos a ver. ¿Qué tenemos que hacer? Bueno, tenemos que hacer un seguimiento de cuál es nuestra historia actual. Así que vamos a seguir adelante y crear una variable para eso. Historia actual. Eso va a ser. ¿Va a ser una matriz en nuestro caso? Vamos a seleccionar una historia, y eso nos va a dar No, eso nos va a devolver un diccionario. Pero en realidad podemos contener esto y convertirlo en un diccionario. Ahí vamos. Vamos a necesitar hacer un seguimiento de las palabras de nuestros jugadores, ¿verdad? Las palabras que han presentado. Entonces vamos a decir palabras a los jugadores, y esa será una matriz a la que podamos agregar. Ahora, vamos a usar una palabra clave aquí llamada en ready. Y en 4.1 aquí, realidad tenemos que usar esto en símbolo para poder usar estas palabras clave. Pon esto en símbolo y luego úsalo listo. Entonces podemos seguir adelante y crear nuestra variable como normal. Y este va a ser nuestro texto de jugador. Lo cual va a ser igual a nuestra pronta sumisión que queremos conseguir Entonces, para obtener este nodo, en realidad hay un par de formas de hacerlo. El más fácil es simplemente usar este signo de dólar, lo que simplemente significa obtener nodo. Y desde aquí, tenemos un fácil acceso a nuestra pronta presentación. Como veis, aquí sólo tenemos que bajar un nivel. Y si empezamos a escribir, veremos el pop up auto completo para nosotros y le pegamos a eso, ahí vamos. Siempre que queramos acceder a este objeto, solo podemos escribir el texto del reproductor. Ahora, vamos a hacer esto también para nuestro texto de visualización y nuestro botón. Entonces voy a decir que el texto de visualización es igual a lo que acabo de llamarlo mostrar texto. Impresionante. Y tendremos uno más para nuestro botón. ¿Necesitamos el botón? No, en realidad no lo hacemos. No vamos a necesitar uno para eso. No vale la pena usar este botón predeterminado aquí. Bien. Entonces, sigamos adelante y eliminemos el proceso de ahí. Entonces, qué vamos a necesitar, veamos. Tenemos que seleccionar una historia, ¿verdad? Entonces tenemos que asignar nuestra historia actual, y para mantener las cosas organizadas, vamos a crear una función para mantener nuestra historia actual establecida. Es una historia de actualidad funk ambientada. Así es. Y como esta es una función separada, voy a ir dos líneas en el medio. Y ¿cómo establecemos cómo vamos a establecer aquí esta historia actual? Bueno, no vamos a devolver nada al final de esto porque sólo vamos a asignarlo directamente a nuestra variable. Entonces, para conseguir esto, vamos a necesitar obtener un número aleatorio o seleccionar una historia aleatoria. Así que voy a crear una variable llamada Historias, y esta va a ser una matriz, que solo va a ser igual a nuestra clase de libro de cuentos punto StresOh Y mira, no podemos acceder a eso. Así que volvamos a nuestra clase de libro de cuentos, y para evitar tener que crear un nuevo objeto para esto, ya que todo lo que necesitamos es acceder a las historias que hay en ella, vamos a usar esa palabra clave estática que mencionamos en la semana uno Ahora mismo volvemos a nuestro guión principal, y podemos hacer storybook dot STRS No puedo asignar un valor de diccionario de tipo a variable, así que queremos obtener nuestras Y en este diccionario, vamos a usar vamos a llamar teclas de punto, paréntesis abiertas y cerradas Y lo que esto va a hacer esto las claves llaman aquí que podemos llamar a un diccionario, va a devolver una matriz o una lista de la historia uno, historia dos, historia tres, historia cuatro, etcétera Así que eso va a tener todos nuestros pequeños nombres de historias aquí. Todo bien. Ahora, a partir de aquí, tenemos que seleccionar uno aleatorio. Entonces la pregunta es, ¿ cuál queremos? Bueno, aquí vamos a crear una variable llamada historia seleccionada. Y, por supuesto, esto sólo va a ser una cadena porque todas nuestras historias son cadenas. Entonces tiene sentido. Y vamos a acceder a nuestras historias aquí, bien, historias de Ray. Y en 4.1, solo podemos seleccionar pick random. Eso es todo lo que tenemos que hacer, y va a seleccionar aleatoriamente una historia para devolvernos. Y eso es todo lo que tenemos que hacer para eso. Ahora todo lo que tenemos que hacer es seguir adelante y establecer nuestra historia actual. Entonces podemos decir historia actual. A ver. Simplemente lo configuramos a eso. Entonces eso debería darnos un diccionario completo. Ambos, eso debería estar bien. Entonces solo diremos que la historia actual es igual a la historia seleccionada. La fuerza no se puede asignar a un tipo de variable. Oh, eso es correcto. Tengo que escribir eso de otra manera. Storybook dot Storys y luego voy a usar estos corchetes aquí porque queremos acceder a la historia que está dentro de ella Y al que queremos acceder es la historia seleccionada, ¿verdad? Entonces otra vez, vamos a repasar esto. Estamos creando una variable llamada stories, y esa es una matriz o una lista. Y eso se está asignando a todas las diferentes historias, bien, las claves de nuestro diccionario. De todas nuestras historias dentro de nuestro libro de cuentos. Así que ahora las historias tienen todos nuestros pequeños títulos de historias. Y luego la historia seleccionada es una cadena que se está configurando en una historia aleatoria fuera de ahí, fuera de nuestra lista. Y luego estamos configurando la historia actual que ya creamos arriba, que es el diccionario. Estamos configurando eso igual a la historia que está dentro de nuestro libro de cuentos, la historia que seleccionamos. Todo bien. Y podemos ver este trabajo fácilmente si solo subimos a nuestro bloque listo aquí, y tenemos que llamar realmente, establecer historia actual porque obviamente vas a hacer eso al comienzo del juego. Y luego sólo voy a seguir adelante e imprimir nuestra historia actual. De esta manera, solo podemos ver si está funcionando porque ya está vacío por defecto. Entonces, si lo imprimo antes, establecemos nuestra historia actual, deberíamos poder verla, y solo voy a tocar esta escena. Aquí vamos, así podemos ver que está vacío en la parte superior. Y luego después de que pusimos nuestro saque, tenemos la una mañana que el Panadero se puso en blanco para abrir su tienda para su sorpresa, sin embargo. Entonces parece que tenemos la primera historia. Vamos a ejecutar eso otra vez. Y aquí vamos. Tenemos una historia completamente diferente aquí ahora. El cielo en blanco era hermoso tono de blanco mientras el blanco en blanco arrojaba el espacio en blanco. Y podemos ver que tenemos nuestros prompts todos aquí también. Esto es fantástico. Todos estamos apareciendo aquí. Todo está funcionando muy bien. Ahora tenemos una historia con la que trabajar. Los tenemos seleccionados al azar. Ahora tenemos que preocuparnos por cómo incitamos al jugador, ¿verdad? Bueno, ya no necesitamos estas declaraciones impresas porque sabemos que está funcionando bien. Entonces nuestra historia ha sido ambientada. ¿Cómo podemos incitar a nuestro jugador? Bueno, sencillo. Vamos a bajar, crear una nueva función. Vamos a llamarlo jugador rápido. Y lo que vamos a hacer es a ver. Vamos a entrar directamente en nuestro texto de visualización. Y queremos acceder a la propiedad text de eso para que podamos establecer eso. Y para eliminar cualquier posible confusión, vamos a decir, usemos más iguales aquí, y veamos cómo esto busca nuestra situación. Y voy a decir, May, tengo la cosa que le vamos a agregar, va a ser nuestra historia actual proms Y el aviso que vamos a preguntar cómo sabemos cuál queremos va a estar basado en nuestras palabras de jugador que creamos arriba aquí, ¿verdad? Palabras de nuestros jugadores. Y vamos a basar eso el tamaño porque recuerden, cuando estamos trabajando con una lista, empezamos a contar a cero, uno, dos, tres, ¿verdad? Entonces, si el tamaño de nuestro jugador es cero, eso significa que aún no tenemos presentaciones. Entonces vamos a obtener el primer ítem de esta lista. Si tenemos un elemento en el jugador enviado una palabra, entonces vamos a obtener el segundo elemento, y así sucesivamente. Bien, así podremos avisar al jugador de esta manera. Y sé que eso se está haciendo un poco largo de ese lado , pero veamos. Por el momento, eso es todo lo necesitamos para incitar al jugador. Todo bien. Entonces, lo que vamos a hacer a partir de aquí después de seleccionar la historia actual, retroceder ya, podemos seguir adelante y llamar al jugador prompt desde allí. Y eso debería ser todo lo que necesitamos. Así que sigamos adelante y probemos. Oh, parece que me he topado con un problema aquí, ¿ y qué es eso? Echemos un vistazo. Ah, sí, aquí veo el error. Dime indicaciones no es una cosa porque usé una P mayúscula dentro de mi libro de cuentos Entonces, si solo hago de eso una P mayúscula, eso debería resolver mi problema. Y ahí vamos. Entonces nos está preguntando, ¿podría darme un verbo? Y entonces puedo seguir adelante y teclear aquí. Puedes golpear Bien, golpear Enter. Nada va a cambiar aquí en este momento. Pero te das cuenta como tuve que dar click en esa casilla cuando empezamos. Entonces, si acabo de reiniciar eso, y ahora tengo que bajar aquí, tengo que hacer click en él yo mismo. Bueno, ¿por qué no lo automatizamos? Sigamos adelante y obtengamos el texto del jugador. Y vamos a llamar a algo llamado Grab focus. Entonces ahora cuando ejecutamos esto, ahí vamos, ya está ahí, y podemos empezar a escribir de inmediato. Así que no tenemos que perder el tiempo. Todo bien. Entonces, para poder seguir incitando al jugador, tenemos que echar un vistazo a nuestras palabras que están siendo enviadas, ¿verdad? En realidad tenemos que presentar estas palabras. Entonces para esto, vamos a tener que conectar algunas señales para que sepamos cuándo suceden las cosas. Entonces voy a seguir adelante y dar clic en mi pronta sumisión en mi escena. Entonces me voy a mover hacia la derecha y dar clic en la pestaña que dice nodo. Y aquí podemos ver todas las señales por defecto que han estado aquí. Y el que estamos buscando es texto enviado bajo la sección de edición de líneas. Y básicamente, cada vez que golpeamos la tecla enter, va a enviar cualquier fragmento de texto que el usuario haya escrito Así que sólo voy a seguir adelante y hacer doble clic sobre eso. Bien, entonces deberías ver una pantalla como esta, y todo esto está genial porque no tenemos ningún guion en esas, y esta es azul porque de eso estamos tratando de conectar la señal. Así que solo vamos a seleccionar nuestro principal porque eso tiene nuestro guión en él, y vamos a darle a Connect. Si quieres renombrar la función aquí, puedes, no voy a hacerlo. Sólo voy a dejarlo con el nombre predeterminado aquí, y solo voy a presionar el botón Conectar. Y lo verás agregado aquí mismo en la parte inferior hacia arriba de nuestro guión. Solo voy a mantener presionada la tecla Alt y usar la tecla de flecha hacia arriba para desplazarla hacia arriba algunos espacios. Ahí vamos, quítate eso del camino. Vamos. Eso está fuera del camino. Pero ahí vamos. Entonces vemos en este nombre de función, que va a desencadenar a partir de esa señal, va a ejecutar este bloque de código. Ahora podemos ver que tenemos nuevo texto, que es una cadena que se nos pasa. Para que ese nuevo texto sea lo que se haya escrito dentro de esta línea. Todo bien. Entonces, cuando se envía un fragmento de texto, lo que tenemos que hacer es agregar esto a nuestras palabras de jugador. Y como vamos a necesitar hacer esto potencialmente varias veces a lo largo o al menos en múltiples ubicaciones, vamos a seguir adelante y crear una función para ello. Funk, agrega vamos a ver ¿cómo lo llamé? Agrega a las palabras del jugador para que podamos mantener las cosas limpias. Aquí vamos. Y todo lo que vamos a hacer dentro de esta función es que vamos a añadir nuestras palabras, ¿verdad Palabras de los jugadores. Anexar. Ahora, anexar Esta llamada aquí solo nos permite agregar cosas a nuestra matriz, agregar elementos a nuestra lista. Entonces, lo que sea que escribamos aquí se agregará y todo lo que vamos a agregar es playertext dot text Ahora bien, podríamos hacer esto posible hacer más limpio, pero podría causar algunos problemas potenciales más adelante. ¿Quién sabe? Así que vamos a hacerlo de esta manera por ahora. Y lo que va a estar bien es si ese texto de visualización, si lo borramos de nuestra pantalla, así que lo hacemos una cadena vacía y vacía, supongo que se podría decir. Vamos a decir display text dot. Y vamos a llamar claro, y eso sólo va a vaciarlo. Y lo que eso va a hacer es que va a quitar el prompt que está en nuestra pantalla, pidiéndonos un verbo o un sustantivo o lo que sea Y para mostrar visualmente a nuestro jugador que nuestro texto ha sido enviado, podemos seguir adelante y hacerlo también con el texto de nuestro jugador. Echemos un vistazo a cómo se ve eso ahora. Tenemos que volver a llamar hasta aquí antes de que nos olvidemos. Entonces, en nuestro texto enviado, vamos a llamar a agregar a las palabras del jugador. Todo bien. Entonces, si seguimos adelante y ejecutamos esto y le echamos un vistazo ahora, usted dice, ¿podría tener un verbo y vamos a decir correr? Y le pegué a Enter. Y ven nuestro texto aquí abajo estaba vaciado y nuestro tablero en la parte superior aquí también se vació Entonces eso es genial. Parece que nuestro texto fue enviado y estamos listos para actualizarlo con un nuevo aviso. Fantástico. Todo bien. Entonces, para continuar con nuestras indicaciones, vamos a configurar parcialmente lo que vamos a necesitar para configurar el final y reiniciar Así que sólo vamos a dejar esa parte de eso afuera y volver a esta función en el futuro. Entonces ahora mismo, solo vamos a usar esto para verificar o llamarlo verificar palabras del jugador Lang. Entonces no quiero que te confundas con ese nombre. Tendrá más sentido cuando agreguemos cuando estemos comprobando si el juego ha terminado. Entonces voy a ir funk, comprobar las palabras del jugador Lang Bien. Entonces lo que vamos a hacer es la forma en que podemos decir esto Veamos. Podemos decir si vamos a usar una declaración if aquí. Entonces voy a decir si las palabras del jugador obtuvieron tamaño. Y recuerda, eso solo va a conseguirnos la cantidad de artículos que están dentro de nuestras palabras de jugador aquí. Entonces la cantidad de palabras que ya hemos presentado. Y vamos a decir que es igual a nuestra historia actual, las indicaciones, las ollas de baile No Ahí vamos, apuntes puntuales. Tamaño de punto porque recuerda que nuestras indicaciones es una lista. Y claro, aquí tenemos un error hasta que ponemos nuestro colon ahí al final de nuestra línea. Entonces vamos a decir si el jugador ha enviado la misma cantidad de palabras que tenemos prompts, entonces podemos hacer algo Pero no queremos hacer eso, ¿verdad? Porque queremos decir, si no, así. Porque queremos decir, Oh, si el jugador aún no ha enviado suficientes palabras, entonces tenemos que avisar al jugador nuevamente, y eso es exactamente lo que vamos a hacer. Vamos a llamar jugador prompt. Todo bien. Y cuando se trata del siguiente video, volveremos y reescribiremos esta función Pero por ahora, esto debería funcionar para nosotros. Sigamos adelante y echemos un vistazo. Entonces, ¿podría darme un adjetivo? Claro. Vamos con guapa. Pulsas Enter y la cosa está actualizada. Pero en realidad no estamos comprobando la longitud de nuestro jugador en ningún lado, así que ya ves por qué eso es un problema. Entonces, ¿vamos a ver dónde hacemos eso? Eso lo hacemos cuando sumamos a las palabras de nuestro jugador. Entonces después de agregar la palabra y realmente enviar esta palabra por nosotros, luego revisaremos el enlace y veremos si podemos seguir jugando y si es así, avisaremos al usuario para la siguiente. A ver. ¿Me puede dar un verbo? Sí, vamos con RN o Run. Ahí vamos. ¿Podría darme un sustantivo, perro? ¿Puedo tener adjetivo? Bonita. Podría tener adverbio Sí, con rapidez. ¿Podría darme un sustantivo? Espero que aquí tengamos muchas cosas. Rojo. ¿Podría tener un verbo que termine en ING? Robo. Y ahí vamos, lo nuestro ha terminado. Se nos acabaron las indicaciones. Aún no tenemos nuestra historia, pero tenemos todas nuestras indicaciones sucediendo allí Ahora, podemos ver que nuestro texto de visualización en realidad no se aclaró, lo cual es interesante. Entonces, en lugar de llamar clear dentro de nuestras palabras add to player, vamos a obtener la propiedad text y establecerla en una cadena vacía. Y veamos cómo funciona eso aquí. Tengo un verbo, corre. Ahí vamos. Entonces ahora lo tenemos actualizando de esta manera. No estoy seguro de por qué claro no está funcionando. A lo mejor hay un bicho ahí ahora mismo. No lo sé. Pero podemos simplemente borrarlo manualmente configurándolo en una pantalla vacía. Y si quieres mantener eso como uno en cada línea, si quieres que eso siga adelante, uno en cada línea, todo lo que tenemos que hacer es simplemente agregar un plus igual y hacer esto back end. ¿O es un delantero? Creo que es el delantero aquí, y esta va a ser una nueva línea. Entonces, si le echamos un vistazo de esta manera, así puede tener a b run, y eso en realidad no va a ir de esa manera. Siempre mezclo estos dos en cuanto a en qué dirección se supone que debe ir. Adjetivo. Bonita. Ahí vamos. Ahora podemos tener un nuevo ent en cada línea para preguntarte. Entonces, si prefieres tenerlo así, es como puedes hacer ese pequeño retoque. Tener un sustantivo Sí, perro terminando con ED Estoy dibujando un espacio en blanco aquí ahora mismo. No sé por qué, pero entiendes la idea. Para que podamos tener una nueva línea de esa manera donde puedas aclararla completamente hasta ti sobre cómo quieres que te presenten. Bien. Y creo que eso es suficiente para hoy porque creo que todo lo que necesitamos ahora es básicamente terminar nuestro juego, ahora es básicamente terminar nuestro juego, ya sea terminarlo por completo, contar nuestra historia, ver si el jugador quiere volver a jugar, y todas esas cosas divertidas. Entonces una nota rápida aquí antes de despegar. En lugar de incitar al jugador aquí en la parte superior, lo que podemos hacer ahora es que en realidad podemos hacer simplemente verificar la longitud de las palabras del jugador dentro de nuestro listo, y eso debería configurarnos lo mismo visualmente Sí, ahí vamos. Bien. Entonces ahí lo tienes. Tenemos gran parte de nuestra configuración de juego aquí. Es simple en cuanto a los videojuegos, y te está dando la oportunidad de usar realmente las cosas que hemos repasado en la primera semana, independientemente de qué versión si hiciste las dos. Así que estamos trabajando con variables, diferentes tipos de datos, sin duda trabajando con funciones para mantener todo agradable y limpio. Estamos usando programación orientada a objetos aquí con nuestro libro de cuentos que estamos impulsando a nuestros jugadores Estás aprendiendo algunas cosas nuevas. Si no pasaste por la versión alternativa, has aprendido sobre append Has aprendido sobre Grab focus, independientemente de cuál hayas pasado por ahí, has aprendido sobre pick random y keys. Así que has aprendido bastantes cosas además de lo que hayamos aprendido en la primera semana, cualquiera que sea la versión por la que hayas pasado, tal vez pasaste por ambas Pero voy a dejar de divagar por aquí, y te veré en la siguiente donde concluiremos este juego para que podamos tener una cosa jugable completa 25. Final y reproducción: Bien, todos, sigamos adelante y terminemos esto. Vamos a terminar nuestro juego. Tenemos que verificar si nuestra historia está terminada. Necesitamos realmente contar nuestra historia, y vamos a usar nuestro botón Ok para tener dos usos aquí. Por lo que va a funcionar tanto para volver a jugar con una nueva historia, como para enviar nuestro texto. Entonces comencemos con eso con nuestro botón de aquí. Entonces solo voy a seguir adelante y seleccionar mi botón, y voy a conectar la señal pulsada y otra vez, voy a seguir adelante y solo conectarlo hasta mi principal, y voy a dejarlo con el nombre predeterminado aquí. Y sólo para mantener las cosas un poco claras, creo que quiero mover esto un poco hacia arriba y poner mis dos espacios entre ahí. De esa manera solo puedes tener mis dos señales aquí una al lado de la otra. Bien, así que ahora mismo, cuando nuestro botón se presiona, podemos seguir adelante y simplemente usar add to player words, y eso funcionará igual que si golpeamos Enter en nuestro teclado Eso debería funcionar perfectamente bien, exactamente igual. Entonces verbo, Ron, pegamos Bien, ya nos vamos, Perro, bien. Bien, así que todo está siendo enviado, todo está funcionando bien. Excelente. Entonces tenemos que saber cuándo termina nuestra historia. De esa manera de esa manera sabemos si es hora de contar nuestra historia y terminar nuestro juego, o sigues jugando y sigues pidiendo al jugador otro aviso. Bueno, para hacer esto, vamos a seguir adelante y crear una nueva función, y la llamaremos historia hecha. Y todo el propósito de esta función es simplemente decirnos si nos quedan o no más indicaciones por adivinar Entonces vamos a devolver un valor aquí. Y lo que vamos a devolver es si es cierto o falso. Eso va a ser palabras de jugador, tamaño es igual a nuestras indicaciones de la historia actual, ¿verdad Recuerda, queremos usar dobles iguales aquí porque estamos haciendo una comparación. Y eso es todo lo que vamos a hacer. Sólo vamos a devolver eso, y eso o va a ser verdadero o falso. Bien, así que ahora en nuestro check players longitud de palabras aquí, en lugar de escribirlo así, en realidad podemos reformatear esto realidad podemos reformatear Y podemos decir, si cuento hecho. Y por ahora, sólo estamos escribiendo la palabra pase porque ahí es cuando vamos a terminar el juego, y vamos a añadir un bloque else aquí. Aquí vamos. Entonces diremos si la historia está terminada, entonces terminaremos nuestro juego cuando escribamos esa parte de nuestro código. De lo contrario, avisar de nuevo al usuario. Entonces veamos qué pasa si hacemos esto ahora. Venimos en adjetivo, listos, presionamos el botón de pagar Fantástico. Nuestro texto aún agarra el aviso Todo sigue funcionando. Impresionante. Aún no hemos roto nada. Eso es genial. Bien, entonces, ¿cómo terminamos nuestro juego? Bueno, si la historia está terminada, tenemos que terminar el juego. Así que vamos a crear una nueva función llamada end game, y notaremos cómo estamos creando una función para todo aquí para que podamos mantener todo organizado. Y decimos: Bien, bueno, estamos teniendo un problema cuando termina el juego, sabemos bajar aquí y mirar la función final del juego. O tal vez nuestra historia no se esté mostrando al final, y vamos a tener que ir a la función que vamos crear aquí en un segundo llamado Tell Story. Entonces esto nos ayudará a reducir cualquier error que podamos obtener en nuestro proyecto. En el futuro al estar organizado y preparado ahora. Bien, entonces, ¿cómo terminamos nuestro juego? Bueno, lo que voy a hacer es que voy a tomar nuestra exhibición. ¿Quieres ir con nuestro texto de visualización? No. Queremos agarrar mis presentaciones rápidas, ¿verdad? Entonces queremos obtener el texto del jugador. Y lo que vamos a hacer aquí es que en realidad vamos a usar trimestre. Y lo que eso debería hacer es volver a nuestra escena aquí en dos D, es que debería agarrar esta línea y simplemente borrarla completamente de la pantalla. Así que de esa manera ya no existe. Eso es básicamente lo que hace. Lo borra completamente, lo elimina de la memoria Entonces libera esa memoria, y eso es importante hacer, no necesariamente en este juego, sino en otros juegos Digamos que sigues creando estos nuevos objetos, pero nunca se eliminan. Básicamente vas a empezar a llegar a un punto en el que creas fugas de memoria. Así que tienes que acordarte de dejar libre cualquier cosa que ya no necesites. Y en este punto, ya no necesitamos el texto de nuestro jugador. Todo bien. Entonces lo que vamos a hacer aquí a continuación es que en realidad voy a cambiar el texto de nuestro botón. Entonces voy a agarrar nuestro botón, ese signo de dólar, recuerda ese nodo corto get, ¿verdad? Entonces queremos obtener nodo en el nodo que queremos obtener es nuestro botón. Y la razón por la que solo estamos escribiendo el botón de palabra es porque así es como se llama aquí dentro de nuestra escena. Entonces, si renombré eso a otra cosa, tendría que asegurarme de que esto coincida Entonces en este botón, queremos obtener la propiedad text del mismo, y voy a establecer eso para que diga play de nuevo. Y mientras estamos en ello, debemos asegurarnos de que dice Bien a la hora de incitar a nuestro jugador. Todo bien. Así que solo voy a poner eso dentro de nuestra función prompt player y simplemente configuraré el texto para que diga, Bien. Bien ahora, lo último que tenemos que hacer dentro de nuestro final de juego es llamar contar historia Y eso nos va a dar un error hasta que creamos eso, así que sigamos adelante y al menos creamos ese nombre, contemos historia, y esa es ahora una función nueva. Para poder contar nuestra historia a la pantalla, todo lo que tenemos que hacer es vaciar completamente el texto. Así que mostrar texto punto texto es igual a una cadena vacía. Y solo voy a poner esto aquí en Side of Tell story por si acaso vas con el nuevo enfoque de línea al momento de incitar a tu jugador aquí Entonces por si acaso estás haciendo eso, voy a borrar el texto aquí también. Y todo lo que hacemos ahora es establecer nuestro texto de visualización y la propiedad de texto de eso que podamos ver. Y fijamos eso igual a nuestra historia actual. Y queremos la propiedad de la historia. Voy a asegurarme de deletrear eso justo dentro de mi libro de cuentos, historia con mayúsculas Y tenemos que rellenar todos esos marcadores de posición. Entonces la forma en que lo hacemos es simplemente hacer un letrero enviado, y agregamos lo que queramos. Entonces, por ejemplo, podemos ir con plátano, y eso va a llenar nuestro primer espacio en blanco con plátano. Ahora, tenemos varios artículos. Entonces por eso, tendríamos que hacerlo en forma de una lista como esta y hacer un coma y hacer nuestro siguiente, correcto , tomate y hacer el siguiente y así sucesivamente. Pero ya lo hemos hecho. Ya tenemos nuestra lista o matriz de todas nuestras cadenas. Estas son las palabras de nuestro jugador que creamos, y a las que hemos estado agregando todos nuestros envíos de texto. Así que sólo podemos subir aquí y decir palabras a los jugadores. Bien. Entonces ahora vamos a revisar las palabras del jugador Link, y decimos que cuento hecho, y vamos a llamar Endgame Todo bien. Ahora bien, ¿tenemos que llamar a esto en algún otro lugar? No, pero vamos a necesitar hacer nuestro botón de reinicio aquí en un momento, sigamos adelante y solo asegurémonos de que esto funcione. Todo bien. Entonces puede tener un adjetivo. Sí, un sustantivo bonito, rock, un verbo que termina en ED, educado Un adverbio, rápidamente, florece un sustantivo plural. Y ahí vamos. Podemos ver nuestra línea en ella ha sido eliminada. Nuestro botón ahora dice jugar de nuevo en lugar de Bien. Y tenemos nuestro prompt en la cima. El bonito cielo era una hermosa sombra de roca como los educados rápidamente a través de las flores Ahora, tengo dos Ss ahí. Fue ese mi error, posiblemente. ¿Eso era algo que tenía en mi historia? También es posible. Y no, no parece que eso estaba en la historia, así que eso fue completamente sobre mí. Debo haber pegado a S dos veces. Pero ahí tienes. Ahí está nuestra historia, y nuestro botón “play again” no funciona aquí. Y la razón de eso es que estamos tratando de agregar nuestras palabras de jugador. Nos trajo a esta función por nuestro error. Y si tuviéramos que mirarlo, parámetro, nunca se usa nuevo texto, eso está perfectamente bien. Pero el tema que nos está dando es decirnos que el texto del jugador no existe, ¿verdad? No podemos ir a nuestras palabras de jugador. No se puede hacer ninguna de estas cosas. Bueno, eso está bien. Nuestro problema en realidad está aquí con nuestra pulsación de botones. Porque en función de si nuestro juego está hecho o no, determinaremos si quieres o no reiniciar el juego o preguntar nuevamente al usuario, ¿correcto? Así que solo estoy llenando estos. Simplemente no me hagas caso aquí. Si estás siguiendo junto con usar las flechas porque quieres, cuento hecho, va a devolver una alberca porque estamos regresando algo, y esto nos va a dar un verdadero o falso. Todo lo demás, sólo estamos devolviendo un vacío en. Así que estoy pasando rápidamente por ahí y llenándolos. Y creo que son todos ellos. Los tengo todos, ¿verdad? Bien, así que cuando se presiona nuestro botón, todo lo que tenemos que hacer es verificar si nuestra historia está terminada Entonces si cuento hecho, y queremos reiniciar el juego. De lo contrario, ahora toca eso. Vamos a llamar add to player words. Entonces, ¿cómo reiniciamos el juego? Bueno, para reiniciarlo por completo, en este caso, todo lo que tenemos que hacer es conseguir árbol, y eso va a conseguir todo este árbol nuestro. Y todo lo que tenemos que hacer es llamar a recargar escena actual, y va a ser lo mismo que si acabamos de golpear Ejecutar escena actual aquí en la parte superior Si acabamos de pulsar ese botón por primera vez. Entonces, cuando se dispara la escena actual de recarga, deberíamos volver a estar en esta situación. Entonces adjetivo, así que solo voy a repasar por esto para que podamos ver que tenemos algo completamente nuevo adverbio educado Asegúrate de que esta vez solo pongo uno ahí, flores plurales Ahí vamos. Bien. Eso es genial. Y volvemos a jugar. Que me dé un verbo. Ran sustantivo Galleta. Otro sustantivo, Brownie Una mañana el Panadero fue a subir corriendo debería decir Run. Hasta su tiro para su sorpresa, sin embargo, hubo una parada de galletas, oh, dije Brownie en lugar de Brownie Pongo una R al final. Mis dedos me han traicionado en la ortografía hoy. Pero ahora podemos volver a jugar, y podemos tener otra historia comenzando. Así que ahora podemos seguir jugando esto todo el tiempo que queramos. Y este juego funciona completamente para nosotros. Y si alguna vez quieres agregar una historia, solo podemos entrar en nuestro libro de cuentos y puedes seguir agregando más historias e indicaciones, y simplemente seguirá No tenemos que ajustar nuestro código en absoluto por ningún motivo. Simplemente agregamos otra entrada, historia cinco, historia seis , historia siete, y podemos seguir adelante con tantas historias como queramos poner. Ahora bien, si tienes curiosidad por este error aquí que está en amarillo que viste antes, es solo decirnos que no se está usando nuevo texto para la señal M, y eso está bien. No tenemos que preocuparnos por esto. Es sólo un error amarillo, que es solo hacérnoslo saber. Y podríamos apagar esto. Hay algunas cosas que podríamos hacer, pero lo más fácil es simplemente poner un guión bajo aquí al principio. Eso es todo. Ahora bien, si seguimos adelante y ejecutamos esto, ese error ya no va a aparecer. Entonces este guión bajo al inicio de tu parámetro solo dice, ignora si no se usa, básicamente Pero ahí vamos, ahora estamos contando nuestra historia, y tenemos el fin de nuestro juego. Estamos contando la historia o incitando al usuario a seguir jugando, y tenemos o incitando al usuario para que complete más espacios en blanco Y tenemos un botón play again por si queremos seguir adelante. Bien, así que eso lo hará por libs locas. Este es un juego bastante corto por el que hemos pasado. Esto probablemente sea aproximadamente una hora la que pasamos para pasar por esto, y ya has empezado a armar funciones, estas devoluciones. Si las declaraciones Else las hemos usado varias veces, estamos usando booleanos Estamos usando diccionarios, matrices, clases. Estamos usando muchas cosas aquí a pesar de que es un juego tan sencillo, diría yo. Bueno, con eso, lo has completado. Enhorabuena. Date una palmadita en la espalda. Y me emociona ver las cosas que creas en el futuro, y me emociona que pasemos al siguiente proyecto. 26. Lo que vamos a hacer(espacio llenado): Bien, esta semana, vamos a poner las cosas a un nivel superior y en lugar de salirnos de solo algún texto, como hicimos la semana pasada Esta semana, vamos a estar creando o recreando un viejo juego de dos D de los 80 llamado Frogger Ahora esto nos va a dar la oportunidad de trabajar con un controlador de dos jugadores D. Colisiones. A lo mejor nos meteremos en algunas partículas. Podemos trabajar con algunos reproductores. Y como ves, si nunca antes has jugado Frogger o nunca has oído hablar de él, ya ves aquí, vamos a estar trabajando con UI para heads up display Tenemos puntos que vamos a necesitar hacer un seguimiento. Encuentra mi ratón ahí por un segundo. Pero no sólo eso, sino que también vamos a tener que ver ¿lo va a mostrar aquí? Bien, entonces tenemos cierta cantidad de ranas por jugador. Obviamente, no tenemos que meter monedas. Pero este es esencialmente el juego aquí. Entonces tenemos dos pequeñas zonas seguras en esta pequeña área morada. Tenemos una carretera en el medio que tiene cinco carriles de tránsito alternando de ida y vuelta. Y si la rana es atropellada por uno de estos autos, mueren y el jugador pierde una vida. Lo hacen hasta la cima. Pueden subirse a las tortugas y troncos para llegar a la zona segura Si aterrizan en el agua, eso también es un fracaso. Lo cual supongo ahora que lo piensas , como que no hace demasiado en sentido, ya que es una rana. Pero ahí tienes. Esa es la idea de lo que vamos a estar creando, y eso es lo que es Frogger si nunca lo has jugado o oído hablar de él 27. Diferencias entre Mapa de mosaico y Nueva Capa de mapa de mosaico: Bien. Soy yo otra vez aquí. Y yo solo quería interponer aquí antes de saltar a Frogger, notarás que si estás usando una nueva versión, Tao Map tiene aquí este triángulo amarillo, y eso nos está dando una notificación aquí de que este nodo va a quedar en desuso, lo que significa que va a ser eliminado Entonces, dependiendo de cuándo estés viendo esto, y es posible que el nodo de mapa de teselas ya no exista. Y si tengo que tomar una conjetura, se quitará a 5.0 de Gato. Esa es mi suposición. No tengo idea cuándo se va a quitar realmente. Pero te voy a mostrar la alternativa que se agregó si acaso quieres empezar a usar la alternativa. Ahora, en lugar del Tilemap, bueno, si estás viendo en el futuro, sabes qué usar en su lugar para aclarar cualquier confusión Ahora, con el mapa de teselas, tenemos nuestro conjunto de mosaicos todo configurado aquí, ¿verdad? Y tenemos todos nuestros nodos, perdón, no nodos, nuestras texturas, nuestro camino, agua, la mediana, y nuestro hogar. Y ves que seguimos adelante y pintamos aquí, ¿verdad? Podemos entrar y simplemente pintar sobre la pantalla. Y tenemos múltiples capas aquí en un desplegable en el lado derecho, que todavía está aquí en la parte inferior. Ahora bien, esto es lo que es diferente. Estas capas van a ser sus propios nodos ahora en lugar de tener todo dentro de un mapa de teselas. Entonces, todo lo que haríamos en lugar de este mapa de teselas es que luego agregaríamos una capa de mapa de teselas ¿verdad? Ve a nuestro inspector, juego de mosaicos, abre ese conjunto de mosaicos, asegúrate de que lo colocamos aquí abajo en la parte inferior. Y podemos seguir adelante y sumar en nuestra mediana. Podemos agregar nuestro camino, y podemos agregar nuestra agua. Entonces cualquier otra cosa sería exactamente lo mismo, lo cual no creo que hayamos tocado nada en cuanto a colisión ni nada aquí. Entonces no deberías tener que hacer nada más ahí. Y luego al igual que el mapa de teselas, puedes entrar y pintar con lo que puedes seguir adelante y solo asegurarte de entrar, seleccionar tu nodo, seleccionar el mosaico que quieres usar. Y claro, puedes entrar y empezar a pintar, igual que lo haces con el mapa de teselas, ¿verdad? Para que podamos entrar. Podemos ir, boom, boom, meterlo, agarrar nuestro morado. Cambiar mi azulejo, agarrar nuestros púrpuras, venir a través, rellenar las piezas de la carretera Derecha. Para que puedas venir y pintar la nieve como de normal Ahora bien, lo que tenemos en una capa separada es esta sección de inicio. Entonces, lo que haríamos es ir a, de hecho, vendríamos y agregaríamos una segunda capa de mapa de teselas ahora. Coge otro juego de azulejos, selecciona el conjunto de baldosas en la parte inferior y traeríamos ese azulejo para el hogar. Y ahí está. Ahora, dejé el mío es una especie de defecto aquí, predeterminado en tamaño, así que probablemente quiera entrar y cambiar el tamaño de la baldosa aquí específicamente para este. Pero dicho eso, ¿verdad? Puedo entrar, pintar, mapa de mosaicos, seleccionar todos estos, y puedo entrar y solo puedo pintarlo, ¿verdad? Simplemente lo estampa como lo hacía antes. Entonces, usar una capa de mapa de teselas y un Tilemap no es muy diferente. Solo tienes que recordar que cada capa va a ser su propio nodo hacia abajo en lugar de simplemente seleccionarla de un menú desplegable. Y cuando se trata del código real, si entro y echamos un vistazo, echamos un vistazo aquí. Normalmente, obtenemos nuestro mapa de teselas. Llamamos Get Cell Source ID. Pasamos en el número de capa y luego la posición del mapa en este caso, para que podamos tener la idea de en qué estamos parados. Ahora, esta función existe tanto en la capa tilemap como en la capa tilemap Seleccionaré Tilemap aquí y puedes ver aquí mismo, ID de origen de Gell Voy a seguir adelante y usar la lupa para ti aquí. Déjame verlo. Obtener ID de fuente de celda. El primero es la capa, y luego las coordenadas, y luego tenemos una bandera opcional ahí. Tenemos eso. Pero si quieres usar la capa Tilemap, la capa mapa de teselas tiene exactamente lo mismo, exactamente las mismas funciones aquí La única diferencia es que no pasamos en una capa. Simplemente pasamos en las coordenadas. Entonces, si mi mapa de teselas aquí mi mosaico era una capa de mapa de teselas, en este caso, sería la capa cero la que estamos usando. Entonces obtendría este que tiene mi agua de fila mediana en ella, y todo lo que pasaría es solo la posición del mapa, y eso es todo. Así que solo tienes que recordar que todas las capas van a ser nodos de capa de mapa de teselas individuales en el futuro. Y cualquier función que te pida una capa de mapa de teselas, simplemente no pones nada en. Simplemente omita ese argumento. Bien, así que ojalá eso aclare cualquier confusión que puedas tener dependiendo de cuándo estés viendo Y esa es la principal diferencia aquí con la que estamos trabajando. Bien, cuídate. Tenerte es una buena, y espero que disfrutes Frog. 28. Crear el fondo: Bien, así que sigamos adelante y comencemos a crear Frogger Y lo primero que vas a hacer es asegurarte de descargar los activos y simplemente seguir adelante y mover esa carpeta de sprites a tu proyecto Nuevamente, acabo de crear una carpeta vacía, específicamente para Frogger, pero recomendaría que crees un nuevo proyecto para esto De esa manera podrás exportarlo sin tener ningún problema en el futuro. Bien. Entonces, lo primero que vamos a tener que hacer es, especialmente porque nuestros diferenciales son tan pequeños, es que vamos a necesitar encogerlos o no encogerlos, pero reducir nuestra pantalla a más del tamaño del gabinete arcade. Y para hacer eso, solo vamos a subir al proyecto y entrar en la configuración de nuestro proyecto. Todo bien. Y entonces debería comenzar así con la configuración avanzada apagada. Y verás en el lado izquierdo, sólo vamos a bajar a la sección de visualización y entrar en ventana. Y vamos a establecer el ancho a 336 y la altura a 240. ¿Todo bien? Este es un tamaño de pantalla de gabinete arcade, la resolución de pantalla para esto, y va a ser perfecto para nuestros pequeños sprites Bien. Una vez que sigas adelante y pongas eso, puedes seguir adelante y simplemente cerrar, y verás que nuestra cajita azul se ha vuelto mucho más pequeña de lo que solía ser. Muy bien, así que lo primero que vamos a hacer aquí es que vamos a crear el fondo Entonces vamos a crear todo el camino, el agua, la mediana púrpura, eso lo llaman, y el área de anotación a la que tenemos que llevar nuestra rana. Así que vamos a configurar todas esas cosas. De esa manera podemos saltar directamente a conseguir nuestro juego y todo eso listo y funcionando. Y los siguientes videos. Bien, entonces vamos a necesitar una escena de dos D aquí. Así que vamos a hacer clic en dos D, y esto nos dará un nodo dos D para nuestro nodo raíz. Y si quieres seguir adelante y renombrar eso, puedes. Puedes nombrarlo Principal si quieres. Gestor de juegos. Realmente no importa. Si realmente quieres, puedes simplemente dejarlo como el nombre por defecto. Voy a dejar el mío por defecto por ahora. Y para crear esto en nuestro pequeño fondo, voy a crear un nuevo Tilemap Entonces voy a presionar el botón Plus. Y vamos a seguir adelante y seleccionar el mapa de teselas del menú desplegable. S en nuestro nodo create. Es como Tilemap. Simplemente siga adelante y haga doble clic en eso y seleccione eso. Ahora, tengo el mío instalado aquí. Voy a seguir adelante y simplemente borrar todos estos. 1 segundo. Muy bien, entonces deberías tener este aspecto cuando tengas seleccionado Tilemap Si no lo tienes seleccionado, sigue adelante y selecciónalo. Y lo que vamos a hacer es dirigirnos hacia el lado derecho. Y aquí vamos a ir al juego de azulejos. Se queda vacío en este momento. Lo que vamos a hacer es hacer clic en él e ir al nuevo conjunto de mosaicos y luego hacer clic en ese conjunto de mosaicos, y eso nos traerá aquí. Ahora, lo que necesitamos aquí es que vamos a necesitar la pequeña zona de meta, el agua, la carretera y la mediana. Entonces, si entramos en nuestros sprites y nos desplazamos hacia abajo, veremos el hogar, la mediana, la carretera y el agua Si solo mantienes el control, puedes seleccionar todos estos a la vez así y simplemente seguir adelante y arrastrarlos a nuestra caja de azulejos Todo bien. Entonces antes de que realmente podamos usarlos aquí, como pueden ver, no podemos hacer clic en nada de lo que queremos hacer. Sólo voy a desplazarme ahí con mi rueda de desplazamiento o puedes más un menos. Lo primero que tenemos que hacer es asegurarnos de que estamos en la pestaña de configuración aquí, seleccionar nuestra agua, y podemos hacer clic en ella, y ahora tenemos esta caja naranja alrededor de ella. Eso significa que tenemos un azulejo que ahora podemos usar. Y voy a hacer lo mismo por carretera, mediana, y mi amigo de casa al otro lado. Ahora, el hogar es un poco más grande. Entonces estoy pensando que podría ser un ty, No más grande que eso. A ver. ¿Qué tenemos? Oh, 26 demasiado grandes. ¿Cómo es eso? Creo que eso va a funcionar perfectamente bien. Todo bien. ¿Alguna vez fueron? Tengo un 16 por 24 aquí para este azulejo. Bien. Entonces ahora si hacemos clic en Tile Map en la parte inferior de nuestra pantalla aquí abajo, ahora deberíamos poder hacer click y comenzar a dibujar nuestros sprites Entonces haga clic en mi mediana, haga clic en mi ficha púrpura aquí, y simplemente arrastre una fila por la parte inferior, vaya a mi carretera, y tenemos cinco capas de tráfico. Entonces necesitamos cinco filas de nuestro negro aquí, tres, cuatro y cinco. Y si nos referimos de nuevo a nuestra imagen, entonces tenemos otra capa de púrpura, cinco capas de agua. Uno, dos, tres, cuatro, cinco, y luego tenemos una capa de agua que va por debajo de nuestra casa. Entonces vamos a hacer una capa más ahí. Tomemos nuestra casa y solo sigamos adelante y clic en un sprite y arrastremos el mouse para que puedas seleccionar los tres Y vamos a colocarlo. Oh, mira eso. Parece que tenemos este tema. Bueno, ¿qué está pasando? Bueno, estamos reemplazando nuestras tejas de agua aquí estamos reemplazando nuestras tejas de agua. Nosotros no queremos hacer eso. Así que necesitamos dibujar esto en otra capa, y solo voy a seguir adelante y he estado llenando eso con nuestra agua hasta la cima en las dos últimas líneas. Entonces voy a dar click en nuestra sección de inicio aquí, y no queremos reemplazarlos. Queremos construirlo encima. Entonces te darás cuenta aquí en el lado derecho de nuestros mapas de teselas, tenemos algo que dice capa cero, y si tenemos un menú desplegable, no hay nada más ahí. Entonces lo que queremos hacer es entrar en nuestro inspector de nuestro mapa de teselas, abrir la sección de capas, presionar Agregar nuevo elemento, y ahora en realidad tenemos una segunda capa. Así que de vuelta en los mapas de teselas con nuestra fila de inicio seleccionada, podemos ir a la capa desplegable y golpear la capa uno. Y ahora en realidad podemos dibujar directamente encima de ella sin afectar a nuestra final Ahí tienes. Tenemos siete al otro lado con esto. Y solo para asegurarnos de resolver nuestras filas una, dos, tres, cinco, ¿verdad? A mi me queda bien. Si hacemos clic de nuevo en nuestro no TD, así que nada es genial fuera. Ahí está con lo que estamos trabajando. Y si recuerdas cuando estamos viendo la configuración de Alfoger, ¿cómo se ve En realidad tenemos nuestro puntaje, y esa información está configurada justo en la parte superior aquí en esta área azul vacía, este espacio de agua vacío. Tenemos nuestros troncos, tortugas que saltan a través que nos ayudan a saltar por aquí Dentro de estas pequeñas áreas en blanco en casa es donde podemos sumar puntos al conseguir nuestras ranas El morado es seguro, y nuestro camino negro es donde van a desovar nuestros autos Pero bien, ahora tenemos todos nuestros antecedentes establecidos. Y así, bastante fácil de poner en marcha. El nuevo mapa de teselas es muy agradable para levantarse rápidamente y continuar con esto. No solíamos tener capas, y ahora que las tenemos, eso facilita mucho la configuración de las cosas así. Bien. Ese es nuestro trasfondo. Sigamos adelante y saltemos a la siguiente porción. 29. Crear el reproductor: Bien, sigamos adelante y creamos nuestro jugador, pero antes de que lo hagamos, voy a seguir adelante y guardar esto Solo voy a golpear Control como entrar en mi carpeta froger y guardar mi escena muy rápido Bien. Entonces para nuestro jugador, nuestro jugador en realidad va a tener su propia escena que traemos. Así que vamos a hacer clic en la pestaña más justo arriba aquí arriba o agregar un nuevo SEM. Vamos a ir a O. Y como este es un jugador sobre el que necesitamos tener control, este va a ser un cuerpo de personaje dos D. Esto solía llamarse cuerpo cinemático, y en otros motores, es Esto solía llamarse cuerpo cinemático, y en otros motores, y en otros motores, posible que se escuche a la gente referirse a él como tal Pero aquí, ahora se llama un cuerpo de personaje dos D. Bien. Ahora bien, este cuerpo de personaje, tenemos aquí este triángulo amarillo que nos da un pequeño aviso, y solo nos dice que nuestro nodo no tiene ninguna forma. No puedo chocar con nada. No tiene colisión. Y por ahora, eso está bien. Lata a flotar ahí. Y lo que vamos a hacer es que en realidad vamos a ir a agregar otro nodo aquí. Y lo que queremos añadir es un sprite dos D. Queremos añadir un sprite animado Bueno, queremos que nuestro sprike esté animado. Tenemos dos marcos para esto. Así que vamos a seguir adelante y hacer un sprite animado dos D. Y en el lado derecho en el inspector, vamos a abrir la sección de animación donde dice Sprite frames Hagamos clic en él y hagamos nuevos marcos de sprites. Y luego abramos esos marcos de sprites con solo hacer clic en él. Bien. Entonces tenemos nuestra animación por defecto, que voy a seguir adelante y renombrar eso para que simplemente esté inactivo. Entonces vamos a agregar una nueva animación con este pequeño ícono plus aquí abajo. Y voy a renombrar eso para saltar. Todo bien. Entonces con Idol seleccionado, voy a traer a Boger Idol PNG Y con salto, podemos traer a Boger Idol y luego a nuestro ícono saltador, Boger Y ahora deberíamos poder ir entre los dos. Siempre que queramos jugar a estos enemigos, Muy bien. Areo, a ver a ver si jugamos ahí. Estamos saltando. Estamos haciendo nuestro pequeño rebote hinchable. Y podrías notar que el sprite está un poco borroso aquí arriba en nuestro renderer, pero aquí abajo, podemos ver que se supone que es agradable y crujiente Bueno, para arreglarlo, podemos seguir adelante y podemos simplemente seleccionar todos nuestros sprites aquí a la vez desde nuestro sistema de archivos, ir al lado izquierdo a la importación En realidad, esto no va a ser una importación. Tú has movido esto. Entonces déjame seguir adelante y hacerte saber dónde está esa parte. Todo bien. Entonces, si te dirijas a la configuración de tu proyecto, Woo ¿A dónde fui? Dirígete a la configuración de tu proyecto y localiza la sección de renderizado y textura aquí para obtener configuraciones avanzadas en. ¿O lo necesitamos en esto? No, no lo necesitamos puesto para eso. Queremos un filtro de textura predeterminado aquí. Cámbialo de lineal a más cercano y sigue adelante y cierra eso, y verás que tus sprites van mucho afilados Entonces, si vas a hacer pixel art así, este es el valor predeterminado que quieres hacer en la configuración de tu proyecto. Y ahora tenemos un buen broki filoso Bien. Y por ahora, eso es todo lo que realmente necesitamos. No necesitamos preocuparnos por la colisión o la detección ni nada de eso por el momento. Nos preocuparemos por eso cuando lleguemos a esa porción, así que solo voy a seguir adelante y entregar Control S para salvar esto, y solo voy a llamar a este jugador. Ahora si entro en mi escena principal con mi nodo dos D seleccionado, puedo dar click en No This plus para un nuevo nodo, pero la cadena al lado de él. Y eso nos va a dejar instancia en una escena que ya existe. Y para nosotros, esa va a ser nuestra escena de jugador. Y ahora podemos seguir adelante y agarrarlo y podemos traer a este pequeño. Y podemos colocar. Y podemos hacer lo que queramos hacer con este pequeño. A ver. Transformémonos. Entonces sabemos que esto está en valores de 16. Entonces 172 no lo haría. Sería 176 si estamos en valores de 16. Sólo voy a mover a mi pequeña ranita aquí arriba. Aquí vamos. Estar un poco más centrado con eso. Y ahora tengo a mi ranita en mi escena principal con mis antecedentes, y está listo para irse. Bien, eso lo hará por este. Tenemos a nuestro jugador configurado tanto como necesitamos en este momento. Y con eso saltaremos al siguiente donde abordaremos haciendo algunos movimientos de jugador. 30. Movimiento del jugador: Bien, sigamos adelante y vamos a crear el movimiento para nuestra pequeña ranita pueda moverse hacia arriba, abajo, extremo izquierdo, ¿verdad Entonces, para empezar, vamos a necesitar algunas entradas. Ahora, si quieres usar las teclas de flecha, entonces yo arriba, UI down, UI left, y UI right ya existen. Pero quiero usar WASD. Voy a subir a mi proyecto e ir a la configuración de mi proyecto. Y voy a entrar en el Mapper de entrada en la parte superior. Agrega una nueva acción, y solo voy a escribir arriba, agregar abajo izquierda y derecha. Ahora bien, para cada una de estas acciones aquí, sólo voy a ir al lado derecho y presionar el botón más. Y para arriba, voy a darle al plus. Sólo voy a presionar W en mi teclado. Y te voy a mostrar cómo se ve eso. Lo que vas a ver a partir de ahí, vamos a ver. ¿Esta ventana está aquí? Y sólo voy a sacar eso arriba. Ahí vas. Así que solo presioné la tecla W, y tenemos que golpeamos Bien. Vamos a abajo, golpeamos el más, presionamos la tecla. Y nuevamente, A para izquierda y D para derecha. Bien, entonces ahora tenemos arriba abajo, izquierda y derecha para nuestros controles, y podemos cerrar fuera de ahí Nuestro jugador va a necesitar un guión, y voy a tomar una nota aquí en mi sprite animado en Jump No me deshice del primer sprite, así que solo tendré este con las piernas abiertas Y puse un guión al lado de nuestro cuerpo de personaje t2d en la escena de nuestros jugadores Y sólo tenemos uno vacío, así. Ahora, lo que voy a hacer es que voy a crear una función llamada movimiento. Así. Y esto es solo para que podamos mantener todo limpio y organizado y mantener todo nuestro movimiento en un solo lugar. Todo lo que vamos a hacer para tomar entrada aquí es que vamos a usar la declaración if. La misma declaración if que hemos estado usando mucho. Entonces vamos si, y luego queremos acceder al objeto de entrada o a la clase de entrada. Entonces entrada. Y luego punto porque queremos comprobar es acción. Y queremos ir con lanzado este juego. O simplemente soltado o simplemente presionado. Cualquiera de los dos trabajará para este juego específicamente. Si vamos con pulsado, se presiona la acción, entonces eso es mientras se mantiene pulsado el botón. Simplemente presionado y soltar significa que solo presionará tan pronto como el botón se active, cuando lo presione hacia abajo y se suelte significa que el bloque de código se va a ejecutar cuando levantas el dedo hacia arriba. Voy a ir con J press. Vamos a probar eso. Y voy a usar el botón, y esta es una cadena que debería haberte hecho estallar automáticamente Y esto con dos puntos, para que podamos entrar a él y crear el bloque de código. Y todo lo que vamos a hacer es que vamos a hacer dos cosas. Tenemos que mover nuestra pequeña ranita. Tenemos que moverlo hacia arriba por la pantalla, y vamos a subir por una cuadra, y todo se divide en 16 bloques de 16 o 16 tamaños de baldosas. Entonces vamos a mover nuestro ranita hasta 16 cuadras en este caso Entonces vamos a conseguir nuestra posición. Y si tiene un poco más de sentido para ti, puedes decir auto posición de punto porque te estás moviendo a ti mismo a la que se adjunta este guión. Y ahora mismo eso nos va a dar unas coordenadas X y una Y. Eso tiene dos números asociados a ello. Entonces, si hacemos clic en nuestro cuerpo de personaje y miramos dentro del inspector bajo transformar, verá que tenemos una X y una Y. Y estas corresponden a la ubicación que están en la pantalla. Entonces, si hacemos clic en nuestra escena principal y vamos a nuestro cuerpo de personaje, ya verás, su posición es 169 y 233, en mi caso. Entonces aquí es de donde partimos, y vamos a estar sumando o restando de esto ya sea de la X o de la Y para obtener nuestros movimientos Entonces como queremos subir cuando presionemos hacia arriba, vamos a estar afectando el número Y. Entonces vamos a decir punto de posición Y. Bien, estamos en nosotros mismos, queremos obtener la propiedad de posición, y luego queremos obtener el número Y de la misma Y para subir la pantalla, en realidad tenemos que restar Entonces vamos a decir menos iguales. Que podamos decir esto es igual a posición Y el número es igual a posición Y menos el número de suma, que son el número de suma, en este caso, va a ser 16. Entonces, si lo tuviéramos que dejar así y correr nuestra carrera Bueno, qué desafortunado Nuestra pequeña ranita no se mueve ¿Por qué no se mueve? Ojalá lo pienses o lo captes antes de que presione el botón de reproducción. Nunca vamos a llamar a nuestro movimiento en ningún lado, así que en realidad nunca estamos comprobando ninguna de estas cosas. Y para eso, vamos a simplemente meterlo dentro de la función de proceso aquí. Movimiento. Y ahora se le está llamando. Vaya, al menos lo haría si pudiéramos deletrearlo correctamente. Ahí vamos. Y si intentamos correr eso ahora, el botón de arriba, que para mí es W. Se puede ver que vamos adelante y estamos moviendo nuestras 16 cuadras a la vez. A dada ganamos. Tenemos una pequeña ranita ahí arriba Ahora, claro, el problema es que todavía nos estamos moviendo, pero no podemos retroceder. No tenemos animación ni nada. Entonces, hagamos que nuestra animación funcione. Entonces, ¿cómo jugamos nuestra animación? Bueno, si nos fijamos en la escena de nuestro jugador, podemos ver desde nuestro guión, podemos bajar podemos seguir esta línea fácilmente, apenas un nivel hasta el Sprite animado dos D. Así que vamos a conseguir ese nodo Y la forma en que he demostrado que antes era usar este signo de dólar, sería la forma más fácil. Y en cuanto empieces a escribir Sprite animado, va a aparecer. Y recuerda, eso solo es Sprite animado dos D porque ese es el nombre del mismo. Entonces, si tuviera que nombrar a este plátano y muy mala ortografía del plátano, entonces eso es lo que tendría que escribir aquí para poder acceder. Sólo voy a restablecer ese nombre de nuevo al valor predeterminado. Y todo lo que vamos a hacer es que le vamos a llamar a jugar. Así que juego de puntos. Y verás las animaciones que creamos pop up. Entonces vamos a usar salto. Y si lo intentamos ahora solo con esa única adición de nuestros látigos de línea, en realidad hay que tocar esta escena y no nuestro jugador Ahí vas. Se puede ver que entramos en nuestro salto, pero ya estamos un poco atrapados en nuestro salto. Entonces eso es un poco decepcionante. Entonces, ¿cómo podemos arreglarlo? ¿Cómo podemos volver a la normalidad? Bueno, podemos configurarlo para que cuando nuestra animación se complete, entonces volvamos a nuestra forma ociosa. Entonces para hacer eso, vamos a tener que acceder al sprite animado de nuestro jugador, ir al lado derecho a la pestaña del nodo, y vamos a conectar una señal que diga animación terminada Entonces, si solo hacemos doble clic en eso, obtendremos un pop up para conectar una señal aquí, y solo vamos a seleccionar el cuerpo del personaje TD en el que está nuestro script y presionar el botón Conectar. Va a aguantar todo para usar mis teclas de flecha para sacarlo a colación. Así que cada vez que nuestra animación termine de reproducirse, este bloque de código se va a ejecutar ahora. Y lo que queremos que suceda aquí es que queremos regresar a nuestro estado de inactividad donde nuestra rana simplemente está sentada ahí. Así que lo mismo, vamos a conseguir nuestro Sprite animado dos D. Vamos a llamar play, y eso va a estar inactivo Si lo intentamos ahora, ¿qué hacemos? Otra vez, si tocamos la escena correcta, cómo intentamos que ahora vemos que ahora tenemos esto, como pequeño salto que está apareciendo a medida que hacemos ping a través del agua. Eso es increíble. Ahora bien, la cosa es que nuestro ídolo va a estar jugando constantemente en este punto, nuestro ídolo juega, y luego termina , y porque termina, va a jugar. Entonces, aunque eso realmente no va a ser un problema con este juego, eso podría ser algo a tener en cuenta en el futuro. Entonces, para resolver este problema, podemos solucionarlo con una selección de TI. Y como pueden ver, mi pequeña salida ahí, estaba revisando las cosas y te voy a mostrar cómo hacerlo. Voy a limpiar eso. Todo lo que tenemos que hacer es comprobar si Sprite Animado grita Quieres el signo del dólar ahí. Si animado Sprite dos d punto. Sin embargo, Animación. No, ¿no es cómo se llamaba? Bueno, si entramos en nuestro Sprite Animado, y por cierto, puedes acceder a él y solo mantenemos Control y das click en el Sprite Animado dos D aquí en nuestro código Después abriré la página de documentación para. Y esto es lo que estamos buscando aquí. Obtener animación. Entonces queremos obtener animación. Como ves eso no estaba apareciendo. Entonces a veces es útil revisar la documentación de todos modos. Queremos hacer yo sprite animado tod punto obtener animación. Y si tuviéramos que echar un vistazo a eso, a la animación actual, al recurso de fotogramas Sprite, se cambia el valor, contador de fotogramas, progreso de fotogramas o reset Pero lo que queremos hacer es conseguir queremos obtener lo que es esta animación. Entonces eso básicamente nos va a devolver qué animación se está reproduciendo o actualmente seleccionada. Entonces vamos a usar los dobles iguales porque queremos comparar lo que sea que nos devuelva. Y queremos escribir salto. Y luego cuando interpretemos a nuestro ídolo, solo vamos a tabular eso en uno para que pueda estar dentro de nuestro bloqueo. Y ahora básicamente vamos a comprobar nuestra corriente cuando termine nuestra animación, si la actual es salto, entonces vamos a jugar inactivos. Si ejecutamos eso, ahí vamos. Tenemos nuestro pequeño Bing y se ve exactamente igual, pero no vamos a estar constantemente reproduciendo la animación ociosa una y otra y otra vez. Es cuando se reproduce la animación inactiva, recuerda, se reproduce una vez, y luego se hace. No es un “looping”. Y si el tuyo, por ejemplo, está haciendo un ciclo por el motivo que sea, entonces adelante, selecciona tu sprite animado, y si es un ciclo, puedes ver nuestro Eso es porque esto está encendido, así que solo tienes que seguir adelante y hacer clic en él para apagarlo. Entonces es blanco así. Si es azul, entonces está encendido, si es blanco, está apagado. Entonces ahora cuando termine nuestra animación, después de saltar, vamos a comprobar si nuestra animación actual es salto, y si es así, entonces jugaremos inactivos. Y cuando termine inactivo, esta declaración if no será cierta porque cuando obtengamos animación, va a estar inactiva, no saltar. Entonces como eso ya no es cierto, no vamos a hacer otra cosa, no vamos a seguir repitiendo inactivos una y otra vez este tiempo Entonces es una pequeña diferencia, una de esas cosas que están en el back end que el jugador nunca va a notar. Y como dije, en un juego pequeño como este, no va a hacer una diferencia tan grande, si la hay, eso se nota. Pero es algo que vale la pena saber en el futuro, pero cuando sí quieres hacer juegos cada vez más grandes. Bien, así que sigamos adelante y ya podemos obtener nuestro botón de abajo. Entonces, si solo copiamos y pegamos esto, podemos obtener si en lugar de una I. Queremos nuestro abajo presionado en lugar de arriba, y queremos más 16 en lugar de -16 Porque si menos va a subir, entonces el plus nos va a derribar, así que ahora podemos subir y podemos bajar. Ahora, nuestra pequeña ranita no se da la vuelta en absoluto, lo cual es un poco decepcionante Pero podemos arreglarlo fácilmente agregando una línea más aquí, y podemos hacerlo hablando de su rotación. Así que antes de saltar, podemos obtener auto rotación de puntos. Y si echamos un vistazo a nuestros jugadores, entonces volvemos a nuestra escena de jugador como en un cuerpo de personaje dentro del inspector. Si bajamos, vemos que aquí tenemos rotación. Y la rotación es en radianes más que en grados. Entonces, lo que podemos hacer es decir rotación es igual, y podemos usar esta función que está incorporada llamada Dg two RAD, y eso podría haber cambiado aquí. Y parece que tiene. Parece que ha sido renombrado aquí, así que deg dos RD Ahora tiene los guiones bajos. Y luego tomaremos un argumento en forma de grados. Entonces, si decimos 180, eso va a ser un cambio completo, ¿verdad Porque si giramos a la derecha, van a ser 90 grados. Si giramos a la izquierda, vamos a estar -90. Entonces, de cualquier manera, tenemos que llegar a 180 positivos o 180 negativos. Entonces sólo voy a ir con 180 grados aquí. Y esta función va a convertir estos 180 grados en resplandor para que se pueda asignar a nuestra rotación aquí Ahora, una rotación completa en radianes es 3.14, y de aquí es de donde es i Entonces esto sería lo mismo aquí, 180 como si solo tuviéramos que copiar esta rotación equivale a Pi dividido por cuatro. Entonces eso nos dará una rotación. Entonces, si queremos hacer Pi dividido por dos, eso nos dará la mitad de nuestra rotación aquí en radianes Entonces, si te mostrara eso con Pi dividido por dos, Oh, nos dividimos por los demás caminos. Entonces tal vez sea un poco más de dos. Ahora, normalmente no uso radianes yo mismo. Nosotros, podemos ver divididos por cuatro, como que obtenemos este ángulo poco incómodo. Entonces ya ves, puede ser un poco incómodo cuando se trata de radianes a veces Entonces lo que yo que es una razón por prefiero usar grados a radianes, solo porque es algo en lo que puedo trabajar un poco más rápido Y como ves, ahí vamos. Volteamos la cara hacia abajo. Sólo que ahora no estamos enfrentando una copia de seguridad, así que ahora tenemos que arreglar eso dentro de nuestro código. Y solo haremos lo mismo cuando presionemos. Ponemos nuestra rotación a cero. Y si tuviéramos que jugarlo ahora. Ahí vamos. Ahora podemos saltar hacia arriba y podemos saltar hacia abajo. Y ahora, ¿y si queremos saltar de izquierda y derecha? Bueno, aquí podemos conseguir aquellos con dos LCF más. Y sólo voy a espaciar estos para que aquí sean un poco más legibles. Ahí vamos. Entonces a partir de nuestro segundo SIF aquí, vamos a decir que me queda acción Y en lugar de modificar el valor Y, en realidad vamos a modificar la X de nuestra posición porque X es izquierda y derecha. Y si vamos a la izquierda, tenemos que -16 aquí Y grados a rad. Bueno, podríamos establecer esto en 270, solo para quedarnos en el lado positivo aquí, lo que significa que nuestro último Elsev aquí cuando presionemos a la derecha vamos a modificar la posición en lugar de la Y, vamos a más 16 Y si nos movemos a la derecha, vamos a estar rotando a 90 grados. Entonces, si seguimos adelante e intentamos eso ahora, debería ver ahora podemos saltar en las cuatro direcciones. Y podemos movernos. Y si tu rana se coloca en la ubicación correcta, deberías poder aterrizar en todos estos pequeños objetivos de casa aquí. No hay problema sin repasar. Ahí vas. Y ahora como que tenemos que mantener nuestra posición. Y bueno, en la pantalla estaría bien. Pero podemos preocuparnos por todas esas cosas más adelante por ahora. Solo tenemos nuestro movimiento dando vueltas, y este video se está alargando un poco, así que solo quería mantener el movimiento en su propia pequeña sección aquí. Ahí vamos. Podemos correr como nuestra propia pequeña ranita yendo, boing, boing, abucheando. Pero bien, y ahí lo tienes. Ahora podemos seguir adelante y pasar a la siguiente sección de nuestro código. Y creo que a continuación vamos a creo que vamos a crear nuestros vehículos y hacer que comiencen a cruzar la carretera aquí. 31. Crear los vehículos: Bien. Hoy, vamos a seguir adelante y crear los vehículos para cruzar. Ahora tenemos un par de diferentes. Veamos cuántos tenemos aquí dentro de nuestros sprites. Tenemos cinco autos diferentes. Ahí vamos. Y algunos van a la izquierda, algunos van a la derecha, y ya están mirando en la dirección que quieren. Entonces, eso es genial. Todo lo que tenemos que hacer es crearlos y hacer que se muevan por nuestra pantalla. Bien, así que sigamos adelante y creemos una nueva escena con nuestro botón más aquí en la parte superior para nuestras pestañas Vamos a ir a otro nodo, y al igual que nuestro jugador, vamos a usar el cuerpo del personaje dos D aquí. Y vamos a darle un sprite, en este caso, ya que no tenemos animaciones para ello, solo vamos a usar un Sprite regular dos D, y podemos seguir adelante y asignarle uno de nuestros sprites Ahora, en este caso, seguí adelante y seleccioné el camioncito. Pero claro, puedes elegir el que quieras. Específicamente, estoy usando uno que se mueve a la izquierda en este momento, así que vale la pena señalar. Y voy a cambiar este nombre de cuerpo de personaje a D para ser Truck y lo guardaré como escena de mi camioneta. Y voy a necesitar un poco más. Ahora, no vamos a usar una forma de colisión, aunque vamos a tener algún tipo de colisión poder ocurrir aquí porque obviamente, nuestra rana tiene que ser aplaudida de alguna manera si la consigue Entonces, para prepararme para eso, voy a crear un área dos D. Y eso solo va a permitirme tener un área redefinida que pueda verificar Y para conseguir esa zona con el área dos D seleccionada, ahí es ahora donde puedo traer la forma de colisión. Ahora, la forma de colisión tiene este pequeño triángulo sobre ella, dándonos una advertencia. Así se seleccionó la forma de colisión. Nos movemos a la derecha a nuestra sección de formas, y creamos una nueva. Y esto sólo va a ser una nueva forma de rectángulo. Ahora, no usamos formas complicadas como usar los ganchos poligonales. Y en cambio usa polígono o lo siento, ¿ usarás shape con algunas de estas formas básicas aquí Porque cuanto templera sea tu forma, mejor va a ser en términos de rendimiento No obstante, cuanto más complicada sea una colisión, más precisa va a ser. Entonces es una especie de equilibrio que tú mismo tendrías que elaborar. Pero en este caso, por suerte para nosotros, solo podemos usar estos rectángulos y eso va a encontrar, sobre todo porque estamos recreando un juego más antiguo como este Todo bien. Entonces ahora que tenemos nuestra forma de colisión así, de nuevo, si no cogiste eso, solo asegúrate tu rectángulo esté cubriendo todo, cada parte de la camioneta aquí. Y ahora nuestro camión en realidad va a necesitar un guión en él. Voy a agregarle uno. Y en lugar de llamarlo el guión del camión, voy a llamarlo el guión del vehículo. Ahora la razón por la que vamos a llamarlo el guión del vehículo es porque vamos a poder usar este script en todos nuestros vehículos. Ahora bien, para ello, Bruni exporta una variable para nosotros. Y lo que esto va a hacer es que esta palabra clave de exportación nos va a permitir cambiar esto dentro del inspector. Así que vamos con la exportación de signo at, y crearemos una variable, y llamaremos a esta dirección. Va a ser un entero, y por defecto, podemos simplemente establecerlo a cero o lo siento, podemos establecerlo en uno. Realmente no importa en este caso. Y si lo guardas y vuelves a seleccionar tu camioneta, deberías ver la dirección dentro de tu inspector en el lado derecho. Ahora, en nuestro caso, vamos a necesitar que sea uno negativo porque vamos a movernos a la izquierda, lo que significa que vamos en la dirección negativa. Así que simplemente seguí adelante y puse eso en negativo. Y ahora en la función de proceso, vamos a necesitar tener nuestro carácter o bien, carácter es correcto, pero nuestro camión se mueve. Y luego ordenar movernos, necesitamos tener algo llamado mover y deslizar o mover y colisionar Cualquiera de los dos trabajará para tener movimiento aquí. En mi caso, sólo voy a usar mover y deslizar. Mover colisionar también está bien. Prácticamente solo define lo que sucede cuando dos cuerpos de física chocan entre sí, ¿verdad O se chocan uno contra el otro y se quedan ahí o pueden deslizarse uno a lo largo del otro En nuestro caso, realmente no importa ya que solo vamos a estar usando el área para determinar si nuestra rana ha sido atropellada por el camión. Entonces ahora tenemos tobogán móvil. No podemos simplemente jugarlo ahora porque todavía tenemos que controlar este movimiento. Entonces voy a tener otra variable aquí llamada velocidad, que también será un entero. Y creo que voy a fijar esto. Intentaremos ocho por ahora, y veremos qué tan rápido se mueve eso. Eso podría ser un poco demasiado rápido. Entonces, ¿sabes qué? De hecho lo intentaré con dos ahora que lo pienso. Y todo lo que vamos a hacer es que vamos a cambiar la velocidad, y queremos cambiar el número X. Así que al igual que la posición, tenemos tanto una X como una Y cuando se trata de velocidad, y la velocidad va a controlar nuestro objeto moviéndose consistentemente. Entonces vamos a velocidad, y a partir de cuatro, Interesante. A lo mejor es una V mayúscula porque sé que hay una construida en una. Bastante seguro aquí. Oh, no, ahí está bajo. Debo de haber puesto ahí un errata. Pero ahí vamos, así podemos simplemente hacer punto de velocidad X. Y esta vez vamos a decir iguales. No vamos a decir menos ni más porque esto va a depender de nuestra dirección. Entonces diremos velocidad tiempos dirección. Así que vamos a movernos a lo largo del eje X, así que vamos a estar moviéndonos de izquierda a derecha a la velocidad, que es dos ahora mismo, dirección de tiempos. Entonces ahora mismo estamos en menos uno, así que va a ser dos veces menos uno, y eso nos va a dar dos negativos y debería hacernos mover a la izquierda. Pero si entramos en el inspector y lo cambiamos por uno positivo, entonces eso debería ser dos veces uno, traer dos positivos y hacer que nos movemos en la dirección correcta. Así que voy a poner el mío de nuevo a menos uno. Y volveré a mi escena principal y sólo traeré una camioneta para echarle un vistazo. Yo solo lo pondré aquí mismo, tocaré esta escena y veré si se mueve. Podemos ver que se mueve, pero se mueve demasiado lento. Entonces vamos a tener que ajustar esa velocidad. Entonces volvamos a las ocho. A lo mejor ocho estuvo bien. Vamos a probar eso. Ocho no es bueno, pero es mucho mejor. Entonces vamos a ver. ¿Queremos estar moviéndonos a 16 pixeles? 16 se ve bien, aunque eso parece que podría ser bastante fácil, así que tal vez queremos aumentar eso. Y ten en cuenta, siempre podemos volver a esto. Y como estamos usando la velocidad en todos nuestros vehículos, podríamos ajustar esto fácilmente y modificarlo una vez que realmente tengamos los cinco carriles usados para vehículos Así que vamos a ver con 32, 32 se ve mejor aquí. Creo que 32 es donde voy a dejarlo y retocarlo más tarde A lo mejor quieres ir a, como, 48, o no creo que vamos a poder llegar a algo como 64, pero nunca se sabe, supongo. Así que sólo voy a usar 32 como mi base. Bien, entonces tenemos un camión moviéndose en una dirección. Y ahora también podemos crear nuestros otros vehículos. A ver. Tenemos dos más que se mueven a la izquierda y dos que se mueven a la derecha. Veamos qué hacemos aquí y vamos a ir a la izquierda. Así que vamos a repetir prácticamente este proceso y usar el script del vehículo en todos ellos. Bien, así que he seguido adelante y como pueden ver, he hecho mis otras cuatro escenas de autos aquí. Todo lo que hice fue entrar, ajustar la forma de collesson si lo necesitaba, reemplazar el sprite por otro de nuestros autos Y luego, si es necesario, envejecer la dirección de menos uno a positivo. Y eso controla todos nuestros autos. Y seguí adelante y los coloqué aproximadamente a donde estarían aquí solo para poder probar y echarle un vistazo. Y como pueden ver, a medida que lo manejamos, nuestros autos siguen adelante y conducen, y cruzan la pantalla en la dirección apropiada, y nunca chocan entre sí Impresionante. Ahora, todo lo que necesitamos son más autos que engendran, y no queremos colocar estos consiste porque si tenemos que colocarlos manualmente, entonces solo tenemos que tener esta enorme lista de autos y no tenemos idea de cuánto tiempo va a ser para que engendren o cuánto tiempo le va a llevar al jugador ya sea quedarse sin vidas o completar el nivel Entonces lo que vamos a hacer es crear generadores para estos autos. Todo bien. Y estos engendradores básicamente solo van a en un tiempo establecido, engendran Y podríamos tener cinco reproductores diferentes si queremos, uno por cada carril Y vamos a ver. Creo que eso es lo que quiero hacer. Creo que voy a tener esos cinco spanors diferentes de esa manera, todos pueden tener sus propios tiempos Y si quisieras, solo podrías haber establecido como un límite de generación o un límite de tiempo para todos los vehículos Eso está perfectamente bien, también. Voy a seguir adelante y crear uno, y esto solo va a ser un n2d básico Sólo voy a llamar a este spotter ¿Queremos llamarlo Spontero? Aquí, sí. Vamos a ese patrocinador uno, y esto va a controlar mis mejores engendros aquí arriba Y, ya sabes, creo que voy a usar esto como su ubicación base también. Sólo voy a conseguir un buen lugar, y como esta es la camioneta, traeré de vuelta a ahí, y eso me mostrará si el camión genera en esta posición, estará ahí mismo Bien. Entonces en mi spawner, voy a crear un nuevo script Esto solo va a ser un script de spawner doTGD. Y una vez más, vamos a usar esto bastante bien en todas nuestras Swannas que creamos aquí Entonces, ¿qué tenemos que hacer? Bueno, tenemos que esperar una cantidad de tiempo establecida. Sólo voy a eliminar este comentario de ahí, así como el de aquí abajo en la línea nueve. ¡Vaya! Yo. Bien, entonces tenemos que esperar una cantidad de tiempo establecida. Ese tiempo debe ser aleatorio. Y luego a partir de eso, generar una vista. Entonces en nuestro caso, vamos a estar cargando el camión. Entonces voy a seguir adelante y hacer bar una variable aquí para mi camioneta, y eso va a ser una precarga aquí. Lo que significa que sólo vamos a cargar la escena de antemano. De esa manera podemos usarlo. Podemos ponerlo en instancia en cualquier momento. Así que solo voy a agarrar mi camioneta de mi sistema de archivos y arrastrarla. De esa manera tenemos la ubicación correcta aquí a la escena. Y con esto, sólo voy a mostrarles el único vehículo de aquí porque entonces sólo tenemos que entrar y podemos retocar esto Te voy a mostrar cómo podemos exportar esto también. De esa manera podríamos usar este script en todo en lugar de hacer múltiples scripts, solo por una diferencia de variable. Te voy a mostrar eso. Pero primero, pongamos esto en marcha. Y lo que vamos a hacer, no vamos a utilizar este proceso en absoluto. En realidad vamos a crear una función llamada spawn vehicle Y aquí dentro, vamos a Aquí es donde necesitamos un número aleatorio. Así que sigamos adelante y llamemos tiempo de espera. Sólo llámalo tiempo de espera. Y vamos a poner esto a flote y pondremos esto igual a vamos a ver, y entero aleatorio y no equivocado, solo podríamos hacer algo como esto y eso funcionaría No creo que tengamos que usar rango rand, aunque podría ser incorrecto en eso. Bien, ahí vamos. Y como quiero verificar eso solo para estar seguro, voy a tener el control, hacer clic en Randi, y eso me va a abrir a esta página Y sí, lo hice correctamente. Entonces, al usar 20 por ciento, en este caso, como veis, nos va a dar un entero 0-19 ciento 100 nos daría 0-99, y si hacemos por ciento 100 más uno, eso nos daría un número 1-100 Entonces en mi caso, si hago tres, entonces vamos a tener un tiempo de espera de cero, uno, dos, voy a agregar uno a eso. Ahora tenemos que esperar al menos 1 segundo entre desove de camiones. Entonces esto va a ser entre uno, dos y tres. Y podemos ver cómo se ve esto. Siempre podríamos ajustar esto más tarde. Ahora, nuestro tiempo de espera, tenemos eso. Ahora tenemos que esperar realmente esta cantidad de tiempo. Entonces diremos espera y tenemos que conseguir el árbol para poder hacer esto. Y la palabra clave wait aquí significa que solo vamos a esperar esto. En nuestro caso, va a ser un temporizador, pero esto también podría estar esperando que se envíe una señal. Pero ahora mismo, vamos a decir esperar, obtener el temporizador de creación de punto de árbol, y este va a ser nuestro tiempo de espera aquí. Nuestro tiempo de espera aleatorio que tenemos. Tenemos tiempos de espera. Vamos a esperar esa señal de tiempo de espera que se envíe cuando termine nuestro temporizador, que se basará en un número aleatorio, una cantidad aleatoria de segundos. Todo bien. Entonces una vez hecho eso, podemos crear una instancia de nuestro camión de nuestro digamos VT para vehículo o VI para instancia de vehículo igual, en este caso, vamos a decir camión, pero deberíamos cambiarlo a vehículo. Entonces truck dot instanciate Y luego lo agregaremos a nuestra Entonces diremos self dot, agregamos child para agregarlo a la escena y VI. Todo bien. Veamos cómo funciona esto ahora. Y no va a hacerlo porque no lo llamábamos. Vamos a entrar en nuestra función REDI aquí y llamar a nuestra función de vehículo de generación que creamos Vamos a probarlo ahora. Ahí vamos. Así que tuvimos otro camión desove en, y ya no vamos a tener porque solo lo estamos desove Entonces lo que podemos hacer a partir de ahí es después de que agreguemos niño, ¿verdad? Después de agregar el camión a nuestra escena, solo tendremos que llamarlo recursivamente a sí mismo Entonces va a provocar un bucle infinito. Va a generar un vehículo y no hacer nada, luego engendrar un Y cuando termine con eso, engendrar otro vehículo. Ya está hecho, engendrar un vehículo Y siempre va a ser un número aleatorio cada vez que tengamos que esperar o entre engendros Entonces, si solo le echamos un vistazo ahora, podemos ver que son bastante consistentes en su espaciado, y entonces ese fue un espaciado mucho mayor. Y fuimos, Oh, tenemos un espaciado muy cercano en esa. Entonces parece que por ciento tres más uno podría ser el más corto que queremos ir. Pero ahí tienes. Entonces depende de ti si quieres eso es un montón de cercanos juntos. Entonces, depende de ti si quieres tuitear eso un poco, jugar con él en absoluto, y depende de ti cómo quieres tenerlos espaciados por ahí. Ahora bien, la razón por la que no tenemos que establecer su posición es porque estamos agregando de niño a mi observador, y el observador está justo aquí Entonces ya que el camión aquí está a las 00 en su posición, Ups. Este el camión aquí está a las 00 en su posición aquí. Y podemos ver eso si vamos a transformar 00. Va a ser exactamente lo mismo que su padre, que en este caso, va a ser SponOro Entonces donde está mi Sponoro aquí, va a aparecer en esa ubicación justo fuera de la pantalla Ahora bien, ¿cómo podemos hacer un script para correr para poder usarlo en alguno de nuestros vehículos? Bueno, lo que tenemos que hacer para que esto funcione para todos nuestros reproductores que podamos tener el menor trabajo posible aquí Bueno, antes que nada, voy a cambiar mi nombre de variable de camión a vehículo, ahora lo vamos a usar para más de un vehículo, no solo el camión. Y eso significa que voy a tener que cambiarlo aquí abajo en nuestro spawn de truck dot instanciate a vehicle dot instanciate Y queremos tener esta variable expuesta dentro de nuestro inspector para poder ajustarla aquí sobre una base por nodo, así que vamos a hacer el signo at con export Y ahora, ¿qué vamos a exportar aquí? Bueno, podríamos dejarlo como tal, y esto solo funcionará si miramos el interior del inspector. Pero si quieres ser específico, a esto se le llama una escena repleta. Así es como exportarías esto. Y entonces podríamos incluso simplemente borrar la precarga aquí. Así que solo tenemos en señal exportar nuestro vehículo y declararlo como una escena de pack. Ahora, si hacemos clic en nuestro spawner y nuestra escena aquí, podemos simplemente abrir el vehículo y decir nuevo empacarlos o podemos Obviamente, nos gustaría cargar, pero para ahorrar algo de tiempo, solo podemos entrar en nuestro sistema de archivos, agarrar nuestro camión, arrastrarlo y dejarlo caer ahí Y si ejecutamos esto, veremos a nuestros camiones desovar tal como deberían, tal como lo hicieron antes ¿Todo bien? Perfecto. Y si tuviéramos que agarrar, digamos, veamos, el auto uno también va a la izquierda. Así que vamos a agarrar el auto, reemplazar esa escena ahí dentro, y echarle un vistazo. Y ahí lo tenemos. Lo conseguimos trabajando aquí con un vehículo diferente. Entonces todo lo que tenemos que hacer es simplemente cambiar esta. Y ahí son muchos autos seguidos. Entonces otra vez, eso puede bajarse a que ajustes las cosas. Pero ahí lo tienes. Yo sólo voy a seguir adelante y reemplazar este camión otra vez y evitar que eso corra. Y ahora puedo seguir adelante y puedo hacer más engendradores. Uy. Und hacemos desajuste histórico. Eso es interesante. No estoy haciendo nada con la historia. Sólo voy a usar el Control D ahí. Y éste es apadrinado dos. Así que sólo vamos abajo, asegúrate de que se alinearan. Eso sí. Y este va a ser el auto tres. Entonces voy a buscar mi auto de tres escenas, arrastrarlo adentro. Adelante, échale un vistazo a eso. Ahí vamos. Tenemos nuestros camiones y nuestro auto desove en nuestros diferentes intervalos Fantástico. Y podemos hacer lo mismo por nuestro fondo aquí. Entonces duplicaré eso una vez más. Solo estoy duplicando eso con Control D con spanor seleccionado Y yo sólo voy a tirar eso aquí abajo para este vehículo. Y éste es solo auto. Así que voy a meter el auto aquí. Y echamos un vistazo. Y vemos que todos nuestros autos que van a la izquierda están todos desove correctamente Fantástico. Y ahora sólo tenemos que sacar a los dos a la derecha. Y lo mismo, solo voy a duplicar mi span aquí y simplemente arrastrarlo hacia el lado izquierdo. Y luego lo ajusto aquí por posición, eso debería ser bueno. Y ese es el auto cuatro, mi auto cuatro escena, y lo duplicamos una vez más y lo masificamos aquí para mi auto dos sne. Todo bien. Entonces ahora debería poder entrar aquí y eliminar todos estos autos y camiones temporales. Y si lo ejecutamos, debería estar funcionando perfectamente bien, desovar todos nuestros vehículos ahí lo tenemos Ahora podemos correr por ahí con nuestro pequeño digo ranita aquí. Ahí lo tenemos. Y ahora solo necesitamos una manera de atravesar esta agua para poder entrar ahí. Y, por supuesto, una forma para nuestra pequeña ranita se aplaste. Creo que nos encargaremos del aplastamiento la próxima vez, así que aquí entraremos la muerte del jugador 32. Muerte y resurgimiento del jugador: Bien, entonces, ¿cómo vamos a conseguir que nuestro pequeño ranita consiga a Gist si es atropellado por Bueno, lo primero que hice fue agregar una colisión en forma dos D para cubrir el tamaño de mi ranita. Y vamos a usar eso para determinar si fue atropellado por un auto en combinación con el Área dos D que está en nuestros vehículos. Y dentro de mi sprite animado, creé una nueva animación llamada muerte, y traje el sprite muerto Frogger Y ahora que tenemos eso, también necesitamos en nuestro vehículo, vamos a tener que sumar aquí una conexión de señal, y la que vamos a querer es que entre cuerpo. Y podríamos pasar por aquí y conectarlos uno por uno en todos nuestros vehículos o podríamos ahorrar un poco de nuestros vehículos o podríamos ahorrar tiempo y conectarlo a través de script, a través del código. Y creo que eso es lo que voy a hacer aquí de esa manera ahorramos un poco de tiempo. Ahora echemos un vistazo a cómo conectaríamos esta señal a través del código en lugar de la interfaz. La forma más fácil para nosotros de configurar esto es, como ves en lo siguiente dentro del bloque listo aquí, y ese error es solo porque aún no hemos creado esa función. Entonces vemos que agarramos nuestra zona dos D porque eso es lo que está enviando la señal. Punto el nombre de la señal, que es el cuerpo ingresado. Eso se puede ver a la derecha, y vamos a conectar esa señal con la función connect. Y luego creamos lo que se llama un callable y pasamos en un nombre, y este nombre va a ser el nombre de nuestra función que queremos llamar Entonces en golpe de jugador, golpe ranita, puedes ir con eso Player Hit es lo que voy a llamar mío. Y ahora todo lo que tenemos que hacer es simplemente bajar y crear una nueva función para ello, el jugador de Bunk hit. Ahora bien, esta función también pasa en una pieza de datos. Si echamos un vistazo a la señal ingresada al cuerpo aquí en el lado derecho, se puede ver que pasa en el cuerpo, y ese es un nodo dos tipo D. Entonces va a ser un nodo dos D de algún tipo. Entonces tenemos que pasar ese argumento en, entonces cuerpo, nodo dos D. Y así, eso ahora debería conectar la señal para todos nuestros vehículos, y para probar la celda, podemos seguir adelante e imprimir cuerpo, y veremos esto. Y algo que también he hecho es que cambié de jugador he cambiado el nombre mi jugador del personaje Body TD a ser capa Y después he tenido que entrar aquí en mi escena principal y reemplazarla para que se actualice el nombre. Ahora bien, si seguimos adelante y ejecutamos esto, deberíamos tener un cuerpo impreso cada vez que nos atropelle un carril de prueba de corte de vehículo uno Sí. Carril dos. Sí. Carril tres, ¿correcto? Carril cuatro y nuestro último carril, el camión. Aquí vamos. Entonces todos nuestros vehículos están detectando cuando nos atropellan, y podemos ver que tenemos muchos vehículos ahí con este tiempo. Entonces esa podría ser una buena cantidad, o tal vez quieras aumentar el lapso mínimo entre ellos. De nuevo, completamente depende ti y cómo quieres hacerlo. Y el tuyo. Pero con eso, ahora todos nuestros vehículos se han conectado y configurado para machacar a nuestra ranita Entonces, la razón por la que te dije que cambié el nombre de mi cuerpo de personaje TD de jugador a jugador, y estoy usando una P Capital es porque vamos a usar este nombre en la pantalla de nuestro vehículo Entonces vamos a decir si y luego pasar una cuerda aquí, un jugador. Entonces si el jugador N. Así queremos ver si esta cadena está dentro de otra cadena, y la cadena que queremos verificar es body dot name. Ahora recuerden, cuerpo es cualquier objeto con el que acabamos de colisionar, cualquier cuerpo que acabe de entrar en nuestra zona de vehículos, y el nombre propiedad de la misma nos va a dar cualquiera que sea este nombre aquí, que en nuestro caso es capa Así que básicamente si nuestro nombre es player, y en vez de en body dot name, podríamos simplemente hacer un doble igual si queremos que sea un nombre exacto. Depende completamente de ti. En este caso, no debería afectar nada. Enrolle nuestra declaración if con nuestros dos puntos, baje a la siguiente línea, y ahora podemos ejecutar nuestro PC de código. Entonces, ¿qué queremos hacer cuando nuestro jugador lo consiga? Bueno, vamos a llamar a la función DF a nuestro jugador. Ahora bien, esta función aún no existe, así que vamos a tener que ir a crear eso, pero la muerte del punto corporal. Y si quieres tener un caso extra de seguridad aquí, puedes decir si body dot tiene método y pasa en la cadena de la muerte, y luego podemos tocar body dot death en uno más. Podemos ir así. Y esto evitará un error si fuéramos a seguir adelante y ejecutar esto. Verás, aquí no vamos a tener ningún error porque básicamente estamos diciendo: Bien, estamos diciendo si chocamos con el jugador aquí, entonces si ese jugador, si ese cuerpo tiene esta función, entonces llámalo Y ahora mismo, no tiene esa función. Entonces, si quisieras poner esa capa extra de seguridad ahí usando el método HAS, ciertamente puedes hacerlo. Y ahora voy a entrar en mi reproductor y crear esta función funk Dak Y esto no No estamos pasando ningún argumento con ello. Entonces, ¿qué va a pasar cuando muera nuestro jugador? Bueno, necesitamos reproducir nuestra animación de muerte para que podamos corregir nuestro sprite Entonces sigamos adelante y hagamos eso. Sprite animado dos d punto, la muerte Y echemos un vistazo a eso ahora. ¿Qué pasa cuando nos atropellan un vehículo? La Di Da, pobre ranita cruzando la calle, a las. Bien. Entonces te vemos morir, y entonces nosotros uno o sprite es el camino equivocado No está mirando hacia arriba como debería. Así que vamos a corregir eso. Después de eso, sólo vamos a establecer su rotación. Y ya lo hicimos cuando presionamos. Entonces agreguemos eso a nuestra función de muerte aquí. Y echamos un vistazo que ahora debería estar actuando bien, plano o en posición. Impresionante. Ahora, lo que no puedes ver es que constantemente nos chocan porque nuestra forma de colisión sigue golpeando estos autos Y no sólo eso, también podemos seguir moviéndonos. Entonces vamos a ser, y volvemos a estar vivos. Entonces tenemos una rana inmatable. Sí. Bien, así que un utilete importa el tiempo, detengamos que nuestra colisión ocurra Y podemos ver esto. Y te voy a mostrar que si entramos en nuestro jugador golpeamos, y yo sólo voy a seguir adelante e imprimir rana machacada Y se puede ver que a pesar estamos muertos, todavía nos están machacando. Rana machacada, y vamos a seguir siendo machacados a pesar de que ya estamos muertos No queremos que esto suceda porque esto podría seguir restándonos vidas, dependiendo de lo lejos que estén los engendros Así que sigamos adelante y arreglemos eso en nuestro jugador. Y para hacer eso, solo vamos a conseguir nuestra forma de colisión que creamos, la forma de colisión dos D, y agregamos a nuestro jugador Y vamos a usar algo llamado diferido en él. Y lo que esto esencialmente va a hacer si echamos un vistazo es llama al método en el objeto durante el tiempo de inactividad. Siempre devuelve Nou, no el resultado del método. Entonces ahí tienes. Nuestra palabra clave aquí es lo llama durante el tiempo de inactividad. Entonces va a llamar a esto, lo que sea que pasemos. Cuando tiene la siguiente oportunidad que obtiene, básicamente, en lugar de tratar de llamarlo ahora cuando tal vez no pueda. Y Suma funciones te va a decir que hagas eso. Entonces, antes de que llamemos a eso, no hay que eliminarlos. Sólo voy a mostrarte aquí el error. Entonces si entramos aquí y me voy, deshabilitado es igual a verdadero, vamos a ver si aquí nos vamos a encontrar con un error. Y no impide que nuestro juego se ejecute, ya ves, nos aplaudieron dos veces, así que nuestra desactivación no está funcionando para uno Y dos, si entramos en nuestro depurador y miramos los errores, nos va a decir que no podemos no podemos cambiar el estado mientras se lavan consultas, usar llamada diferida Tu nos está diciendo específicamente que usemos eso. Por eso estamos usando llamada diferida aquí. Llamada diferida. Y aquí dentro va a haber una cadena de lo que queremos hacer. Y en este caso, se va a configurar deshabilitar. Yo que deshabilitó, y se necesita un segundo argumento, y esto va a ser lo que nos fijamos. En nuestro caso, se va a establecer en verdad. Y ahora, si miramos esto, ese error va a desaparecer, y sólo nos vamos a machacar una vez Y ahí tienes. Ya no va a aparecer dentro de nuestro código. Y si te preocupa la llamada diferida cuando nos atropellan una gama cercana de vehículos, así que cuando son como tres espalda con espalda, podemos echarle un vistazo aquí, y ya se ha desactivado antes de que el siguiente vehículo incluso nos toque Ahora realmente podemos morir aquí. Ahora lo que tenemos que mirar es, cómo nos recuperamos, ahora solo somos ranas no matables porque no podemos chocar con nada, así que tenemos que arreglar eso con nuestra muerte, tenemos que tener un reaparecer de algún tipo, necesitamos asegurarnos de que solo podamos movernos si estamos movernos si Uy. Elimino un poco más de lo previsto ahí. Bien, entonces tenemos que hacer un seguimiento de si nuestra rana ha estado viva o no viva o está viva. Y podemos hacer esto con una sencilla función que solo comprueba si está vivo o si está muerto. Y en base a esa variable, podemos o bien movernos o no podemos. Y para ello, vamos a usar un conjunto de estados, que va a ser un ENOM como se puede ver aquí por el ejemplo aquí , podemos usar estas Enums para contener piezas específicas de datos, supongo que se podría decir como se puede ver aquí por el ejemplo aquí , podemos usar estas Enums para contener piezas específicas de datos, supongo que se podría Y es básicamente como una lista de opciones entre las que podemos seleccionar. Y lo hace más fácil a la hora de revisar las cosas. Y esto se puede ver cuando se trata de la forma básica de una máquina de estado, que se utiliza para los caracteres. Por ejemplo, si has jugado Grand Theft Ato five, por ejemplo, tienes diferentes controles cuando estás a pie en comparación con cuando estás en un vehículo. Y eso es porque tú a pie los controles serían un solo estado. Nadar sería otro estado, y un automóvil sería un estado y un avión sería otro estado, etcétera Y vamos a usar esto para saber cuándo estamos vivos y cuándo nuestra ranita ha sido machacada. Entonces para crear esto, en lugar de usar la palabra clave var, usamos Enum, el nombre de la Enum, que ya que va a funcionar como una máquina de estados, solo voy a llamarla state Y luego en lugar de usar iguales o dos puntos, simplemente saltamos directamente a las llaves Y tradicionalmente, por lo que siempre he visto, estas siempre van a estar en capitales, así que voy a tener vivo, y luego el coma caiga a la siguiente línea muerta Entonces estos son nuestros dos estados vivos y muertos. Vivo será el estado predeterminado aquí. Y vamos a crear una nueva variable llamada current state y solo vamos a declarar esto como un estado. Entonces va a ser uno de nuestros estados aquí. Bien, entonces ahora con nuestro movimiento, todo lo que tenemos que hacer es verificar si el estado actual es igual a dos iguales estado en vivo, y luego tabular nuestro movimiento Así que ahora sólo podemos movernos cuando estamos vivos. Entonces ahora cuando morimos, tenemos que decirle que nuestro estado actual ahora se está configurando para estado igual deb Entonces, si ejecutamos esto ahora, no deberíamos poder movernos una vez que morimos y nos aplasta. Y ahí tienes. Nos metieron todos y no podemos movernos Entonces ahora todo lo que nos queda es que sigamos adelante y creamos la reaparición Vamos a crear una función de reaparecer, reaparecer. Y una vez que tengamos vidas aquí adentro, aquí es donde vamos a verificar. Si al jugador le quedan vidas, vamos a llamar a esto. Todo bien. Entonces vamos con, ¿cómo respondemos? Bueno, vamos a necesitar que nuestra colisión vuelva a funcionar. Entonces vamos a necesitar llamar diferido en nuestra forma de colisión Y en lugar de configurarlo en deshabilitado, necesitamos configurarlo en false para que ya no esté deshabilitado. Tenemos que cambiar nuestra posición, ¿verdad? Posición autodidacta, y necesitamos restablecerla a donde va a estar nuestra posición inicial. Y por el momento, eso es 169 y 233. Sólo voy a copiar este valor muy rápido. Y dentro de mi escena principal, voy a agregar un vamos a ver. ¿Qué le cambiaron el nombre aquí? Ah, aquí vamos. Fue renombrado a Marcador dos D. Y dame 1 segundo. Te lo voy a levantar. Ahí vas. Entonces vamos a usar un marcador dos D. Y voy a configurarlo para que se transforme por ahora. Sólo voy a pegar el valor en. Va a ponerla en la misma posición en la que empieza nuestra rana. Y voy a llamar a este jugador ubicación de spawn. Y ahora cuando respondamos, podemos hacer auto punto posición igual a nuestro jugador Bien. Eso no va a llenar para nosotros, así que solo tendré que teclearlo en jugador, spawn, ubicación, posición de punto Y esto debería suceder de manera bastante instantánea. Entonces sigamos adelante y subamos a nuestro proceso aquí. Y vamos a formar otra comprobación LI estado actual es igual a estado punto muerto. Puedes llamar a Respawn, y esto debería engendrarnos justo atrás en el principio donde empezamos, si te Y parece que tenemos una señal. ¿Qué es el mito? Oh, eso es justo. Los jugadores generan ubicación, no podemos acceder a eso porque en realidad tenemos que subir al árbol, recuerda que somos jugadores y el jugador no tiene acceso directo a esta ubicación de playersp aquí Entonces tenemos que seguir esta línea y subir uno, y luego eso nos lleva a este no dos D, y luego que no dos D entonces tiene acceso a nuestros jugadores engendrar Entonces tenemos que subir uno. Y la forma en que podemos hacer esto es de algunas maneras. Podemos seguir adelante y hacer obtener padre, obtener nodo. Y este nodo G es sólo una forma larga de escribir ese signo de dólar. Y entonces dentro habría una cadena para el camino directamente a la ubicación del span del jugador. Alternativamente, para que esto sea un poco breve, podemos simplemente obtener nodo, y podemos pasar en algunas cosas. Podemos usar un punto, que es igual a escribir uno mismo o podemos hacer dos puntos, que es igual a ese get parent que acabamos de borrar. Y se puede ver eso como mucho más corto. Así que podemos hacer esto con G padres jugador spawn ubicación. Bien, y eso debería arreglar eso. Ahora cuando nos aplauden, déjame ver que nos metemos de nuevo al principio Solo que todavía no podemos movernos porque sí tenemos que fijar nuestra apuesta actual, recuerden, no podemos movernos. Estado actual equivale a Estado En Vivo. Y no sólo eso, tenemos que hacer que nuestra animación vuelva a ser nuestro ídolo Wops Así que obtendremos nuestro punto de sprite animado TwoB y tocaremos nuestro Idol Sprite, lo volveremos a Y cuando lo ejecutamos ahora, splat solo ahora no podemos realmente no podemos decir cuándo conseguimos responder Entonces lo que voy a hacer, antes que nada, voy a usar Caldeford y ponerle eso después de todo lo demás porque me doy cuenta de que nos están aplaudiendo dos veces, así que ya veremos si solo moviendo esa línea vamos No lo hace, bien. No es un problema. Sólo tenemos que tener un pequeño temporizador, por ejemplo, después, lo cual está bien. Bien, así que vamos a ver ¿qué necesitamos? Necesitamos Nuestro símbolo muerto no está funcionando muy bien porque cenamos y estamos reapareciendo instantáneamente. No podemos decir nada de lo que está pasando. Entonces lo que vamos a hacer es que dentro de esta reaparición solo crearía esperar Y haremos lo que hicimos antes de usar Get Tree y crear ese temporizador. Y lo pondremos en 1 segundo. Eso se siente como mucho tiempo y la señal de tiempo de espera. Entonces 1 segundo puede parecer como mucho tiempo aquí en un viejo juego como este, splat y luego reaparecemos Impresionante. Ahora estamos siendo destrozados varias veces ahí, lo cual es un poco desafortunado Así que solo voy a bajar aquí y crear otro pequeño temporizador para 0.5, y voy a ver con qué puedo salirme con la suya o lo pequeño que puedo reducir esto a través de las pruebas. Bien, 0.5, podemos salirnos con la suya. Voy a probar 0.2. Y puedo salirme con el 0.2, así que incluso podríamos salirnos con el 0.1. Tener ese retraso realmente corto aquí. Sí, ahí vamos. Entonces ahora tenemos ese 1 segundo que nuestra imagen de muerte va a estar en la pantalla de nuestro pobre Bronte pequeño y desmenuzado Y entonces sucede la respuesta. Impresionante. Ahora bien, si quisieras, podrías establecer este número en una variable aquí arriba para responder el temporizador o el tiempo de respuesta, y ese será tu tiempo entre tus respuestas. Ahora para mí, creo que sólo voy a dejarlo a la una. Eso no es un problema. No creo que alguna vez vaya a querer retocar Ahora bien, si te das cuenta aquí cuando iba, si me siento aquí mismo, podría ser que me aplaste por el auto que hay debajo No, estoy bien. Oh, pero sí me destrozaron ahí cuando giré hacia un lado Entonces tal vez quiera modificar un poco más mi posición Y. Tal vez quiera ajustar mi posición Y un poco más ahí, pero eso va a reducirse a solo jugar con la posición y eso solo un poco más Pero no hay problemas. Pero eso lo hará por esto. Ahora tenemos nuestro sistema de muerte y repawn de jugadores sistema de muerte y repawn No tenemos vidas en este momento, pero llegaremos a esas vidas cuando lleguemos a nuestra sección de UI. Pero con eso, cuídate. Esa fue mucha información que repasamos. Y espero que estés listo. Estamos pasando a la siguiente sección del juego que es. 33. Muerte por agua: Bien, así que hagámoslo para que cuando saltemos al agua, muramos y tengamos que reaparecer Bueno, para hacer esto, podríamos hacerlo de varias maneras diferentes. Pero la forma más fácil que voy a decir para que hagamos esto ya que estamos usando un mapa de teselas es aprovechar eso y usar el mapa de teselas para decirnos en qué mosaico estamos parados. Si estamos parados en el agua, entonces moriremos. Si no, estaremos bien. Yo hago esto. Vamos a entrar en el guión de nuestros jugadores. Cerrar en las otras pestañas. Entonces entraremos en el guión de nuestros jugadores. Y lo que vamos a necesitar es una nueva variable para mantener nuestro mapa de mosaicos aquí. Ahora bien, no tenemos que poner esto en la parte superior, pero tampoco tenemos que configurarlo constantemente en nuestra función que vamos a hacer tampoco. Bien, así que vamos a conseguir esto y vamos a usar la palabra clave on ready, y todo lo que eso significa es que la variable que vamos a hacer sería la misma que si la pusiéramos aquí en la lista Entonces, si dijéramos, por ejemplo, número en igual a diez, sería lo mismo que si embaláramos número y luego lo pusiéramos en diez aquí abajo dentro del bloque listo Eso es todo en medios listos. Y esto es útil para cuando queremos ponernos en contacto con nodos específicos que están dentro de nuestra escena Y en nuestro ejemplo, queremos ponernos en contacto con ese mapa de mosaicos aquí Entonces vamos a hacer var Tilemap. Y vamos a establecer el nodo igual a todavía parte, y por supuesto, actualmente solo se llama Tilemap Ahora, recuerden lo que dije, creo que fue en el último video. En lugar de usar getParent aquí, podríamos acortar esto y en nuestro get no, simplemente hacer punto punto slash y tener el mismo equivalente de Creo que voy a hacer eso solo para que las cosas vuelvan a ser un poco más cortas. Todo bien. Entonces ahora tenemos nuestro mapa de azulejos. Ahora, lo que queremos hacer es que queremos comprobar en qué baldosa estamos parados. Entonces voy a seguir adelante y crear una nueva función aquí. Voy a llamar a este cheque, identificación de celular. ¡Vaya! Eso nos va a dar algún giro vacío. Y lo que esto va a hacer por nosotros es que básicamente lo usaremos para obtener primero la posición de la celda en la que estamos parados. Entonces vamos a decir pausa de barra, que se establecerá en nuestro tilemap local a MAP Y entonces esto va a tomar una posición, y esa posición va a ser la posición de nuestro jugador. Ahora, local a Map sólo nos va a devolver una posición, que será la posición de la celda en la que estamos parados. Y las celdas serían cada una de estas casillas naranjas. Entonces como estamos parados aquí, inmediatamente cuando comienza el juego, nos diría esta celda de aquí, la ubicación de esta celda. Y entonces la siguiente variable que vamos a crear va básicamente a entrar ahí y decir: Bien, eso está hecho con este azulejo. Ahora bien, cuál es esa identificación, y nos va a devolver una. Y para obtener ese ID, vamos a crear una variable aquí. Y esto solo va a ser Tilemap. Se ve. Mapa de azulejos. Todavía no. ID de fuente de venta. Y eso sólo va a tomar los dos argumentos. El primero va a ser la capa en la que está , que es la capa cero. Y la segunda va a ser la posición, que ya obtuvimos de nuestra variable de pausa de mapa aquí. Entonces ahora esta identificación debería ser lo que sea en lo que estemos parados. Entonces, si entramos e imprimimos esta identificación, y solo ejecutamos la identificación de celda de verificación dentro de nuestro proceso, vemos que uno se imprime inmediatamente para la mediana, dos se imprimen para la carretera y tres para el agua. Quienes manejan esto, podemos echar una mirada hacia abajo en la salida. Vemos que uno se imprima para nuestra mediana, dos para nuestro camino. Y si puedo llegar al agua aquí, podemos tener uno para la mediana otra vez, y luego tres cuando golpeemos el agua. Ahí vamos. Entonces ahora sabemos que esto está funcionando a la perfección, aunque vengamos hasta aquí porque comprobaremos la capa cero. Entonces vamos a tener tres va a ser nuestra agua ya que bien, ya lo sabemos ahora. Entonces lo que vamos a hacer es que ahora podemos comprobar que I ID es igual a tres, y aquí es donde mataríamos a nuestro jugador. Bien, entonces entramos, llamamos a nuestra función de muerte aquí arriba. Ahora cuando tocamos el agua, debemos morir. Ahí vamos. Así que ahora podemos morir cuando nuestro jugador toque el agua y esperar la reaparición Ahora bien, esto es un poco podría ser un poco agotador cuando lo estamos comprobando constantemente así, pase lo que pase Así que la siguiente mejor ubicación sería llamar aquí solo cuando estemos vivos, pero aún mejor, es que podemos llamarlo siempre que realmente nos mudemos. Entonces solo voy a agregar esto al fondo de todos mis movimientos aquí. Ahora bien, cuando me muevo cualquier dirección es la única vez que vamos a verificar en lugar de enviarla spam Hasta el momento, bien. Salta, papá, espera la reaparición Ahora muévete de nuevo. Bien. Así que ahora somos capaces de ahogar nuestra rana en el agua, y podemos dejar que nuestra ranita sea atropellada por un auto Bien. Entonces ya tenemos todas nuestras muertes bajo control. Todo lo que nos queda por hacer es hacer nuestras plataformas funcionen y luego obtener nuestros pequeños puntos de ganancia al final saltando las ubicaciones correctas y luego configurando nuestra pantalla de anuncios con nuestro puntaje. Y entonces creo que ya casi terminaremos. No creo que nos falte nada después de eso. Podría estar equivocado, pero ahí tienes. Ahora podemos ahogar nuestra ranita con el agua, y ya sabes cómo obtener la identificación de cualquier ficha en la que esté parado tu jugador Bien, para hacerlo por éste. A. Los veré chicos en el siguiente video. 34. Plataformas de agua: Bien, sigamos adelante y consigamos nuestra configuración de plataforma. Una vez que tengamos nuestra plataforma configurada, lo único que podemos hacer o lo único que nos quedará para estas plataformas es básicamente simplemente intercambiar los sprites y hacerlos largos y cortos. Entonces para mi plataforma aquí, solo voy con una configuración de tres sprites aquí para que tengamos usando el registro para este ejemplo, el end, middle, y el otro extremo, right, middle, y start Entonces eso significa que estoy usando tres sprites aquí con mi escena principal, siendo la raíz de mi escena aquí un cuerpo de personaje que he renombrado Podría cambiarle el nombre a un registro si quisiera. Y eso tiene un área dos D con una nave de colisión que cubre mi bitácora aquí. Y he conectado tanto el cuerpo entró como la señal de salida del cuerpo Bien. Entonces, una vez que tengas ambas señales conectadas, el script en tu plataforma debería verse así, y estamos listos para agregar información o agregar todo a ella. Entonces, con la forma en que vamos a hacer esto, también vamos a estar agregando cosas a nuestro guión de jugador también. Y la mayor parte de este trabajo en realidad estará en nuestro guión de jugador. Entonces, por el momento, vayamos al guión de nuestro jugador y agreguemos un par de variables que vamos a usar. Primero, va a ser plataforma, y eso va a ser un booleano, y eso es básico va a decirle o dejar que nuestra agua sepa si estamos o no a salvo porque estamos en una plataforma o si no estamos en una plataforma, la llamada notificación de muerte Vamos a conseguir nuestra plataforma var plataforma actual, y ese es un cuerpo de personaje dos D que pasamos en. Entonces eventualmente lo configuraremos por ahora solo lo enviaré a N y vamos a necesitar una dirección de plataforma, que es un entero predeterminado. Vamos a poner a cero, aunque no debería importar. Todo bien. Entonces, nuevamente, vamos a usar la plataforma, la plataforma actual y la dirección de la plataforma como nuestras tres nuevas variables en nuestro script de jugador. Vamos a seguir adelante y pasar a nuestra identificación de celda de verificación, y vamos a agregar a nuestra declaración if. Entonces vamos a decir si ID es igual a tres, y la plataforma es igual a falso. De esa manera, diremos si estamos en el agua y no estamos en una plataforma, entonces mataremos al jugador. Entonces tenemos nuestras condiciones establecidas ahí. A ver. Para un jugador, también vamos a comprobar mientras estemos vivos. Si nuestra plataforma actual no es igual a nula, que no va a ser solo es igual a ella por ahora. Se le asignará un objeto una vez que nuestro jugador esté en nuestro registro. Entonces digamos que la plataforma actual no es igual a nula, entonces podemos simplemente seguir adelante y llamar nuestra posición punto más iguales, vamos a hacer un poco de matemáticas. Tenemos que abrir y cerrar nuestros paréntesis aquí porque vamos a usar el orden de las operaciones cuando se trata de nuestras matemáticas Vamos a decir dirección de plataforma. Veces 16. Entonces vamos a usar esto ya sea como más uno o uno negativo, tal como lo hicimos con nuestros vehículos, y multiplicado por 16. Entonces, o vamos a estar moviendo 16 a la izquierda o 16 a la derecha, y vamos a estar haciendo esto con el tiempo. Entonces vamos a multiplicar eso por Delta. De esta manera no estamos basados en marcos, estamos más basados en el tiempo. Todo bien. Entonces, lo único que nos queda por hacer es establecer la dirección de nuestra plataforma, y podemos hacerlo a través de una función. Diversión. Queremos ir con, vamos con la dirección establecida. Y eso va a tomar un argumento de un entero, no devuelve nada. Y todo lo que esto va a hacer es que va a establecer la dirección de nuestra plataforma igual a ter. Todo bien. Así que ahora podemos dirigirnos a nuestro script de plataforma, y no necesitamos este bloque listo. Podemos eliminar eso. Y dentro de nuestro proceso, queremos que nuestro registro en mi caso siga en movimiento. Entonces voy a seguir adelante y hacer posicion punto X plus es igual a 16 veces Delta. Eso va a moverlo constantemente hacia la derecha. Yo cuando entramos cuando nuestro jugador entra al área. Así que vamos a establecer la plataforma aquí en true, y vamos a establecer nuestra plataforma actual nuestro registro aquí, mi plataforma aquí. Entonces voy a tomar la plataforma body dot y ponerla en verdad porque ahora estamos en la plataforma y el cuerpo creo que era plataforma de bordillo. Sí, la plataforma de bordillo es igual a así. Y cuando el cuerpo salió, vamos a hacer lo contrario, así que vamos a establecer En lugar de true, lo pondremos en falso. En lugar de celular, configúrela para saber. ¿Todo bien? Entonces lo que estamos haciendo hasta ahora es cuando nuestros saltos en el registro, que actualmente se mueve a la derecha en todo momento. Mientras está haciendo eso, bien. Reinicia eso. Nuestro registro se está moviendo actualmente a la derecha por 16 con el tiempo y no basado en cerebros. Ahora, cuando nuestro jugador entre aquí al área de nuestra plataforma en la que pueda pararse, vamos a establecer la variable de plataforma en nuestro jugador en true. De esa manera, cuando revisemos la identificación del celular para ver si estamos parados sobre el agua, plataforma será cierta y nuestro jugador no será asesinado. Y luego estamos configurando la variable de plataforma curva de nuestro jugador para la plataforma actual igual a uno mismo. Entonces el cuerpo del personaje aquí que se mueve representando nuestra plataforma. Y en base a eso, podremos mover a nuestro personaje aquí. Por lo que la plataforma actual no es igual a nula. Entonces, si estamos en una plataforma actual, entonces vamos a mover nuestra ranita en la misma dirección a la misma velocidad Entonces, lo último que nos queda es llamar realmente a esta función que creamos establecer dirección. Entonces body dot o set direction, y eso toma un entero, lo que significa que nos moveremos hacia la derecha. Usaremos uno positivo. Y ahora, si seguimos adelante y agregamos la plataforma a nuestra escena y la ejecutamos, como ves, ahí está nuestro registro, y si saltamos sobre él, terminamos muriendo ahí. Podría ser necesario actualizar esto. Un momento ahí. Trae una nueva de nuevo. Muévete ahí abajo, dale otra oportunidad a papá. Bien, me estoy muriendo, así que mis señales podrían necesitar ser reconectadas Desconectaré eso y lo volveré a conectar. Y haré lo mismo con mi salida, desconectaré y reconectaré la salida de mi cuerpo Y ya veremos si ese era el tema. Bien. Creo que veo lo que me perdí aquí, y estamos obteniendo esta información un poco demasiado rápido. Entonces antes de que tengamos nuestra declaración if dentro de nuestra identificación de celda de verificación, voy a usar un peso y hacer lo que hicimos antes con Get tree, crear temporizador, y solo vamos a tener una pequeña pausa ahí de 0.1 y obtener esa señal de tiempo de espera Y eso debería arreglarlo para nosotros. Aquí vamos. Ahora podemos saltar a nuestro pequeño tronco, y estamos bien. Podemos saltar de un lado a otro sobre él y estar bien, y nos estamos moviendo. Y en cuanto saltemos, estamos bien para volver corriendo al otro lado si lo queremos. Y aún así, si saltamos al agua, gritos seguimos adelante y morimos Bien, entonces, ¿cómo podemos hacer que este guión sea un poco más? Supongo que podríamos decir modular de alguna manera, de una manera que va a ser más amigable para que podamos cambiar constantemente si tenemos dos sprites, tres sprites, un sprite, qué tan grande es nuestra forma de colisión, y tener todo eso independientemente, así como, supongo, establecer nuestra dirección para que podamos derecha y algunos moviéndose a la derecha o algunos moviéndose a la izquierda. Bueno, vamos a seguir adelante y exportar una dirección de un entero. Eso a cero por defecto. Oh, tengo la palabra barra ahí dentro. Ahí vamos. Ahora quiero ir a mi plataforma. Puedo cambiar esto a uno en lugar de cero. Podemos tomar dirección y pasarla aquí cuando llamamos a establecer dirección. Y más iguales, y podríamos hacer lo mismo aquí donde tenemos dirección Whoops veces 16 Y podemos seguir adelante y verificar y asegurarnos de que todo siga funcionando. No hemos roto nada. ¿Bien? Los arqueologos siguen moviéndose Podemos saltar sobre él y bueno. ¿Bien? Así que aún no hemos roto nada. Eso es genial. Y veamos, ¿ qué más necesitamos? Bueno, supongo que eso sería todo. Y podemos simplemente seguir adelante y configurar o crear todas nuestras diferentes plataformas ahora usando el mismo script. Y luego solo creamos un sponder para ello, igual que hicimos con nuestros camiones Volveré enseguida mientras creo un par de estos. Bien, así que he seguido adelante y he hecho unas tres tortugas largas también, y solo haz algunas aquí en la escena Y como veis, adelante y toca este tronco, salta a las siguientes tortugas Siguiente, salta a la derecha. Súbete a mi tortuga, espera, salta al tronco, y estoy listo para saltar a lo que sería nuestro espacio eólico. Todo bien. Así que nuestras plataformas ciertamente están funcionando bien ahora. Yo es genial. Quiero señalar que sí agregué una espera para 0.1 en el cuerpo Ingresó antes de cambiar la plataforma en nuestro script de plataforma. Entonces sí quiero tomar nota de eso. Y ahora todo lo que necesitamos ahora son nuestros engendros. Bien, así que sigamos adelante y creemos esos. Y vamos a hacer efectivamente esos igual que los de nuestros camiones aquí. Entonces vamos a seguir adelante y conseguirnos o sumar un no dos D, lo llamaremos plataforma spawner Y vamos a seguir adelante y empezar a alinear estos. Entonces tendremos uno ahí. Ja uno ahí. Ja uno lo que parece ahí. Bien. Esa mirada incluso hace eso. En realidad, un lugar un poco raro. Sí, ve ahí. Y entonces necesitamos una pareja para el otro lado para nuestros obstáculos A Agradécele una y otra por nuestro obstáculo Todo bien. Entonces esos parecen algunos buenos puntos de desove Estos un poco cerca. Ayude a respaldar un poco a esos. Y vamos a tener algo parecido a nuestro desove de camiones, así que voy a seguir adelante y simplemente copiar nuestro generador de camiones Y veamos. Son esos que van a ser Al mismo, diferente nombre el vehículo. Sí, más o menos. Así que probablemente podríamos salirnos con la suya con solo usar nuestro script para camiones aquí. Nuestras plataformas serían nombradas vehículo. Pero creo que quiero hacer otra diferente porque no me gusta el tiempo de espera. No creo que eso sea bueno para las plataformas. Sólo voy a usar eso como mi base. Voy a hacer clic en mi spawner de plataforma, agregar un nuevo script Y aquí dentro, voy a seguir adelante y sólo pegaré en los guiones del vehículo. Voy a llamar a estos plataforma. ¡Vaya! Eso no es lo que queríamos. Cambiaremos esto a punto de plataforma Instanciate PI para instancia de plataforma, self en Child Tiempo de espera. Ves, aquí es donde va a entrar el tema. Entonces creo que veamos. Iremos 1-2, y agregaremos tres a eso. Entonces veremos cómo funciona eso. Entonces cambiaremos esto de vehículo span a plataforma de desove Entonces esta de aquí va a ser nuestra escena de registro. Escena de plataforma. El siguiente, nuevo, va a ser lo mismo. Seguiré adelante y simplemente arrastraré mi guión hacia arriba y los adjuntaré a todos mis poners de plataformas Y dos es mi escena de registro. Tres es la plataforma de troncos, y luego cuatro y cinco serán mi territorio Muy bien. Entonces, si ahora nos deshacemos de estas plataformas, mueve a mi jugador a estar debajo del colum para que la rana pueda sentarse encima A ver si el trabajo. Sí, sí, me cruzo todo el camino. Sí, ahí están mis tortugas. Bueno, parece que necesitamos cambiar esos tiempos de espera. Eso va a hacer que sea extremadamente fácil para nuestro jugador simplemente hacerlo a través. Y es por eso que queríamos usar un script diferente al de nuestro camión porque vamos a necesitar tiempos de espera completamente diferentes para las plataformas. ¿Todo bien? Entonces probemos más diez. Entonces esto nos dará una variación de 11 y 12 segundos. Oh, ¿qué conseguí entre estos autos? A Así que 11 y 12 segundos podrían ser un hueco demasiado pequeño en este caso. Entonces en este punto, solo estamos un poco ajustando para ver qué encaja mejor aquí Pero a lo mejor intentaremos cinco y seis. Y saltaré todo el camino a través, y veremos cómo es este tipo de propagación. Pero en este punto, simplemente estás modificando tus números para ver qué se ve bien para tus plataformas y qué se ve bien para tus camiones Solo quiero asegurarme de que estos no van a ser completamente consistentes todo el tiempo, y no parece que lo sean, lo cual es genial. Alternativamente, si quisieras codificar estos un poco más o hacerlos diferentes específicamente, vienes aquí y haces tu tiempo de espera aquí arriba y nosotros lo haremos un flotador, no un piso. Alternativamente, puedes hacerlo aquí arriba y eliminar esta línea por completo. Si quisieras tener una cantidad específica. Querías tener control sobre la cantidad exacta de tiempo que esperaste por respondedor, puedes hacerlo de esa manera. Voy a seguir con este poco de aleatorización aquí. ¿Y sabes qué? Voy a ir con Ted ahí. Y creo que eso lo hará por nosotros porque ahora tenemos a nuestros patrocinadores. Tenemos nuestras plataformas. Entonces todo parece estar listo y funcionando. Podríamos cruzar. Y supongo que a continuación, podemos hacer nuestra victoria, nuestra pequeña victoria allá arriba cuando saltemos a la zona correcta. A ver. ¿Me gustan estos números? Y saltamos al agua, morimos. Impresionante. Creo que me gustan estos números por ahora al menos. Bien. Entonces, eso es todo. Ya terminamos con nuestra plataforma desove y montándolos. A continuación, cubriremos el área donde saltamos a nuestra zona de viento y ahí desovamos en nuestra pequeña rana hogareña Bien. Los veré en la siguiente. 35. El espacio de victoria: Bien. Para la zona de viento, puedes ver que aquí tengo una nueva escena, y eso es solo un área dos D con forma de colisión y un sprite dos D que solo tiene mi rana casera aquí Como una textura, y está desactivada o visible está desactivada por defecto. Puedes hacerlo haciendo clic en el pequeño globo ocular aquí. Y WindSpace tiene un guión, así como una señal de cuerpo ingresada conectada a él. Y para el guión, simplemente, lo que vamos a hacer es tener body dot Win Zone establecido en true. La zona de victorias es una nueva variable que se ha agregado a la jugada. El estado actual del punto del cuerpo se establece en body dot sta dot win. Entonces tenemos un nuevo estado agregado aquí, así que ahora tenemos Alive, Dad y Win. Entonces todo lo que hacemos es obtener nuestro sprite dos D, obtener la propiedad visible, establecerla en true Y en nuestro reproductor para evitar cualquier problema y para arreglar un pequeño error, tiré justo aquí. El estado actual de LF es igual al punto muerto stat. Puse nuestro awight de 1 segundo aquí y lo saqué de la función de reaparecer Solía estar aquí en la cima. Simplemente lo saqué y lo trasladé ahí arriba a nuestro estado y eso debería ser todo lo que tenemos que hacer. Ahora podemos volver a nuestra escena principal e importar nuestra zona de viento, nuestro espacio de viento, y simplemente encajarlo ahí dentro de cada una de nuestras pequeñas ranuras. Y tal vez tengas que hacer algunas pruebas para asegurarte de que tu rana no la esté tocando prematuramente para activar el viento aquí ¿Tú? Entonces tengo el mío cubriendo todas mis áreas. Y si quieres verificar tus zonas de colisión y todas estas, estas áreas de depuración, simplemente nos dirigimos al menú de depuración en la parte superior, y tendrás la opción mostrar formas de colisión visibles. Y si haces eso, cuando lo ejecutes, verás que aquí podemos ver todas nuestras cajitas colisiones. Para todo. Ahí vamos. Entonces, si lo estás activando accidentalmente o podrías estarlo, adelante y habilitarlo Échale un vistazo tú mismo. Y ya verás una vez que hagamos nuestro camino hacia arriba. Deberíamos tener otro registro. Ahí está. Y podemos desencadenar nuestra victoria. Yo. Y fíjate que no nos quedamos muertos impresos en nuestra consola ahí abajo. Y cuando nuestro estado es nuestro estado actual en punto win, reaparecemos y luego volvemos a poner la zona de victorias en falsa Ahora, también estamos usando la zona de ganancia en nuestro ID de celda de verificación. Entonces agregamos otra condición aquí. Entonces, si ID es igual a tres y plataforma es falsa. Entonces, si estamos en el agua, no estamos en una plataforma y nuestra zona de victorias no es cierta, o se podría decir que la zona de victorias es igual a falsa. Esa sería otra forma de escribir. Entonces podemos llamar a la muerte. Entonces, si no estamos en la zona de viento, no estamos en la plataforma, y estamos en el agua, entonces matamos a nuestra ranita. De lo contrario, nuestra estaca de viento debería activarse, y solo podemos hacer una respuesta sin matar a nuestro jugador. Todo bien. El espacio de viento es muy sencillo, muy fácil de hacer ahí. Ahora bien, si dejas la rana aquí habilitada todo el tiempo depende de ti. Si quisieras, podrías entrar y agregar un nodo temporizador. Podrías entrar aquí y agregar un temporizador. Y luego ponle esto a, no lo sé, diremos 5 segundos. Entonces podemos entrar o más bien podemos conectar su señal de tiempo de espera a nuestro espacio eólico y en el tiempo de espera Pondremos nuestro sprite dos D visibles para Voss, y justo después de girarlo a Tro, podemos comenzar el tiempo Para que podamos obtener el temporizador, col start. Si fuéramos a hacerlo de esta manera, que depende de usted. Aquí es donde va a entrar un poco de diseño. Qué auténtico quieres y qué tan personalizado quieres hacer tu juego, etcétera Entonces mis cerraduras y eso empiezan a desovar. Vamos. Yo, así puedo aparecer aquí y esperamos a cruzar. Entonces, si aquí usamos el temporizador, nuestra rana nuestra ranita casera va a aparecer para el triunfo, y luego después de unos segundos, entonces va a desaparecer para que la veas ahí arriba y ahí va, desapareció. Entonces, si quieres que desaparezca así , así es como lo harías. Simplemente podemos agregar ese temporizador a su espacio de viento, configurarlo en el inspector a cuánto tiempo quiere que sea. Inicie el temporizador después de configurar el sprite para que sea visible Y cuando el temporizador se agote el tiempo, ponlo en false. Bien. Así que eso lo hará por nuestro espacio eólico, y solo tenemos que echar un vistazo a nuestro head up display o HUD o Qu Wee y mirar a crear un sistema de puntuación Bien. Entonces eso es todo, y te veré en la siguiente. Casi terminamos de crearnos una rana o clon. 36. Corregir fugas de memoria: Bien, todos, hoy no vamos a agregar ninguna característica En realidad vamos a arreglar lo que sería un utilete crucial, especialmente en un juego más grande. Ahora, lo que tenemos es una fuga de memoria en nuestro juego. Y tenemos esto desde dos puntos. Es decir, técnicamente más alrededor de las diez, pero echemos un vistazo. Si seguimos adelante y jugamos esto, jugamos a este juego, y yo sólo voy a sacar esto aquí. Es que voy a tener que deslizarme esto por ustedes. Para que puedas ver todo desove fuera pantalla, y ellos vienen, vienen, y solo mira esos autos van las plataformas arriba, van a hacer lo mismo Van a seguir adelante y van a ir para siempre. Nunca van a parar. Y esto es lo que se llama una fuga de memoria. Bien. Así que sólo voy a dejarlo ahí justo para que podamos verlo más fácil. Pero si hago una pausa en esto y hago clic en la pestaña remota aquí justo en la parte superior de nuestro árbol de escenas, que solo está disponible cuando el programa se está ejecutando. Y si golpeamos a distancia, echa un vistazo a todos estos autos solo en un generador que aún existe, aunque probablemente no necesitemos a la mayoría de ellos Y lo mismo con todos los demás reproductores. Y nuestros generadores de plataforma, nuestros generadores de plataformas no son tan malos porque tienen una tasa de span mucho más lenta que los autos, pero van a continuar para siempre, y nunca van Nunca van a liberarse de la memoria. Así que eventualmente tendrás este pequeño juego que podría tomar 128 gigs de am solo para seguir jugando Tomaría mucho tiempo, pero eventualmente todo sumaría. Entonces arreglemos esto muy crucial, supongo, lo llamamos bug, y es muy sencillo para nosotros hacerlo. Sólo tenemos que poner una declaración if dentro de ambos scripts. Ahora bien, los números que escojas aquí, por supuesto, dependerán de tu proyecto. Pero por lo que he probado y basado en nuestra vista de ventana, tengo un conjunto de números que voy a usar aquí. Y lo que vamos a hacer ahora mismo es que estoy dentro del script de mi plataforma y dentro del proceso aquí. Sólo voy a comprobar si la posición global obtuvo X, ahora la diferencia aquí entre posición y posición global es si entramos aquí a nuestras plataformas, por ejemplo, esta va a ser nuestra posición local, ¿verdad? Así que solo la propiedad de posición. Pero cuando estamos en nuestra escena principal por encima de todo lo demás, esto va a estar a cargo de nuestra posición global que vemos en pantalla, independientemente de quién sea el padre. Por ejemplo, si echamos un vistazo a nuestro espacio de victorias aquí, podemos ver que su posición en nuestra pantalla principal aquí es en 24 y 45. Y esto va a ser más de un espacio más global, mientras que si entramos aquí, podemos ver nuestro espacio eólico, nuestra posición local aquí es a las 00. Entonces estos son dos números diferentes. Entonces, ojalá, eso tenga sentido para usted en cuanto a por qué estamos usando la posición global aquí. Y, claro, queremos la propiedad X porque eso va a controlar nuestra izquierda y nuestra derecha. Entonces, si nuestra X es mayor que 436, eso está a unos 100 píxeles fuera de la pantalla a la derecha. Y en base a dónde están nuestros patrocinadores, esto todavía da suficiente espacio para pasar de eso. Entonces, si nuestro punto de posición global X es mayor que 436 o el punto de posición global X es menor que negativo 100. Así que vamos a unos 100 píxeles fuera de pantalla y dirección izquierda y derecha. Entonces, si alguno de esos es cierto, todo lo que vamos a hacer es auto punto Qu libre. Bien. Entonces ahora deberíamos ver plataformas de personajes deshabilitándose entre sí o borrándose unas a otras de nuestra memoria Y esta es sólo una solución potencial. Por algo como esto, otra solución, que si estás dependiendo de tu juego, por ejemplo, si estás haciendo algo así como un infierno de bala, vas a querer ir con algo llamado pool de objetos, y podemos hablar de pool de objetos en video de características si tienes razón así que voy a bajar a mi patrocinador punto GD aquí, Y veamos. ¿Cuál estamos buscando aquí? En nuestro guión vehicular. Ahí vamos. Así que no en nuestro lapso en un script de vehículo, y lo mismo aparte del proceso. Voy a pegar en el mismo código. Si el punto de posición de subrayado global X es mayor que 436 o la posición de subrayado global X es menor que negativo 100, el punto auto q Y ahora, si sigo adelante y dirijo esto y Ups estamos en la escena correcta, nuestra escena principal aquí Voy a seguir adelante y pausar esto muy rápido, ir a nuestro árbol remoto. Y podemos echar un vistazo a nuestros reproductores regulares aquí donde van a estar los autos aquí está mi ventana de juego para sacar eso. Y si sigo adelante y dejo que esto juegue, ¿verdad? Entonces tenemos algunos autos en la red manchando aquí, y podemos ver esto aquí Y sólo voy a extender la ventana a la derecha. Mi error ahí. Parece que en su lugar agarré a Goto. Vamos. Y ahí tienes. Se puede ver que están en el control remoto así como visualmente ahí. Una vez que vas lo suficientemente lejos, en realidad se están borrando por completo. Entonces, ahora todos nuestros objetos están siendo manejados, y potencialmente solo podemos tener tantos en o tantos en nuestra escena en un momento dado. Y se puede ver las plataformas en la parte superior haciendo lo mismo. Y las mismas cosas pasando fuera del lado izquierdo, fuera de la pantalla lo que no podemos ver en este momento. Entonces ahí vamos con esa simple, técnicamente dos líneas de código, hemos arreglado nuestra memoria, nuestra memoria oh, eso es simplemente dejar mi mente ahora mismo. Fuga de memoria. Es gracioso ya que estamos hablando de memoria. Pero ahí tienes. Con eso, hemos solucionado nuestro problema de fuga de memoria. Y te voy a mostrar un tema aquí. En realidad no es un problema, sino solo para mostrarte un ejemplo más aquí. Vamos a la plataforma. Si usamos la posición en lugar de la posición global, vas a ver un ejemplo aquí. Si echamos un vistazo, van a ver, sobre todo con las tortugas, van a ver a las tortugas desaparearse justo sobre esta zona de aquí Bien. Vigilos, están entrando. Entonces, cuando estamos usando esa posición local, ahí tienes. Ya ves que están desapareciendo demasiado pronto. Apenas llegan a la pantalla, y apenas se mueven por aquí, y se han ido. Es por ello que tenemos que usar la posición global. Bien. Entonces solo quería demostrarlo un poco más visualmente para ti ahí. Sin redibujar. Gratis. Y son solo, como dije, completos, destruye el objeto y lo saca de la memoria Bien, así que ahí tienes. Ahí es como podemos arreglar esa memoria tarde. Bien. A continuación, podremos pasar al marcador y al HUD, sumando vidas de jugadores y todo eso ahí dentro 37. Sistema de puntuación: A Bien. Entonces en el video de hoy, vamos a seguir adelante y sumar el sistema de puntos, como puedes ver aquí. Estas son las reglas que vamos por diez puntos por cada paso, 50 puntos por cada rana que entra y 1,000 puntos por cada vez que metemos cinco ranas adentro Entonces eso es lo que debemos tener en cuenta cuando hacemos esto. Y voy a comenzar con la creación de un script global, también conocido como Singleton o auto load Y para eso, sólo voy a hacer click derecho en mi sistema de archivos. Y crear nuevo guión, y voy a llamar a esto mi solo voy a mantenerlo simple y volverme global. Y para activar esto, subimos a la configuración de nuestro proyecto. A ver. ¿Tenemos eso capturado ahora mismo? Nosotros no. Aquí vamos. Podría ser un poco grande, pero aquí vamos. Y entramos en la pestaña Auto oad. Pulsa nuestro botón de navegación y simplemente falla y selecciona nuestro script global. Obtendré el nombre global por defecto. Podrías cambiarlo, pero no veo por qué necesitamos agregar, y ahí vamos. Ahora podemos usar este script en cualquier parte de nuestro código. Y ahora mismo, creo que ahí es donde vamos a mantener nuestro puntaje. Ahí es donde vamos a mantener nuestro puntaje. Entonces, si cerramos eso, ya podemos abrir nuestro guión global haciendo doble clic en él, y para darte un ejemplo aquí. Podemos bajar aquí. Creamos otra función aquí llamada Print SCORE. Tengo una variable aquí arriba llamada SCORE. Es un entero, digamos que tienes 50. Y el objetivo de esta función es sólo imprimir la escuela. Así que con que siendo un global, podría entrar en mi guión de jugador aquí, y podría simplemente escribir ese nombre que teníamos para el que me fui, que se llamaba Global para el punto G mayúscula, y luego podríamos usar la función que acabamos de crear, imprimir SCR Y luego cuando ejecutemos esto, veremos esa partitura impresa aquí en nuestra salida. Así que un script global contiene variables y funciones que podemos alterar y usar dentro de nuestro juego en cualquier guión en cualquier momento. Así que sigamos adelante y podemos eliminar todas esas cosas y establecer la puntuación a cero por defecto. Y vamos a seguir adelante y tener una función llamada update score. Todo lo que vamos a hacer aquí es que vamos a ir a donde vamos a estar imprimiendo nuestra partitura. Y ¿necesitamos mostrar deberíamos mostrarlo en pantalla en este video? Ahora, guardaremos la visualización en pantalla cuando empecemos a cubrir el HUD Entonces aquí, sólo vamos a seguir adelante e imprimir la partitura. Cuando esto suceda, la puntuación de actualización tomará la nueva cantidad para agregar. Puede ser un puntaje int para hacer más igual a nueva cantidad. Y podemos hacerlo Bien, primero asegurémonos de que esto funcione. Así que cada vez que saltamos, obtenemos diez puntos, ¿verdad? Así que vamos a tener que sumar esto a nuestro movimiento en todas nuestras piezas. Entonces vamos a ir punto global Lo actualiza ¿Actualizar puntaje? Porque aún no lo salvamos. Yo. Actualizar puntaje y aprobar en diez puntos. Y seguiremos adelante y copiaremos esto en todos nuestros movimientos y seguiremos adelante y saltaremos en el juego. Y a medida que nos movemos, deberíamos ver que constantemente se agregan diez puntos . Ahí vamos. Diez, 30, 40, 50, 60, 70, 80, 90, 100, uno, diez, etcétera, así que esto está funcionando Nosotros todos nuestros botones, fantástico. Podemos simplemente subir nuestros puntos así. Entonces los puntos aquí son increíbles. Yo solo seguí adelante y me deshice de la otra impresión ahí cae solo para aclarar eso, sea un poco más fácil para ti. Entonces a medida que avanzamos y corremos ahí y corremos, se puede ver en nuestra salida, nuestro número sube cada vez que nos movemos. Entonces ahí vamos. Está funcionando. Fantástico. Ahora, también tenemos que hacer un seguimiento de cuántas ranas obtenemos en total en caso de que seamos ranas totales no suena como la cantidad que queremos Bla, bla, bla. Nosotros lo llamamos combo. Ranas en Um, no lo sé. Llamémoslo la rana Multi. Multi rana. Comienza en cero. Cada vez que añades a la rana múltiple, ¿verdad? Hacemos multi rana más es igual a uno. Recuerdo que con cada combo de cinco, conseguimos mil puntos. Así que aquí es donde vamos yo multi rana, menos de cinco, entonces sólo voy a tocar esta línea aquí dentro. Entonces solo haremos puntaje más igual a nueva cantidad. De lo contrario hacemos puntaje más equivale a 1,000. Obtendremos 100 si metemos cinco niebla en eso solo va a ser si nos metemos en un área de anotación, así que en realidad no podemos aumentar nuestra rana pi ahí. Entonces para eso en realidad tenemos que ir a nuestro WindSpace e ir a nuestro on body ingresado, y aquí es donde vamos a aumentar ese número Entonces vamos a hacer Global MultifrogPlus igual a uno. Solo voy a pegarlo ahí dentro de nuestro WindSpace Y luego también vamos a llamar a nuestra actualización así que puntaje global de actualización de puntos, y vamos a pasar 50 porque tenemos una rana adentro Y ya que estamos aumentando nuestra Multi rana antes, actualizando nuestra puntuación, ¿verdad? Entonces estamos actualizando nuestro multi frog por uno, luego lo verificaremos. Básicamente, si esa es nuestra quinta rana o si esa no es nuestra quinta rana, entonces haremos esto. Sólo vamos a sumar en ese 50. De lo contrario, agregaremos 1,000, y luego realmente necesitamos establecer multi frog nuevo a cero porque tiene que restablecerse. Entonces veamos si esto funciona. Todo bien. Estamos todo el camino hasta aquí. Sigamos adelante y metamos en la zona. Diversión. Oye, estamos en el registro. Ahora esperamos a que pasen estas tortugas. Bien, pequeña tortuga. La tortuga. La rana y la tortuga. Entonces vamos a tener 290. Entonces deberíamos saltar aquí. Ahora, cuando vayamos a Zona, deberíamos saltar hasta 340. Y oh, subimos a 350 en esa porque también nos mudamos al mismo tiempo. Tengo que recordar eso. Um, conseguimos nuestros diez puntos. ¿Esta rana funciona de esa manera? En realidad ha pasado mucho tiempo desde que jugué, así que no estoy 100% seguro de eso. Si ese es el caso, entonces para resolver este tema, claro, solo podemos sumar 40, y luego contará eso más diez de nuestro salto ahí dentro. Entonces, si fuéramos a seguir adelante y saltar en eso ahora, parecería un par más 50. Como dije, no estoy seguro si cuenta ese salto real o no en el juego real. A lo mejor es algo a lo que podamos echar un vistazo. A lo mejor puedes dejar eso a elección personal sobre si quieres o no permitir que eso cuente de manera efectiva. Oh, mi ranita murió. Triste. Oh, parece que tengo, ranita vara Aquí vamos. Parece que se han metido en un pequeño bicho saltando en un lugar extraño. Ahí vamos. Y ahora mi pequeño Fracki está Y esto nos pone a las 5:50, así que este próximo salto nos pondrá en 600. Entonces ahí tienes. Depende de ti si quieres hacer 40 o 50 aquí, lo que básicamente se reduce a si quieres o no contar eso como tu principal o contar ese diez como tu principal. Y solo recuerdo que probablemente deberíamos meter cinco ranas ahí para probar esto Así que podría seguir adelante y simplemente avanzar rápido. Es video aquí para esta parte solo para que podamos meter cinco adentro. Yo bien. Ya lo he pasado. Yo hice mi loop varias veces cinco ranas y seguí adelante, conseguimos 4,800 puntos Impresionante. Parece estar funcionando perfectamente bien. Un sistema de puntuación funciona. Obtuvimos nuestro plus 40 o más 50 dependiendo de cómo configures el tuyo con si vas a contar o no el paso extra como parte de tus 50 o si quieres hacer un 50 adicional además de eso. Tenemos nuestros diez puntos por paso aquí, y tenemos nuestro plus 1,000 cada vez que obtenemos cinco ranas múltiples Cada vez que rescatamos cinco de estos gases ranas. Todo bien. Así que tenemos nuestra puntuación establecida. Y supongo que a continuación, solo podemos echar un vistazo a cómo mostrar esto y comenzar a poner nuestra pantalla de cabeza arriba o Hud o Gooey todo configurado 38. Puntuación de HUD del juego: Bien. Sigamos adelante y comencemos a crear el juego Hud para nuestro juego Well, hoy, vamos a seguir adelante y simplemente obtener el puntaje aquí arriba en nuestra pantalla. Y para esto, acabo de ir a MNTD y agregué en una capa de Canvas Si pudiera entrar aquí, Canvas layer es lo que estamos buscando, no Canvas grow. Y la capa Canvas básicamente va a ser todo lo que esté en la cima de nuestro juego, sin importar dónde se encuentre en nuestra escena. Entonces esto es, como te imaginarías, donde van todos tus elementos calientes. Entonces, si estás jugando como dicen Dark Souls, aquí es donde están tus cuatro cuadrantes en la parte inferior izquierda, por ejemplo, si estás jugando Sky Rim, tienes tres aguante de salud y matabar Wallaby en la parte inferior, y Y para nosotros, solo para hacer la partitura aquí, en mi capa Canvas, que renombré a Gooey Soportes para interfaz gráfica de usuario. Seguí adelante y agregué en dos etiquetas, dos solo etiquetas regulares aquí. Y lo nombré etiqueta de puntaje, que solo tiene la palabra score en ella, y Score text, que solo tiene cinco ceros Ahora bien, los textos de ambos eran demasiado grandes para este proyecto. Entonces en ambos, entré en el inspector hasta el tamaño de Themovides Mont, y mi puntaje tat está en la talla diez, y la etiqueta de puntaje está en la talla 12 Ahora bien, podrías notar que tengo una barra negra extra abajo en la parte inferior. Subí a la configuración del proyecto y en la ventana de visualización. Seguí adelante y actualicé mi altura de ventana gráfica 240-256. Ahí vas. Ahí lo puedes ver. Entonces agregué 16 píxeles adicionales, así podría agregar el negro en la parte inferior porque ahí es donde nuestra barra de salud va a terminar por estar abajo o nuestra barra de vidas. En el siguiente video. Todo bien. Entonces, una vez que tenemos nuestras dos etiquetas aquí en nuestra capa Canvas para la partitura, y no puedas averiguar dónde cambiar el texto para eso, solo tienes que seleccionar tu etiqueta y dentro del inspector en la parte superior. Verás ahí la sección para texto. Simplemente escriba la puntuación para uno y ponga cinco ceros. Para el otro. Esto nos dará una buena idea de la cantidad de espacio que vamos a necesitar. Bien, entonces ahora para que esto funcione, todo lo que tenemos que hacer es agregar una línea a nuestro script global aquí. Y fuera de nuestro yo y nuestro bloque. Entonces, fuera de ambos, independientemente de la cantidad de puntos que agreguemos, necesitamos obtener nuestra etiqueta de texto de puntaje y poner el texto para mostrar realmente nuestra escuela. Entonces como venimos de nuestro script global, si sigo adelante y ejecuto esto por un momento y luego solo lo hago una pausa, cambio a remoto, puedes ver que Global está aquí. No tiene acceso a nada. Así que en realidad tenemos que subir al árbol una vez para llegar a enraizar y luego bajar a nuestro no dos D y luego bajar a nuestro Dewey Y luego a partir de ahí, podemos agarrar nuestro texto de Score. Entonces ya que tenemos que subir y luego bajar, podemos seguir adelante y simplemente usar get node. Y recuerda que esto toma una cadena como argumento. Y como puedes ver, podríamos simplemente escribir todo el path, shrootGlobal, slash root, slash node dos D Pero incluso entonces ya que solo subimos a un nivel, sigue siendo más rápido si solo hacemos dos puntos solo para subir uno, y luego bajamos a nuestro nodo dos D. Y de ahí, accedemos a nuestro GY. A partir de ahí, obtenemos nuestro texto de partitura. Y si te lo estás preguntando, solo estamos siguiendo esa línea blanca hacia abajo. Entonces desde nuestro global aquí, donde estamos escribiendo este código, tenemos nuestros dos puntos, que es lo mismo que escribir, obtener padre, así que subimos uno a la raíz. Y luego solo estamos palmaditas siguiendo cada parada como esta línea blanca. Vemos que esta línea blanca baja y luego entra, no apunta a dos D. Eso es lo que hemos escrito ahí. Después seguimos de nuevo la línea hacia abajo, paramos y apuntamos al GY. Lo escribimos para la siguiente parada, luego bajamos y finalmente apuntamos a nuestro texto cuadrado y lo terminamos ahí. Así que siempre que tengas dudas, sigue adelante y da clic en el Nodo que estés buscando, y solo sigue esa línea blanca para conseguir tu camino. Todo bien. Entonces en este Score Text, derecho, este objeto tipo etiqueta, vamos a acceder a la propiedad text del mismo, y déjame sacar el juego de tu pantalla ahí. Simplemente miré y vi que estaba cubierto. Nuevamente, usamos dos puntos, mismos que get parent que nos lleva hasta el no lo siento hasta el nodo raíz, y solo seguimos esta línea blanca baja, apunta al nodo dos D, baja, apunta Guy, luego baja y apunta al texto cuadrado, y solo estamos siguiendo ese camino aquí todo el camino hacia abajo. Y queremos la propiedad de texto de la misma, y vamos a establecer eso. Vamos a ponerla a nuestra puntuación. No obstante, si solo hacemos esto, todos esos ceros van a desaparecer Y como veis, en realidad no podemos hacer mucho al marcador en este aspecto. Entonces, lo que vamos a hacer es convertirlo realmente en una cadena con STR, y luego dos paréntesis, y podemos escribir nuestra partitura dentro de eso Y esa partitura ahora va a ser tratada como una cadena en lugar de un entero. Así que ahora podemos hacer punto, pad, y podemos empañarlo con ceros Y pasamos en el número cinco, vamos a tener cinco dígitos, como vemos aquí, uno, dos, tres, cuatro, cinco. Entonces vamos a tener estas 50 ranuras. Y nuestro puntaje va a cambiar, pero aunque si solo dice diez, todavía vamos a tener los cinco de estos slots disponibles para nosotros. Así que visualmente, va a verse igual que lo haría en una arcada y en un típico sistema de puntuación. Entonces, si seguimos adelante y jugamos esto ahora, podemos ver nuestro puntaje ahí en la cima. Y si saltamos por ahí, deberíamos ver nuestro puntaje aumentando como debería. Eso es un montón de autos allá arriba. Ooh. Ahí vamos. Sigamos este largo. Aquí vamos. Vamos a conseguir algunos puntos. Monta el tronco, monta las tortugas, monta el tronco. Y podemos montar a las tortugas, montar el tronco y saltar a casa gratis Pero uh, Muy bien, entonces nuestro sistema de puntuación parece estar funcionando perfectamente bien. Se muestra con precisión. Es fantástico. Todo bien. Entonces, lo último debemos hacer en este momento es, en este video, nada, pero en el siguiente video, vamos a seguir adelante y configurar nuestras vidas para que cuando morimos perdamos una vida, y se va a reflejar visualmente en pantalla mostrando cuántas vidas nos quedan realmente. 39. HUD del juego Lives: Bien, sigamos adelante y sumemos en nuestras vidas. Ahora, nuestras vidas van a tener seis vidas como máximo aquí. Y vamos a entrar en nuestra capa de lienzo Goey. Vamos a agregar un nuevo nodo. Y sé que eso no es visible, solo 2 segundos ahí tienes. Y vamos a buscar la palabra textura. Buscamos la barra de progreso de textura. Bien voy a renombrar el mío por el bar Lives. Voy a pasar a la sección de texturas en el inspector. Y para el progreso, voy a pasar por encima del PNG de punto Healthbr a esa ranura Establezca el valor máximo, nuevamente, en el inspector en seis. Voy a establecer mi valor actual en seis, y ahora deberían verlas. Voy a agarrar este pequeño mango naranja y jalarlo hacia arriba solo para que solo ocupe el espacio que necesitamos, y lo voy a llevar directamente hacia abajo hasta el fondo en ese vacío espacio negro. Yo. Y esos van a funcionar como nuestras vidas. Entonces verás a medida que ajustamos los valores 6-5, está dividido equitativamente, así podemos determinar fácilmente cuántas vidas nos quedan El seis, por supuesto, va a ser nuestro defecto, y vamos a necesitar retocar eso cada vez que realmente morimos Entonces en mi global aquí, de nuevo, tal vez el manager del juego tendría más sentido para un nombre, pero por ahora, sólo nos vamos a ir con eso. Vamos a ir a Livest por defecto seis. Voy a crear otra función, actualizar Vidas para nada. Y vamos a seguir camino triste. Sólo que en lugar de un Scortex, vamos a conseguir el bar de Live, y vamos a acceder a la propiedad de valor aquí que podemos ver en el inspector Y vamos a decir más igual cantidad. Una cantidad va a ser un parámetro que pasemos, que va a ser un fin, ¿verdad? Entonces, cuando perdamos una vida, le vamos a sumar una negativa, lo que hará que baje a cinco. Y también nos da la capacidad de sumar vidas en el futuro simplemente poniendo una positiva para ganar una vida. Pero también actualizando eso, en realidad tenemos que actualizar nuestras vidas también, lo mismo más equivale a cantidad. Y ahora podemos ir a nuestro jugador. Podemos buscar nuestra muerte. Ahí está. la muerte. También necesitamos acceder a nuestro guión global, actualizar Vidas y pasar en negativo uno, y eso debería hacerlo. Muy sencillo, cosa pequeña que hacer. Y ahora cuando morimos en pantalla, deberíamos perder una vida, y deberíamos ver nuestra guerra de vida ahí abajo, bajar a cinco. Y necesito sacar esto porque ustedes no pueden ver el fondo ahí. Ahí vas. Y veamos si bajamos a cinco. Ahí vamos. Nos splat. Me topé con la parte trasera de ese auto. Además, yo lo estaba mirando y solo ganas puntos cuando avanzas en Frogger, y perdemos la vida cuando nos metemos en el agua también Para que podamos seguir adelante y actualizar eso si tú también lo deseas. Si quieres que sea un poco más preciso. Sólo vamos a actualizar la partitura cuando presionemos hacia arriba. Abajo a la izquierda y a la derecha no nos van a conseguir ningún alfiler. El único presionar hacia adelante, lo cual tiene sentido porque eso es un montón de puntos que puedes acumular muy rápido. Dom, d d, d m. Por donde están mis bitácoras. ¿Dónde están? Ahí están. Yendo. Ahora, los montamos con las tortugas Doi, doomy, doom. Salta sobre la tortuga. Iba a ir por el registro, pero sentí que me lo iba a perder, así que me quedé, salté al registro aquí. Entonces no saltaremos sobre esas tortugas y lo haremos a casa gratis en este registro Estamos bien. Vaya bien. Impresionante. Ahí vamos. Y nuevamente, podemos perder calor vivo. Fresco. Entonces nuestro sistema en vivo funciona. Se actualiza visualmente en pantalla, y tenemos la capacidad de agregar en nuestras vidas en el futuro. Todo bien. Entonces supongo que eso lo hará para esta sección, a menos que quieras agregar en vivo cuando lleguemos a la escuela. ¿Quieres hacer eso? Todo bien. Entonces, si quieres poder ganar vidas extra cuando alcanzas una cantidad fija de puntos, esto es lo que vamos a hacer. Vamos a crear una variable llamada multiplicador. Y dentro de nuestro puntaje de actualización, vamos a realizar un nuevo I check aquí. Entonces vamos a decir que anoto dividido por puntaje dividido por, podemos decir 10,000, ¿quieres? Veces nuestro multiplicador es mayor o igual a uno. Entonces aquí es donde vamos a sumar a nuestras vidas. Entonces tendríamos que hacer vidas. Y normalmente diríamos más es igual a uno, pero como queremos darle un toque a las seis, lo que en realidad vamos a hacer es decir vidas iguales, y vamos a usar una función llamada Clamp. Ahora, clamp te permite tengo tres argumentos aquí. El primer argumento es lo que agregarías. Entonces, en vez de más es igual a uno, nuestro primer argumento aquí va a ser uno. Y luego el siguiente argumento, va a ser el mínimo y máximo que pueda ser este valor. Entonces el mínimo, podría ser un cero, así que nuestras vidas nunca irán por debajo de cero aquí. Y el número máximo que podemos tener es seis, así que nunca será un número mayor que seis. Y así es como funciona la sujeción. Aquí podemos llamar Actualizar Vidas con uno, ¿verdad? Así que vamos a tener un plus uno para agregar a eso. Um ¿sabes qué? De hecho, podemos simplemente mover nuestra pinza aquí abajo dentro de nuestras vidas de actualización y reemplazar una con cantidad. Y entonces probablemente podamos salirnos con la suya sin tener nada ahí dentro, no configurarlo ahí, sino simplemente sujetarlo ahí abajo. Así que actualiza vidas uno. Y entonces vamos a querer incrementar nuestro multiplicador, más igual a uno. Y la razón por la que queremos hacer esto porque si no lo hacemos, vamos a ganar una vida constantemente porque nuestra puntuación siempre va a ser divisible Una vez que ganemos una vida, cada vez que nos movemos, la vamos a seguir ganando Entonces queremos cambiar esto así que si conseguimos una vida por cada 10,000 puntos, entonces obtendremos una 10,000 10,000 veces una todavía va a ser 10,000. Y luego la próxima vez, van a ser 10 mil veces dos. Entonces necesitaremos 20 mil puntos para conseguir una nueva vida, y luego serán 30 mil, 40, etcétera Entonces, si fuéramos a correr esto ahora con solo eso, podemos ver si entramos , vamos y perdemos una vida, tal vez incluso perdemos dos. Y ahora solo tenemos que subir, pasar por todo este tráfico. Vaya, vaya a hacer nuestro camino a este registro. Entonces podremos montar las tortugas, tronco de tortuga, de nuevo, trasladarnos a las tortugas Espera a que este registro llegue hasta aquí, y luego si nuestro puntaje fue lo suficientemente alto, deberíamos conseguir 10,000, W no lo cambié. Ahora bien, ¿lo pensé? Entonces eso es un poco decepcionante. Pero podemos comprobarlo muy rápido con solo ir a nuestro espacio eólico, y diremos: Oye, ganamos 20 mil. Ahora bien, si tuviéramos que comprobarlo para ganar puntos por cada 10 mil este 20 no debería hacer nada. Yo solo debería darnos la única vida. ¿Cuál está bien? porque nunca deberías conseguir como 20.001 hacer de todos modos. Lo máximo que debes obtener a la vez será de 10,000. ¿Qué ves a medida que vamos? Boom, boom. Ya casi estamos ahí. Deberíamos ver nuestras vidas en el fondo aumentar más uno. Y ahí vamos. Entonces nuestras vidas han aumentado. Bien, entonces nuestras vidas están funcionando ahora. Entonces voy a seguir adelante y restablecerlo nuevo a 40 puntos. Y queremos asegurarnos de que podamos terminar el juego. Pero eso va a estar en supongo dentro de nuestro global aquí, Update Lives. Y vamos a seguir adelante y ver, ¿esto nos dejará ir negativo, una oportunidad? No, no lo hará. Eso es perfecto. No tenemos que preocuparnos por eso. Y podemos decir que vivo menos que en realidad, no tendríamos que hacerlo ya lo estamos configurando aquí. Entonces verificamos de antemano. Entonces decimos que yo vive es menos de cero, en realidad ya ser cero. Digamos que nos quedan cero vidas y luego morimos. Estamos pasando otro negativo. Estamos diciendo que si nuestras vidas ya son cero, entonces vamos a tener diríamos juego, pero solo vamos a recargar la escena en un juego completamente nuevo Si nuestras vidas no son ya cero, entonces vamos a bajar aquí y vamos a restar nuestra vida Y para ello, solo usamos Get three reload current scene, y eso será lo mismo que si acabáramos de comenzar la escena así Entonces, si escribimos en Nuestras vidas no se están reiniciando. Probablemente porque no se restablecen en Global. Vamos a averiguarlo. Vamos a entrar en nuestro listo, y vamos a echar un vistazo a cómo depuramos esto, voy a decir imprimir. Vidas. Y ya veremos si eso se restablece Nos están escabulliendo a lo ancho. En realidad nunca volveremos a prepararnos. Se restablece constantemente, ¿verdad? Entonces, en vez de estar listo, vamos a imprimirlo aquí abajo. ¿Intenta averiguar por qué terminamos constantemente? A. Se restablece después de las dos. ¿Cómo vamos 6-0 Bien. No estoy seguro de por qué, pero la pinza parece ser lo que estaba causando esa ruptura, cual es interesante porque no hay ninguna razón real por lo que pude decir que debería haber estado saltando de seis vidas para romper a cero. Pero eso está bien. Acabo de cambiarlo nuevo a Vidas más la cantidad igual. Y ahora, si ejecutamos el juego, ver si podemos correr a través o volver a perder vidas una a la vez. Y una vez que bajamos, bajamos a tres vidas, dos, una. Vaya, O. Aquí vamos. Y en el agua. Bueno, nos quedamos sin vida. Entonces, cuando nos golpeen a continuación, va a ser un juego terminado, y nuestro juego va a reiniciarse. Y aquí vamos. Tenemos un reinicio de nuestro juego con el que nos encontramos rápidamente, y podemos volver a perder vidas nuevamente. Pero ahí tienes. Tenemos ese reset. Ahora perdemos vidas y mostramos en la pantalla apropiadamente cuando nuestras vidas son demasiado bajas, reiniciamos completamente el juego y comenzamos de nuevo, además de ganar vidas cada vez que obtenemos 10,000 monedas. 40. Temporizador y extra: Bien, vamos a poner nuestro temporizador en marcha ahora. Entonces, en nuestra Gui, acabo de agregar otra etiqueta aquí abajo con la palabra tiempo con un tamaño de fuente de anulación establecido en 12. Entonces tengo una barra de prods de textura, igual que hicimos con nuestras vidas aquí Cambié el modo de película para que sea derecha a izquierda en lugar de izquierda a derecha. También voy a renombrarlo aquí barra de temporizador. Mi valor máximo es 30, mi valor actual es 30. Todo lo demás queda igual. Cumplí nueve parches estirados para poder estirar esta barra para que tenga cualquier forma, longitud que quiera. Sólo estoy usando el temporizador punto PNG que tengo aquí. Simplemente lo arrastre como la barra de progreso o la textura de progreso. Y ahí tienes. Simplemente lo estiro, lo coloco ahí abajo para algo que se vea bien. También tengo un temporizador que agregué aquí abajo con un guión en mi Guy y la señal de tiempo de espera aquí conectada a él. Entonces esto es lo que estamos viendo aquí. Y lo que tenemos que hacer cada vez que este temporizador se agota por defecto, el temporizador está configurado en 1 segundo, lo cual está bien. Eso es lo que queremos. Qué queremos hacer si queremos obtener nuestra barra de temporizador y necesitamos restar una del valor Así que podemos simplemente seguir adelante y agarrarlo con nuestro signo de dólar aquí. ¿Lo entiendes? Como esto viene de Mark Bouie, valor menos es igual a uno Y ahora si fuéramos a seguir adelante y echar un vistazo a eso y ejecutar eso, ahora deberíamos ver nuestro temporizador marcando abajo, lo cual es hermoso Eso es exactamente lo que queremos. Y ahora tenemos que comprobarlo. Tenemos que verificar si nuestro temporizador nuestro valor de barra de temporizador, ha llegado a cero, y si es así, desafortunadamente, nuestra pequeña ranita tiene que morir Así es como es cuando nuestro temporizador se agota. Así que vamos a seguir adelante y obtener nuestro pequeño nodo ranita obtener. Y recuerda, estamos en nuestro ie aquí, así que vamos a tener que subir uno para nuestro no dos D y luego volver a bajar. Así que punto punto slash capa, y sólo vamos a llamar a nuestra función de muerte en Vaya, y eso debería ser dos iguales porque es una comparación Sí. Entonces, si tuviéramos que ejecutarlo ahora, cuando se acabe nuestro temporizador, nuestra pequeña ranita así que solo ve splat, y perdemos una vida en nuestra Ya sabes, dale un minuto ahí para que funcione el temporizador. Ahora, teniendo este tiempo estás aquí en 30 segundos. Veo que mis plataformas arriba necesitan ser un poco más rápidas o al menos un poco de retraso menor. Pero creo que la velocidad podría ser la mejor opción en lugar de cambiar el retraso. Pero ahí vamos. Mi pequeña ranita ha muerto, y sigue muriendo. Eso no es genial. Tenemos que reiniciarlo ahora. Entonces, una vez que llegue a cero y nuestro ranita muere, reiniciemos nuestra barra de temporizador Así que vamos a conseguir la barra del temporizador y establecer su valor nuevo a 30 para que podamos tener una nueva barra llena. Ahora bien, este no es el único momento en el que necesita ser reajustado. También hay que reiniciarlo cuando lleguemos a la meta. Así que vamos a seguir adelante y obtener nodo, subir uno, conseguir nuestro Guy, y luego obtener nuestra barra de temporizador y establecer el valor de nuevo en 30. Todo bien. Ahora, antes de probar esto, voy a entrar aquí en mi plataforma y voy a cambiar esto a 32 y duplicar esa velocidad. Y eso significa que tengo que ir a mi jugador y ajustar eso. Bueno, ahí arriba. Aquí es cuando estamos justo aquí, 32. Vamos. Entonces ahora estos deberían por lo menos moverse más rápido, y ojalá pueda seguir adelante sin faltar. Bien, ahí están las tortugas. Necesitamos algunas bitácoras. Gracias. Registro. No sé si voy a hacer. No voy a lograrlo. Voy a perder mi ranita. Adiós rana. Apenas te conocía. Veo que esto va a ser un poco difícil. Oh, ¿nuestro tiempo o no se reinicia cuando salpicamos? No lo hace. Entonces tenemos que establecer eso, también. Entonces, ¿nuestro jugador? ¿Dónde es que morimos? Ahí está nuestra muerte, y reaparecemos. Sí. Bien. Y, sí, vamos a meterlo en profundidad aquí. Entonces, de nuevo, vamos a subir y luego volver a bajar a nuestra barra del temporizador y establecer el valor de nuevo en 30. De esa manera cuando morimos, eso se restablece. Y supongo que voy a cambiar o queak el respawn el valor sponor, llave de plataforma y voy a quitar el más seis, como se ve eso ahora ya que tenemos Bien. Eso está lamiendo bien. Podríamos ser capaces de hacer esto ahora. Ahí vamos. Lo hicimos en nuestro reinicio del temporizador, y cuando morimos, nuestros temporizadores en reset, también. Fantástico. Y puedo ver que todavía necesito un poco de impulso ahí, mi mínimo. Así que voy a hacer 3 segundos solo porque vi bastante solapamiento cuando corrí por ahí. Pero vimos que el temporizador funciona perfectamente bien ahora. Yo ahora lo haces, o al menos se supone que debes obtener un bono en cuanto a los puntos vayan en función de cuánto tiempo queda cuando anotas. Entonces vamos a seguir adelante e implementar eso. Además, sólo tengo que ir a reactivarme con lo que es el multiplicador Sé que es algo multiplicado por la cantidad de tiempo que queda. Así que sólo dame 1 segundo ahí. Todo bien. Es diez veces el tiempo restante que queda. Entonces vamos a ver. Cuando lleguemos a nuestro espacio eólico antes de reiniciar eso necesitamos actualizar el puntaje aquí nuevamente porque vamos a sumar 40, pero luego también vamos a agregar lo que quede aquí. Vamos a decir, en realidad, ¿sabes qué? Pongamos esto en su propia variable aquí. Lo llamamos bono, no diez bono, en aguinaldo. Por supuesto un int. Quiero establecerlo a este valor por diez veces antes de reiniciar. Ahora en nuestro puntaje de segunda actualización aquí, hacemos tiempo sí. Todo bien. Entonces ahora deberíamos tener nuestro bono de tiempo ahí dentro. Entonces, cuanto más rápido podamos llegar allá, más bono mayor vamos a obtener hasta un máximo más 300 puntos, hipotéticamente, quiero decir, no vas a llegar ahí a los 300 o 30 segundos que quedan porque empieza a Oh, puede que no llegue en absoluto. Podría estar cerca. Ah, lo tengo. Pero pueden ver que me dieron 190 puntos en esa. Todo bien. Entonces ahí vamos. Ahí tenemos el temporizador, así como las muertes cuando se agota el temporizador y el bono de puntuación cuando aún nos queda el temporizador, y llegamos al final. Bien, así que eso es todo. Creo que podría ser eso o Frogger. No creo que me esté olvidando nada aquí. Y si ese es el fin de Frogger, enhorabuena. Lo lograste hasta el final. Eso es increíble. Espero que ustedes hayan aprendido mucho. Repasamos muchas cosas a lo largo de este proyecto. Variables, los globals, trabajando con muchos scripts diferentes Pero hemos recreado por completo este viejo juego de los 80 Y lo genial de estos viejos juegos son bastante simples en concepto. Pero sobre todo si eres nuevo en la programación, hay mucho que puedes aprender de estos juegos. Bien. Cuídate. Tengan uno bueno, y los veré en la próxima semana. ¿En qué nos vamos a meter? ¿Ya es la cuarta semana? Oh, chico, la semana cuatro va a ser divertida. Tenemos muchas cosas de las que hablar. 41. Audio de Frogger: Bien, vamos a seguir adelante y agregarnos el audio por nosotros. Entonces esto va a contar nuestro salto cuando nos movemos, la música de fondo, y sonidos de arco muerte Bien. Entonces para nuestra música de fondo, podemos simplemente entrar en nuestra escena principal aquí, seleccionar nuestro nodo raíz, que es nuestro no dos D. Adelante y dale al plus o agrega un nuevo nodo. Y lo que vamos a agregar es este reproductor de pantalla de audio aquí. Y luego vamos a entrar en nuestra carpeta de sonidos, agarrar la música.p3, y simplemente arrastrarla ahí Asegúrate de activar Reproducción automática. De esa manera no tenemos que desperdiciar un guión y desperdiciar escribir ningún código para jugar Y simplemente comenzará todo por sí mismo. Ahora, advertencia, esto podría ser un poco ruidoso al comenzar. Entonces, si quieres ajustar el audio solo para la música aquí, puedes seguir adelante y cambiar el volumen DB aquí. Cuanto más bajo lo pongas, más tranquilo va a ser. Cero es el valor predeterminado para todos ellos. Sin embargo, si quieres bajar la música para todo tu audio a la vez, puedes hacer clic en la pequeña pestaña de audio en la parte inferior de ahí abajo, y aquí está todo tu bus de audio. Ahora tenemos el maestro aquí, que si has cambiado la configuración de audio y los juegos antes, notas que tienes el control deslizante maestro. Eso es lo que es esto aquí, y podemos cambiar el volumen de esto a lo que queramos. Si quieres agregar un bus de audio diferente, para que puedas personalizar tus efectos de sonido de la música por separado, podemos simplemente presionar el bus add aquí y simplemente cambiaremos el nombre de esto a música. Y ahora con nuestro reproductor de flujo de audio seleccionado, notarás en la sección de autobuses aquí en tu inspector, ahora tenemos una pieza musical aquí del menú desplegable, y ahora esta música llegará primero a través de esta pieza de audio, y luego se le dará salida al maestro, como cabría esperar Bien, entonces depende de ti lo que quieras hacer. Voy a seguir adelante y bajar mi música a tal vez 0.6. No estoy seguro. Voy a asegurarme de que ustedes realmente sean capaces de escuchar esto. Ojalá esto no le haga daño a los oídos de nadie. Voy a golpear play y averiguarlo. Bien, así que eso parece que es más tranquilo que yo. Entonces voy a asumir que eso está bien. Pero si quieres, siempre puedes bajarlo un poco más. Creo que voy a ir con menos diez aquí. Y ahora el resto de nuestro sonido en realidad va a estar en nuestro jugador nuestro jugador tiene la muerte. Nuestro jugador tiene el salto. Nuestro jugador tiene el otro efecto sonoro otra muerte, ¿verdad? El plunk, el squish, y el caliente. Entonces vamos a repasar a la escena de nuestro jugador. También vamos a agregar un reproductor de flujo de audio para ellos. Y no vamos a tocar nada más en el inspector a menos que quieras agregar un bus de audio para efectos de sonido y luego cambiar el bus ahí específicamente. Eso depende de ti. Y nuevamente, una preferencia personal. Pero una vez que tengas un reproductor de flujo de audio agregado a la escena de tu reproductor, podemos entrar en el guión de tus reproductores. Y lo que vamos a necesitar hacer es configurar el flujo de audio cargando en el archivo de audio y luego reproducirlo realmente. Entonces lo que voy a hacer es que voy a ir primero a nuestra función Deth, y va a tener un ID pasado en ella ID obviamente va a ser un entero porque vamos a conseguir un dos o tres. Entonces voy a llamar a un IT, y luego voy a fijarlo igual a dos por defecto. Y la razón por la que estoy usando dos es si volvemos a nuestro mapa de azulejos y le echamos un vistazo, nuestro camino es ID dos. Entonces, por defecto, debería ser nuestro camino, por lo que debería ser un squish Entonces lo que voy a hacer aquí es si vamos a conseguir nuestro reproductor de flujo de audio. Entonces AudioStream player dot stream queremos esa propiedad stream Estás en nuestro jugador, ¿ verdad? Ese arroyo de aquí. Y vamos a ponerla igual a, y vamos a llamar a load, open y closed paréntesis y dentro de aquí va a estar la ruta a nuestro archivo Entonces dos va a ser nuestro defecto, así que ese va a ser nuestro squish, así que voy a sacar squash dot WAV, squash dot wave de nuestra carpeta de sonidos y arrastrarlo ahí dentro de nuestra carpeta de sonidos y arrastrarlo ahí De esa manera no tengo que escribirlo. Y ahora lo que vamos a hacer es en la siguiente línea, diremos que I ID es igual a tres. Entonces tres, recuerda ser nuestra agua. Entonces, si nos estamos muriendo y está en el agua, entonces vamos a hacer lo mismo que hicimos en la línea anterior y configuramos nuestra corriente y cargaremos en un nuevo archivo. Esta vez nos fijamos de squash, vamos a cargar en plunk Y luego fuera de esa declaración if, todo lo que vamos a hacer es tocar nuestro stream Entonces vamos a decir reproductor de flujo de audio punto play. Así como así. Ahora bien, si seguimos adelante y nos machacamos en la carretera, deberíamos tener un efecto de sonido, y si vamos a saltar al agua, deberíamos tener otro Bien. Por ahora, voy a seguir adelante y simplemente apagar la reproducción automática de la música para que podamos escuchar ¿Bien? Si saltamos al agua. Bien. ¿Y si nos atropellan el coche? Bien, tenemos el mismo audio reproduciendo en ambos. Bueno, eso es un poco interesante. ¿Por qué es eso? Bueno, al parecer, no vamos a pasar ninguna identificación para tres, así que nunca van a ser tres. Y la razón de eso, recuerden, tenemos que bajar y verificar la identificación de celular, en realidad estamos comprobando si nuestra rana se está ahogando Entonces eso es lo que tenemos que pasar tres en nuestra muerte. Ahora bien, no salió al aire porque le dijimos que si no le pasamos nada, usa dos por defecto, pero como queremos específicamente un ID de tres cada vez que estemos en el agua, tenemos que asegurarnos de pasarlo aquí abajo en nuestra función Check Cell ID. Entonces ahora si lo hiciéramos, deberíamos tener nuestro plunk en el agua, bien, bien, bien Y se aplasta en el camino. Aquí vamos. Entonces sabemos que eso está funcionando perfectamente bien. Y lo único que nos queda es hacer nuestro salto. Y para eso, eso solo va a estar arriba en nuestro movimiento donde podamos revisar nuestro flujo de audio y configurarlo. Así que el reproductor de flujo de audio dot stream es igual a la carga, y solo vamos a agarrar nuestro efecto de sonido pop y arrastrarlo. Vamos. Y en la siguiente línea, solo podemos reproducir nuestro audio. Es reproductor de flujo de audio. Ve a jugar. Y podemos copiar eso en cada pulsación de botón aquí. Entonces, si está abajo, podemos hacer eso. Boom, es a la izquierda y si es a la derecha. Ahora bien, si lo jugamos, deberíamos poder saltar por ahí. ¡Gritos! Vamos a entrar en nuestra escena principal. Y prueba eso. Abajo, abajo. Podemos saltar hacia abajo. Entonces te aplasta. Abajo, abajo. Así como suelo en el agua. Abajo, abajo, abajo, abajo, abajo, abajo, abajo, abajo, abajo, abajo. Abajo, Impresionante. Ahora, todo lo que tenemos que hacer es volver a encender la música. Entonces en nuestra escena principal, reproductor de flujo de audio, reproducción automática, vuelve a encenderla Y así, tenemos el juego Frogger completo con nuestro audio y jugabilidad Gracias Gracias, ahí me atropelló la parte trasera del auto, pero ahí tienes. Le hemos agregado sonido, y ahora nuestro juego se siente mucho más completo. A, no hay nada más que podamos hacer realmente aquí. Puedes sentirte libre de agregarle más. Puedes intentar agregar pastillas. Puedes encontrar nuevos sonidos y reemplazarlos. A lo mejor si quieres crear tus propios sprites y usarlos para cambiarlo un poco, lo hace un poco más personalizado para ti O si solo quieres mantenerlo como tu propio pequeño remake de arcade, eso también es increíble Pero eso lo hará por éste. Así que cuídense y tengan uno bueno, den palmaditas en la espalda con rana terminada y la próxima semana, creo que empezaremos a hablar de algunas de las diferencias y similitudes entre dos D y tres D y empezaremos a meternos en eso. 42. Transición del trabajo en 2D al 3D: Todo bien. Bienvenidos a todos a esta semana donde vamos a hablar nuestra transición de dos D a tres D. Así que, como desarrolladores de juegos, es importante entender los desafíos y oportunidades únicos que surgen al trabajar en el espacio tridimensional, a diferencia de dos dimensiones. Para ilustrar esto lo siento, volvamos en un momento. Al pasar del desarrollo de dos D a tres D, hay varios aspectos clave a considerar Hablemos de la diferencia fundamental en perspectiva. En dos D, trabajamos con objetos planos y capas. Como puedes ver con nuestro ejemplo, en el lado izquierdo aquí, todo es realmente plano. Es solo cuestión de lo que está delante o de lo que se rinde frente a qué, ¿verdad? Así podemos obtener diferentes capas, algo así como cuando estás trabajando en algo como Photoshop, algún tipo de manipulador de imágenes o editor de imágenes Yo Bueno, en tres D, las de la derecha, introducimos profundidad y relaciones espaciales entre objetos. Entonces se puede ver completamente que tenemos esa tercera dimensión en el lado dos D. Aquí no podemos ver el suelo. Sólo tenemos el costado de esta presa o puente o lo que sea que sea en el que esté parado. Bueno, en tres D, podemos ver esa profundidad pasando por la parte superior allá. Vemos la profundidad de ese brazo saliendo directo hacia nosotros con ese extremo pinchado versus en las dos D donde claramente apenas se mueve hacia abajo de la pantalla Y nuevamente, con profundidad, puedes ver en la parte superior donde puedes intentar simular ese tipo de sensación con dos dimensiones. No obstante, en tres D, obviamente se puede decir que simplemente no hay comparación. Es obvio cuál realmente tiene profundidad y cuál no cuando estamos viendo ahí el ejemplo superior. Para ilustrar esta transición, nuevamente, puedes echar un vistazo a nuestros ejemplos aquí, dos capturas de pantalla, una de las dos versiones D, una de la versión tres D. En este caso, estamos usando Mega Man, que es un desplazador lateral de plataformas Y aquí esto te ayudará a imaginar transformar este juego de dos D en tres D. Puedes ver justo el tipo de diferencia que tiene Simplemente haciendo que tengo una decisión ya sea ir dos D o tres D, los estilos artísticos son completamente diferentes y se destacan singularmente aparte. Ahora, con este entorno The D, necesitaríamos crear tres modelos D para los personajes, las plataformas, y todos los demás objetos de la escena, lo que podría llevar mucho más tiempo que, por supuesto, si fuéramos con la opción dos D. Con dos D, como que lo sacamos y estamos bien. Ya terminamos. Mientras que en tres D, como que llegamos a conseguir esos modelos, y luego tenemos que desenvolver el modelo, y luego tenemos que crear las texturas para el modelo, y luego tenemos que crear el material para el modelo Entonces tenemos todos estos pasos antes de que incluso podamos ponerlo en el juego temprano para pruebas o implementación, cosas así. Y luego también tenemos que introducir también una cámara que normalmente en tres D, cuando no es sólo algo estacionario, como lo que parece ser una pelea de jefes en la parte inferior, tiene una cámara que se va a mover con el jugador, ya sea que se mueva en un espacio completo de 360 grados, lo que podría suceder en esas tres versiones D. O si simplemente permanecen más estacionarios en el costado para darnos más de ese desplazamiento lateral siento que estamos viendo claramente aquí Ahora, como puedes ver, la transición de dos D a tres D requiere un cambio en la forma en que pensamos sobre el desarrollo de juegos Necesitamos considerar las dimensiones espaciales, la percepción de profundidad, el movimiento de las cámaras y el modelado de objetos. Abre un mundo completamente nuevo de posibilidades para crear juegos inmersivos y visualmente impresionantes, aunque algunas personas preferirán dos D sobre tres D la mayoría de las veces Así que ten eso en cuenta que el tipo de juego que estás creando podría ser mejor o funcionar mejor, ya sea para la visión o mecánicamente, lo que sea, en dos D que en tres D o podría funcionar mejor en tres D que en dos D. Así que ahí lo tienes con la transición de dos D a tres D, necesitamos entender estas diferencias y retos que surgen durante este proceso de transición, y estarás bien preparado para embarcarte en emocionantes proyectos de juegos de tres D. Recuerda practicar y experimentar siempre con diversas técnicas que te ayuden a ganar confianza en trabajar en esta nueva dimensión del desarrollo de juegos. Bien. A continuación, la lección neta aquí, vamos a seguir adelante y hablar y ayudarte a entender algunas de las diferencias entre dos D y tres D. Y luego hablaremos de las similitudes entre dos D y tres D. 43. Comprende las diferencias entre 2D y 3D: Todo bien. En este ejemplo, hoy tenemos un Mortal Combat mostrado aquí, tanto el scroller lateral mitológico como dos D, especie de casi una pseudo tres D, así como las tres iteraciones D que llegaron después, ambas con un menú de tres D y un modo de tienda de tres D que te permitieron correr y explorar Ahora, el video de hoy, la lección de hoy, vamos a hablar de algunas de las diferencias entre dos D y tres D aquí. Y es importante que entiendas estas diferencias ya que puede ser crucial a la hora de crear juegos de manera efectiva para ayudarte a utilizar las fortalezas de cada dimensión. Por lo que la principal diferencia entre dos D y tres D desarrollo de juegos radica en la representación visual. Como puedes ver aquí, es bastante obvio y la mecánica de juego. En dos D, trabajamos con dos dimensiones, solo la anchura y la altura. Donde los objetos son retratados sobre una superficie plana. En contraste, tres D introduce la tercera dimensión de profundidad, como podemos ver aquí, permitiendo una experiencia más inmersiva permitiendo una experiencia más inmersiva y realista Entonces examinemos algunas diferencias clave en el juego de dos D en un juego de dos D. La jugabilidad suele ocurrir en un solo plano. Mientras que en tres D, los objetos pueden moverse en tres dimensiones hacia arriba, abajo , izquierda, derecha, adelante y atrás. Habilitando interacciones complejas y exploración, por eso tenemos algo así como el modo conquista ahí arriba en la parte superior izquierda porque te animan a salir, no solo seguir la historia, sino explorar y hacer algunas cosas secundarias para ayudar o para desbloquear algunos secretos y personajes ocultos y cosas así, que realmente no obtendrías en un juego TD. Y si pudieras apretar eso, no sería la misma experiencia general. Adicionalmente, en dos D, detección de colisiones suele ser más simple, ya que implica principalmente solo verificar si dos objetos se superponen. En tres D, la detección de colisiones se vuelve más compleja, requiriendo la consideración de los límites del objeto y la superficie. Y como puede ver, comprender las diferencias entre el desarrollo de dos juegos D y tres D nos ayudará a tomar decisiones de diseño informadas y utilizar técnicas apropiadas, ya sea el estilo visual, mecánica de juego o la experiencia del usuario, abrazar las cualidades únicas de cada dimensión mejora cada cualidades de cada dimensión, mejora la experiencia general de juego. Así que recuerda si vas a ir en dos D o tres D, abrazar las fortalezas de esa dimensión. Entonces ahí lo tienes brevemente las diferencias entre dos D y tres D desarrollo de juegos. Al reconocer estas diferencias, estarás más equipado para crear juegos que aprovechen estas fortalezas de estas dimensiones. Y recuerda, por supuesto, experimentar con diversas técnicas y mantenerte creativo en el diseño de tu juego. Todo bien. En la siguiente lección, continuaremos y hablaremos sobre algunas de las similitudes entre dos D y tres D. 44. Similitudes entre 2D y 3D: Bien, sigamos adelante y hablemos de algunas de las similitudes entre dos D y tres D desarrollo. Ahora, a pesar de sus características únicas, ambas dimensiones comparten ciertos principios y técnicas fundamentales. Sigamos adelante y saltemos y echemos un vistazo. Si bien el desarrollo de dos juegos D y tres D tienen sus características y fortalezas distintas, también tienen varias similitudes. En primer lugar, por supuesto, ambas dimensiones se basan en conceptos clave de programación como las variables, funciones, lógica. Ya sean dos D o tres D, estos principios fundamentales de programación permanecerán sin cambios. Entonces, si tienes, por ejemplo, un personaje recoge un artículo. Bueno, ese personaje, vas a ir al artículo y tocarlo o interactuar con él. Y la lógica seguirá siendo la misma, porque la vas a tomar, vas a hacerla desaparecer y luego en el código, vas a agregar al inventario del jugador o a su conteo de coleccionables o lo que sea que vayas a hacer con eso Esa lógica sigue siendo completamente la misma, ya sean dos D o tres D, sólo va a escribirse ligeramente diferente. En segundo lugar, la importancia de los principios de diseño de juegos es cierta para ambas dimensiones. Conceptos como la interacción del jugador, el diseño de niveles y la mecánica de juego de equilibrio son elementos cruciales que impactan elementos cruciales que impactan en la experiencia del jugador independientemente de si son dos D o tres D. Así que si eres malo en el diseño del juego en dos D, probablemente sigas siendo malo en el diseño del juego en tres D. No va a hacer ninguna diferencia en qué dimensión estás trabajando. Si eres malo, eres malo, y todo lo que realmente puedes hacer es practicar tus habilidades, tal vez recoger algunos libros y simplemente mejorar tu capacidad de diseño de juegos a través de la práctica. Adicionalmente, el desarrollo de dos juegos D y tres D implica el uso de activos, ya sea que este sea sprite en dos D o modelos en tres D para darle vida al mundo del juego Ya sea un Sprite de dos personajes D o un modelo de tres D, el proceso de creación e integración de activos en el juego sigue principios similares de diseño e implementación Nuevamente, fíjate que dije similar, no lo mismo. Además, la importancia de la optimización se aplicará tanto a dos juegos D como a tres juegos D. Independientemente, nuevamente, de la dimensión, los desarrolladores deben considerar rendimiento, la gestión de la memoria, algoritmos eficientes para garantizar jugabilidad fluida y un uso óptimo de los recursos. Por ejemplo, mencioné cuando estamos viendo a Boger y estamos arreglando nuestro problema de fuga de memoria, mencioné la combinación de objetos. Esto es algo muy importante. Eso puede ayudar con la gestión de nuestros recursos y la gestión de la memoria. Y dependiendo del juego que estés creando, esta podría ser una forma muy muy óptima abordar una situación. Entonces, como puedes ver, mientras que el desarrollo de dos juegos D y tres D tienen sus aspectos únicos, aún comparten los principios y técnicas centrales. Y al comprender estas similitudes, los desarrolladores pueden aprovechar sus conocimientos en todas las dimensiones y crear juegos cautivadores Y lo que es aún más loco es que podrías mezclarlos a ambos en el mismo juego Quizás podrías crear el mismo juego dos veces en cierto sentido y darle al jugador la posibilidad elegir si quiere jugar en dos D o tres D. Eso es algo que podría ser exclusivo tu juego específicamente o tener algún tipo de mecánica donde saltas entre ir en dos D y tres D. Puedes usar las múltiples dimensiones como mecánica de juego o solo parte de la experiencia. Y ahí lo tienes, las similitudes entre dos D y tres D desarrollo de juegos. Y al reconocer estos puntos en común, puedes aplicar tus habilidades y experiencia en diferentes dimensiones, convirtiéndote en un desarrollador de juegos versátil Recuerda aprender y experimentar continuamente para mejorar tus capacidades de desarrollo de juegos. Y aunque son similares, sí quiero voy a señalar aquí que personalmente, mi preferencia, prefiero trabajar en dos D, a pesar de que las similitudes están ahí, y mucha de esa lógica y todo sigue transfiriendo y funciona. A través de dimensiones o dimensionalmente. Es una forma algo rara de decir eso. Pero solo por preferencia, yo mismo, pensé que disfrutaría tres D. Pero resulta, en realidad disfruto creando dos D. Así que tal vez encuentres que terminas después de probar tres D aquí. Quizás descubres que también tienes preferencia por dos D, o tal vez prefieras tres estilos D. O trabajar en tres D, lugar de crear cualquier cosa en dos D. Así que está bien tener esa preferencia, pero también es bueno saber que tienes tanto el conocimiento las capacidades técnicas para ir entre dos D y tres D en cualquier momento y reconocer todos los puntos en común, las habilidades, la lógica y todo transfiere entre dimensiones Ocho. Bien, sigamos adelante y volvamos a la siguiente lección y veamos algunas cosas que son un poco más exclusivas de tres D que realmente no puedes sortear 45. Materiales: Bien, todos. Bienvenido de nuevo. Hoy, vamos a hablar de algo que es exclusivo o no debería decir técnicamente exclusivo de tres D, que serán materiales. Entonces, sigamos adelante y te expliquemos qué son los materiales. Aquí en el goto Inge, los materiales juegan un papel crucial en la definición de la apariencia visual de un objeto en tu juego, y profundizaremos en los materiales y al menos discutiremos los diferentes tipos de mapas de texturas que están disponibles al crear y aplicar materiales a los objetos Los materiales se utilizan para controlar cómo la luz interactúa con los objetos y cómo se renderizan Definen propiedades como el color, transparencia, reflectividad y Uno de los aspectos clave de los materiales es el mapeo de texturas, que nos permite aplicar imágenes o patrones a los objetos para darles apariencias realistas o estilizadas Entonces voy a seguir adelante y solo abrir esto heredaste Mega Man aquí que acabo de encontrar en línea. Y antes de que alguien pregunte, no, no puedo compartirlo. Pero si buscas en línea, probablemente lo encuentres. Sólo voy a seleccionar Objeto cuatro aquí. Y si la abro, encontraré ésta específicamente como superficie cero, así que solo tiene una superficie. Entonces un material. Si abro eso, Un momento, tengo que hacer esto único, así al menos puedo retocarlo para mostrarte algunos ejemplos y hacer único Todo bien. Bien, así que a medida que avanzamos por el mapa de Albedo, que está justo aquí También se le conoce como el mapa difuso. ¿Por qué hay varios nombres para lo mismo? No lo sé, pero los hay, así que es como que tenlo en cuenta si alguien dice albedo y se te da un mapa difuso Ellos son lo mismo. Y este mapa de texturas define el color base de un objeto. Proporciona la apariencia visual primaria de la superficie. Y como puedes ver aquí, aquí es donde se aplica la textura principal. Ahora bien, esto sí afecta el color. Así que siempre puedo entrar aquí y cambiar el color real que se aplica encima de esta textura. Entonces si quiero, puedo bajar aquí y voy a tener un mega hombre verde. A lo mejor quiero más de un mega hombre morado. O el rosa no es realmente no demasiado rosa ahí. Podemos conseguirnos un mega hombre rojo. Entiende la idea en este punto, ¿verdad? Entonces el albedo es la textura y el color base , eso se puede ajustar en él Mapas normales. A ver, ¿dónde están aquí? Mapa normal. Aquí estamos. Ahora, en Gatto aquí, realmente tienes que encenderlo antes poder aplicarle una textura Y un mapa normal agrega la ilusión de detalles de la superficie modificando los cálculos de iluminación o crea la impresión de golpes, abolladuras, arrugas en una superficie lisa sin aumentar el recuento de polígonos Entonces es una especie de geometría de cebo de alguna manera manipulando la luz y cómo afecta a nuestros objetos Ahora bien, no sé Mega Man podría no tener mucho aquí, pero si seguimos adelante y jugamos con la escala del mismo, se puede ver que aquí sucede especialmente aquí abajo en la parte inferior del cuerpo. Volvemos a la escala predeterminada y luego la modificamos, se puede ver como que realmente está afectando la forma en que la luz se refleja en la parte superior aquí El mapa de rugosidad. Ahora, también puede obtener esto en forma de un mapa de suavidad, y la suavidad y la rugosidad son opuestas. Entonces, si tienes un mapa de suavidad y necesitas un mapa de rugosidad, entonces puedes simplemente invertirlo y debería estar bien y viceversa Ahora bien, en este caso, este mega hombre, tiene una textura de color aquí, y específicamente está usando el canal verde para esto en lugar del gris estándar, eso está bien. Ahora, el mapa de rugosidad, este mapa de texturas controla la rugosidad o suavidad de la superficie de un objeto, y afecta cómo la luz se dispersa y se refleja en la superficie, creando variaciones en la apariencia de un Ahora, sé que esto va a afectar un poco al casco, así que voy a subir aquí para mostrártelo. Entonces, si tuviera que bajar la rugosidad y hacerla suave, miren eso Eso es, como, súper suave, recién salido de fábrica. Eso es una belleza ahí mismo. Eso es un casco nuevo es lo que es eso. Y como ves, a medida que empezamos a volver a la aspereza, todas esas luces se disipan una vez que la golpea en lugar de reflejarse en ella Y esto funcionó de la mano con nuestro mapa metálico aquí. Este mapa de texturas, y nuevamente, están usando la misma textura para esto, pero están usando el canal azul. Y el mapa metálico aquí o propiedades no metálicas de un objeto y gira la luz o el nivel de reflectividad y brillo de una superficie Entonces, si tuviéramos una superficie súper lisa, como puedes ver, con nuestro metalizado estando todo el camino hacia arriba, parece una bonita pieza de metal brillante. No obstante, si empezamos a bajar ese metálico, podemos ver que empezamos a llegar a algunos otros materiales, tal vez como un plástico brillante o brillante, por ejemplo. Hasta que lleguemos hasta donde no tenemos metalizado, lo cual no es realista. Cada objeto al menos tiene un poco de metal en él. Y especular tipo de va en eso. Ahí lo puedes ver. Entonces especular podría ser algo que usemos en quizá ojos cuando queremos tener un poco más de brillo en ellos, por ejemplo O si tienes un objeto mojado, eso también podría ser bueno ahí dentro. Así que sólo va a volver metálico hacia arriba y la rugosidad volver a su defecto Y oclusión ambiental, ¿ este modelo tiene aislamiento ambiental? No lo hace. Entonces, la oclusión ambiental es como una textura de sombra que puedes poner para agregar un poco más de detalle, digamos, justo alrededor de los bordes aquí para obtener una apariencia más de un casco sentado encima de una cabeza Y funciona así dentro de, todos estos pequeños pliegues y grietas en las que nos sería un poco difícil meternos Pero en general, eso es lo que está haciendo. Básicamente se trata de simular el efecto de sombra causado por la presencia de objetos cercanos o la oclusión de la iluminación indirecta, y en general solo agrega algo de profundidad y realismo a la apariencia del objeto Ahora, un mapa más que sí quiero repasar se encuentra aquí, emisión. Ahora, el mapa de emisiones, aquí hay una textura, y se puede ver que está casi completamente vacía, pero ahí hay algunos objetos. Y lo que hace el mapa de emisiones es mapa de emisiones es resplandor. Básicamente de tu objeto. Entonces, si tuvieras, digamos, un personaje con un ojo robótico y querías que ese ojo brillara, sobre todo en la oscuridad, aquí es donde harías como mapa de emisiones. Ahora bien, tal vez no puedas decir demasiado, pero es este pequeño punto dentro del cañón y la luz aquí. Esos son los dos puntos principales que vamos a notar. Y si acabo de aumentar ese multiplicador de energía, mira eso, realmente se puede ver eso ahora ahí y sobre todo dentro del cañón. Se puede ver que ese resplandor rojo sucede a medida que empezamos a acercarnos a mirar directamente, y podemos ver ese retoque aquí mientras lo baje. Y como ves todo el camino, así es como se ve normalmente la textura. Y luego cuando le agregas esa textura de emisión, todo se ilumina. Entonces, si tienes luces en un objeto o necesitas algo de brillo o cualquier cosa, el mapa de emisiones es lo que vas a querer usar para ello Ahora bien, aquí sí tenemos un montón de otras pequeñas cosas que solo pueden agregar a pequeños detalles como la refracción de tu iluminación, un poco de retroiluminación, algo de dispersión del subsuelo, que es como si no me equivocara, la luz, la forma en que está interactuando con, como, piel Aquí tenemos altura. Si querías meterse con cosas como ahí, que no sé, no me he metido con la altura Sé que solíamos tener un mapa de profundidad. Tenemos cartelera, crecer, transformar. Aquí tenemos todas estas cosas nuevas que venían con cuatro. Y voy a mencionar algo que va de la mano con el desvanecimiento de proximidad aquí. Aros. Entonces, si tuviéramos que subir un poco eso, podríamos ver todas estas distancias aquí y todas las cosas se van a ver afectadas en función de lo cerca que estés de un objeto. Como puedes ver aquí, eso es algo que ayudaría con el rendimiento, por ejemplo. De esa manera, cuando puedes configurarlo para que cuando estés lo suficientemente lejos, para que cuando estés lo suficientemente lejos, simplemente desaparezca por completo. Quizá algo así, cero, dos no lo voy a meter ahí, pero entiendes la idea, ¿verdad? Así que mejor puedes redondear con todo ese tipo de cosas pasando, así como si fueras a seguir, ¿tienen aquí el segundo pase? Lado de esto madura un poco duro con todo abierto aquí arriba Y no veo el segundo pase, lo cual es interesante. Pero aquí vamos. Tenemos sombras que puedes desactivar, ya sea que reciba sombras o no. Tenemos UV uno y dos, cuales se pueden usar como diferentes tienen cosas diferentes aquí vamos. Siguiente pase. Para que puedas agregar otro material directamente encima de éste. Por ejemplo, esta es una forma en la que puedes conseguir una blackoline alrededor de un personaje para darle más aspecto anime Hay algunas cosas que podrías hacer eso, y pondrías el contorno en un segundo pase ahí. Aquí vamos. El rango de visibilidad, esto es más lo que estaba viendo, creo. Entonces diremos un mínimo de uno, y luego diremos que termina a las diez. Entonces ahí tienes. Entonces ves a medida que nos acercamos, el objeto está dentro y te vuelves a salir, y el objeto ya no se renderizará, o al menos esa parte del objeto ya no se renderizará. Así que puedes tenerlo en cuenta cuando se trata de alguna optimización, especialmente si tienes un objeto que realmente podría estar empantanando tu rendimiento Ese es el rango de visibilidad en eso. Pero eso debería envolver los materiales y los diferentes tipos de mapas de textura. Ah, debería mencionar una cosa más dentro de los materiales aquí es Ellos sí lo cambiaron. Todo bien. Entonces ahora solo tenemos todas estas opciones extra como coloración de vértices, sombreado, transparencia y todas esas cosas Entonces, si quieres tener transparencia en un objeto, di que estás usando una imagen PNG para tu textura, entonces en realidad vas a tener que ajustar esto y configurarlo en, creo Alpha, y no funciona con esta textura Pero en lugar de usar desables, por lo que en realidad tienes que habilitar la transparencia si quieres tener porciones transparentes de tu textura o malla, lo que sea Bien, entonces eso cubre los materiales aquí. Y ojalá eso te dé una mejor comprensión de qué son los materiales y los principales mapas de textura con los que te vas a encontrar y que vas a estar usando medida que creas tres juegos D. Y recuerda siempre, claro, experimentar, combinar diferentes mapas y ver qué tipo de diferentes efectos visuales y looks puedes conseguir. Tal vez encuentres algo que te guste y que esté completamente creado a partir de solo perder el tiempo Bien, eso lo hará para esta sección o al menos este video, y ojalá aprendas un poco sobre los materiales y lo que son 46. Iluminación: Todo bien. Saludos a todos. Y hoy, vamos a echar un vistazo al mundo, al mundo de la iluminación, y vamos a hablar sobre la configuración básica de tres puntos que se usa cuando se trata de iluminación. Ahora, obviamente, cuando se trata de iluminar una escena, hay mucho más que se mete en ella. Hay que echar un vistazo a cosas como la intensidad de la luz por cada cosa individual que va a estar emitiendo luz. ¿Cuántas luces quieres incorporar a esa escena? Eso va a afectar tu desempeño y así sucesivamente. Pero por ahora, sigamos adelante y echemos un vistazo a cómo iluminación es un elemento crítico que puede mejorar en gran medida la calidad visual o afectar la atmósfera de tu juego. Bien, la iluminación I Goto juega un papel vital en la creación entornos realistas e inmersivos, lo que se puede decir de bastante bien cualquier Y lo importante es que puedes tener algo con texturas fotorealistas y todos tus mapas fotorealistas todos configurados ahí. Pero si no se puede renderizar lo suficientemente bien o tu iluminación no es lo suficientemente buena, entonces a pesar de que es fotorrealista, puede que ni siquiera parezca realista todavía Así que la iluminación es tan crucial para tus materiales y tu escena general como, digamos, el sombreado está en un dibujo Puedo transformar completamente lo que estás viendo. iluminación también ayuda a establecer el ambiente y enfatizar los elementos importantes y dar vida a tu mundo de juego. Ahora, al trabajar con iluminación, hay varios aspectos clave a considerar, como sus fuentes de luz, las sombras y sus propiedades de luz. Una técnica popular es la configuración de iluminación de tres puntos, e implica el uso tres luces colocadas estratégicamente alrededor del sujeto para lograr una iluminación equilibrada y visual atractiva Ahora aquí en esta escena que estamos viendo, solo tengo a mega hombre aquí de la sección de materiales. De nuevo, simplemente me conecté y acabo de encontrar este modelo. Apenas en línea, estaba libre para descargar. Y se puede ver, aunque no esté encendido, tenemos las porciones rojas encendidas. Tenemos este bar iluminado y el interior este cañoncito de aquí, todo iluminado. Y esos son de los mapas de emisiones que son una especie de supongo que se podría decir encendiendo esa porción hacia arriba que no tiene nada que ver con nuestra iluminación. Eso es sólo toda textura. Bien, así que vamos a romper esta luz tres luces que usas en una configuración de tres puntos La primera luz va a ser tu luz clave. Y mientras estamos haciendo esto, solo voy a dar click en mi cámara y dar click en este botón de perspectiva aquí. Esto me permitirá ver lo que ve la cámara aquí. Entonces la primera luz va a ser tu luz clave, y la luz clave es la fuente de luz primaria y proporciona la iluminación principal sobre el sujeto. Muy bien. Crea los reflejos primarios y sombras que definen la forma general y la forma del objeto. Ahora, ten en cuenta que si quieres sombras en tu luz, realidad tienes que entrar en las propiedades de tu luz y habilitar tus sombras. Y luego, por supuesto, puedes ajustar algunos de tus ajustes ahí, lo que va a estar en tu decisión en eso A continuación, tenemos nuestra luz de relleno, y ésta generalmente se posiciona en la posición opuesta a la luz clave para equilibrar la iluminación, y su propósito es suavizar las sombras que son creadas por la luz clave Ayuda a reducir el contraste entre las zonas claras y oscuras, lo que resulta en una iluminación más uniforme y agradable. Entonces, si seguimos adelante y echamos un vistazo, digamos, justo alrededor del casco aquí, sé que realmente no podemos acercar esa sección, pero solo quiero asegurarme de que no estaba moviendo el modelo. Seguimos adelante y echamos un vistazo aquí. Apenas mirando desde el frente. Podemos ver lo dura, como esta oscuridad es aquí en el casco. Y esto a lo largo del lado de aquí, dependiendo del brillo de tu monitor, también podría ser bastante oscuro, sobre todo considerando nuestras fuentes de luz que vienen de arriba a la izquierda aquí y bajando. Y si volviéramos a bajar y mirar más a los pies, vemos este duro contraste que tenemos pasando en los pies y las piernas, también. Todo bien. Y si habilitamos nuestra luz de relleno, podemos ver esas porciones todas iluminadas, pero se vuelve mucho más suave no es tan duro de un contraste aquí dentro. Y obviamente, eso va a venir de ajustar tu energía aquí Y generalmente, quieres que la energía sea menor que tu luz de relleno porque recuerda que la luz clave recuerda la luz clave es tu principal fuente de energía aquí. Y dependiendo de tu situación, puedes usar la luz de relleno para ir más fría o más cálida y tener una luz que complemente tu luz clave Y la última luz en una configuración de tres puntos es la luz de fondo, y la luz de fondo, también conocida como luz de borde o luz de pelo, se coloca detrás del sujeto, típicamente en una posición más alta, y agrega una sensación de profundidad y separación y resalta los bordes del objeto y creando esa sensación de profundidad y dimensión, si sigo adelante y habilitar eso, podemos ver que obtenemos algo de iluminación justo alrededor de los bordes aquí arriba. Y otra vez, podríamos entrar y podríamos retocar, jugar con estos números, encontrar algo que funcione para nosotros. Pero ya ves cómo esa luz de llanta realmente está resaltando estos bordes aquí. En esta luz de fondo o usando esta luz de fondo. Así que solo voy a ajustar esto de nuevo a sus números predeterminados aquí Pero puedes ver aquí son antes y después, cuando estamos viendo ninguna luz aquí versus solo una configuración muy básica de tres puntos. Eso ya se ve millas mejor, y ni siquiera estamos tomando en consideración otras cosas como la iluminación mundial o la iluminación del entorno que nos rodea ni nada. Y ya tenemos una hermosa versión mejorada de lo que empezamos. Entonces espero que esto ayude a ilustrar la configuración de iluminación de tres puntos. Voy a seguir adelante y salir de la vista previa de la cámara aquí. Entonces, si tuviéramos que echar un vistazo, podemos ver que tenemos nuestra luz clave por aquí, nuevo, en ese ángulo bajando sobre nosotros. Si salimos desde arriba, tenemos nuestra configuración de tres puntos y se ve como un triángulo. Entonces tenemos nuestra luz clave aquí yendo en contra en lo contrario. Va a ser nuestra luz de relleno, y entonces nuestra luz de fondo siempre está directamente detrás de nuestro personaje. Ahora bien, en esto, sólo estoy usando focos. Pero claro, si estamos afuera, podríamos usar cosas como una luz direccional, por ejemplo, o podrías estar usando focos dependiendo de tu escena Entonces estas son cosas que puedes tomar en consideración. El tercer tipo de luz que tenemos se llama luz omni, y que básicamente emite luz en un área completa de 360 grados. Entonces esto es que sería más para cosas como bombillas, velas, cosas así. Ahora, no puedo terminar de hablar de ha vuelto a la vista previa de la cámara. Iluminación sin por lo menos mencionar un entorno. Ahora, una cámara puede tener un entorno, o puedes tener un entorno que esté relacionado con la escena misma. Entonces, para mí, sólo voy a agregar un ambiente mundial a mi escena aquí. Y es importante que al menos sepas cómo crear una causa básica del cielo con Goto four No vas a tener un cielo de ningún tipo. Ya sólo está siendo capturado. No lo es. Vamos. Entonces como podemos ver, solo tenemos este fondo gris, y eso no es muy agradable cuando hablas de Ampeily si estás afuera en el mundo, como que al menos quieres un cielo, Entonces vas a ver cómo hacer al menos un cielo básico aquí, así vamos al medio ambiente y a nuestro entorno mundial. Creamos un nuevo entorno. Y da click en eso para abrirla . Entonces tenemos nuestros antecedentes. Tenemos un color claro, pero lo que podemos hacer es que podríamos hacer un color personalizado, Canvas, alimentación de cámara si quisieras. Pero lo que es importante, sólo vamos a ir con un cielo aquí. Y luego dentro de nuestra sección de cielo, podemos seguir adelante y hacer clic en Nuevo cielo, abrirla para el material del cielo. Podemos decir, tenemos un cielo panorámico, cielo procesal y un cielo físico. Y con nuestro cielo físico aquí, puedes ver que tienes un color de fondo aquí, y nuestro color está apareciendo un poco oscuro. Parece que ahí pudo haber sido un problema. Déjame volver a entrar. Y vamos con un cielo procesal. Aquí vamos. Eso es algo más normal que verías. Ahora bien, lo importante aquí es este claraboya puede afectar a tu modelo también Entonces esto es lo que me estaba diciendo. Solo estábamos mirando la configuración de tres puntos, pero tu cielo puede entrar en vigor. Entonces digamos que estamos sentados aquí en un Vamos con un, no sé, una puesta de sol, ¿verdad? Entonces nuestro terreno, tal vez vamos a estar más en el lado verde, realmente no importa demasiado bien en eso. Para nuestro Sky, nuestro color superior va a ser más del lado morado, ¿verdad? Y entonces el horizonte es donde vamos a conseguir nuestra naranja. Derecha. Ahora bien, puede que no parezca que estamos teniendo mucho impacto aquí, pero estamos recibiendo un poco, como se puede ver en la iluminación aquí, justo al otro lado de la nariz, por ejemplo. Entonces si tomo esto, sólo voy a copiar ese color. Si entramos, ahí tienes, puedes ver cómo está afectando a nuestro modelo aquí. Sólo voy a poner eso ahí dentro. Y dentro de este entorno es donde también podemos obtener otras características que pueden tener un efecto en nuestro mundo, como el resplandor. Y claro, tus opciones de dónde vas a seguir adelante con esa floración. Entonces eso va a ir con tu disculpa ahí por un segundo, el post procesamiento. ¿Eso es con lo que vamos? Entonces tu floración, tu fuerza de todas estas cosas, la intensidad. Entonces tienes todas estas cosas con las que puedes jugar, pero apagándolo, tienes niebla que puede afectar tu iluminación. Y luego también tenemos niebla volumétrica, que puede afectar su iluminación. Así que aquí tenemos todas las cosas diferentes a tener en cuenta. Y lo más importante, SDFGI aquí. Esto tendrá un impacto de rendimiento en tu juego, pero también vamos a tener una simulación de luz más realista aquí pasando con nuestro personaje. Aquí vamos. Y, por supuesto, siempre puedes retocar cualquier pequeño efecto que podamos tener aquí y llegar a algo que disfrutes Obviamente, la densidad es un poco demente. Oh, eso es og, mi error. Se hizo clic en el equivocado, SDFGI. Aquí vamos. Entonces eso es calcular todos nuestros rebotes de luz Y ahí vamos. Ahora podemos tener algo que va a ser un poco más realista y podría ser más dinámico. Por ejemplo, nuestros pies de rebote aquí. Se puede retocar con eso. Cascadas Esto va del uno al ocho. Cuanto menor sea el número, más rendimiento va a ser. Entonces se puede ver calculando estos rebotes a medida que obtenemos un ligero cambio y luego subiendo a ocho Entonces vas a ver calculamos en algunas más de esas sombras, como aquí con el cuello y luego en lo pequeño no es un aplauso en la espalda Eso sería, supongo, nuestras trampas de chicos. Trampa Zoids rapea siempre sin trapecio. Es como, espera un minuto, eso no sonó bien. Pero entiendes la idea. Con eso, podemos crear un cielo básico que pueda tener un efecto en nuestro personaje, así como te mostré cómo hacer una configuración básica de tres puntos. Entonces vas a tener un triángulo. Luces traseras siempre directamente detrás. Dondequiera que esté tu luz clave o tu luz principal. La luz de relleno va a estar al otro lado de ella con un nivel de energía más bajo solo para hacer que las sombras no sean tan duras. Por supuesto, ambiente de palabras, crea un nuevo entorno, cielo para el modo, crea un nuevo cielo, e irás con el material procesal del cielo. Todo bien. Entonces ojalá te di una idea bastante buena sobre eso en cuanto a lo bien que la luz puede afectar realmente tu objeto al final del día y lo importante que puede ser la iluminación. Voy a seguir adelante y mostrarte solo un par de comparaciones aquí al final de las cosas sin iluminación versus después de que hayan estado Bien, así que aquí en la pantalla, estás diciendo la ventana equivocada ahí. Pero aquí estás viendo un antes y después cuando se trata iluminación y simplemente realmente ayudando a establecer esa atmósfera, especialmente con una imagen como esta, puedes ver lo importante que realmente puede ser ser ser bueno en la iluminación y cuánto realmente puedes afectar o ver. Lo estoy tomando de algo que tal vez parece viejo o simplemente un poco bien a parecer más nuevo, tal vez un poco más realista. Y si tal vez va por más de una vibra espeluznante, y eso solo te da una idea bastante buena aquí Entonces antes y después cuando se trata de iluminación. Así que no se encorve cuando se trata de iluminación. Es muy importante, y sobre todo si vas a estar trabajando solo y quieres hacer algo en 380 así. Seguro que ponemos el tiempo y la atención en aprender realmente la iluminación. Y hay gente por ahí que enfoca puramente en entornos de iluminación y escenas y cosas así como ese como su trabajo, yo diría, ¿verdad? Ahora, pueden hacer otras cosas también, pero se enfocan en todas las pequeñas cosas que quizás no notes como jugador en un juego, por ejemplo, o si estás tomando en consideración la iluminación al iluminar una escena, tal vez por hacer algunos efectos visuales. Pero ahí tienes. Ya no voy a despotricar más Solo quería hacerte saber lo importante que va a ser la iluminación cuando se trata de tres D en lugar de dos D, así como mostrarte cómo puedes al menos crear un cielo básico y mostrarte visualmente la gran diferencia, algo que incluso solo una configuración básica de iluminación de tres puntos puede hacer. 47. Recursos 3D: Bien, bienvenido el 1 de abril. Y esta sección, vamos a seguir adelante y vamos a crear de nuevo Frogger Sólo que esta vez lo vamos a crear en tres D. De esta manera, tendrás una comparación justa, supongo, podría decir, de trabajar en dos D versus tres D, y eso debería darte una idea tanto de las similitudes, de las diferencias, y tal vez darte una idea de tu propio tipo de preferencia personal que te gustaría fastidiarla Bien, así que solo voy a usar cubos básicos, solo mallas básicas cuando siga adelante y lo cree, pero si quieres usar tres modelos D en tu programa, puedes seguir adelante y hacer eso si quieres crearlos, volverte Si ya tienes algunos, eso es genial. Pero si quieres usar algunos tres modelos D y no tienes ninguno disponible para ti, puedes conectarte y puedes encontrar tres modelos D por todas partes. Por ejemplo, este lugar aquí es Sketchfab, y tienen modelos tanto gratuitos como de pago Todo lo que tienes que hacer es seguir adelante y hacer tu búsqueda aquí arriba en la parte superior. Pulsa descargable para que todos tus resultados puedan ser descargados Y de esa manera elimina cualquier situación en la que alguien tal vez solo esté mostrando algo. Y ahora si no quieres gastar dinero, hay un montón de opciones gratuitas por ahí. Y estos de aquí con el dólar se inscriben en la esquina superior del ight. Oh, no puedo ver esa. Entonces vendremos por aquí con el signo del dólar, esquina superior derecha aquí. Aquí. Esos son los que van a costar dinero, pero los que no tienen ese signo de dólar. Y eso solo tardará un segundo en cargarse. Y puedes seguir adelante. Puedes echarle un vistazo. Se puede ver, lo cual es genial acerca de fab. Puedes seguir adelante y simplemente presionar el botón de descarga aquí en tu Moth gratis. Obviamente, si estás dispuesto a gastar dinero, entonces tienes que pasar por todo el poner en tu carrito, checar y todas esas cosas primero. Pero eso es sólo si quieres. Yo sí encontré algunas ranas gratis aquí que podrías usar. No sé si alguno de estos viene con animaciones o no. Tendrías que verificar individualmente. Y para eso, iría a más información del modelo aquí, y luego podrá obtener toda la información, todos los diferentes tipos de modelos y GLB, GLTF y FBX, así como OBJ Sin embargo, OBJ, te puedo garantizar que no tiene animaciones como OBJ solo para un objeto estático. Y en realidad puedes bajar. Se puede ver PBR. Son todos tus materiales. Tiene cuatro texturas para el sproc específicamente. Entonces tendrías que hacerlo si no se aplica automáticamente, tendrías que entrar en los materiales y cargar estas texturas, como vimos en la sección de transición. Y a medida que bajamos, podemos ver, en este caso, éste no tiene animaciones, y no está amañado Entonces tendrías que montarlo antes de poder animarlo si quisieras hacer tu propia animación Y no hay animaciones que lo acompañen, obviamente, no está amañado Alternativa, también tenemos algunos troncos aquí que puedes conseguir aquí hay un camión aquí, perfectamente gratis. Entonces, si querías conseguir modelos, puedes dirigirte a un lugar como Sketchfab aquí y puedes echar un vistazo a algunos modelos gratis y descargarlos Si solo quieres usar las formas básicas como cubos como los que voy a usar para esto, entonces eso también está perfectamente bien, porque no estamos trabajando con tres modelos D. No estamos haciendo nada elegante o específico. Prácticamente solo estamos moviendo las cosas en la pantalla. No necesitamos animaciones elegantes para hacer que nada de esto funcione. Bien, depende de ti a qué ruta quieres ir, ya sea que quieras hacer algunas, buscar algunas gratuitas y descargarlas, o si solo quieres usar las formas básicas que vienen con el motor Hasta usted. Ahora para hacerlo por éste. Te toca a ti pensar en ello. Y si quieres usar tres D, adelante y pasa tu tiempo ahora recolectándolos y juntándolos. Si quieres importarlos, es igual tus otros activos para arrastrarlos a tu carpeta de proyecto. Bien, comencemos. 48. Mapas de cuadrícula: Bien, todos. Al igual que en la versión dos D, vamos a empezar por crear el fondo para esto. Y para hacer esto, vamos a necesitar algunas cosas. En primer lugar, vamos a necesitar una cámara aquí que apunte hacia abajo para que podamos ver realmente lo que está pasando aquí. Así que adelante y predica una escena de tres D, que simplemente sería una no tres D para tu raíz He renombrado el mío para decir Principal. Agrega una cámara tres D aquí, y puedes seguir adelante y agregar un mapa de cuadrícula. El mapa de cuadrícula es la versión tres D de un mapa de mosaico. Y con tu cámara tres D, puedes seguir adelante y establecer tu posición Y debajo la sección de transformación a 25 y tu rotación de la X a negativo 90. De esa manera, puedes mirar hacia abajo. Ahora bien, si tuvieras que dirigir esta escena, verás una caja gris. Fantástico, pero al menos sabemos que las cámaras funcionan o al menos se cierran por defecto. Si estás paranoico por eso, puedes seguir adelante y marcar corriente dentro del inspector Pero como solo tenemos una cámara, esta debería ser la única que activa ahora mismo un mapa de cuadrícula. NRT es un mapa de cuadrícula. Debemos tener nuestro juego de azulejos, ¿ verdad? El arte es un mapa de azulejos. Necesitamos un juego de azulejos. Bueno, para un mapa de cuadrícula, necesitamos una biblioteca de mallas. Y podemos crear uno nuevo, pero no tiene ningún recurso en él. Entonces, lo que tenemos que hacer en realidad es crear esta biblioteca. Entonces para hacer eso, vamos a seguir adelante y crear una nueva escena, y solo puedes hacer un nodo tres D como tu nodo raíz nuevamente para nuestra escena. Y otra vez, eso es sólo una nueva escena de tres D, y tendrás una. Y todo lo que estoy haciendo para el camino, el agua y la mediana es que solo estoy trayendo las texturas de los dos D Frogger, trayendo los sprites y usándolos como textura albedo Y yo sólo estoy dejando su posición por defecto en el medio. Entonces te voy a mostrar cómo hago eso. Entonces entré y creo una instancia de malla tres D. Voy por delante y le renombré el nombre. Este va a ser mi bloque de latón para mi malla, sigo adelante y abro esto y selecciono una malla de caja. Ahora bien, si tuvieras una malla personalizada, un modelo personalizado aquí, si quisieras traer específicamente para este bloque, podrías seguir adelante y arrastrar la malla a este lugar específico. Esta malla, este objeto. Aquí es donde lo harías. Ahora, solo para estos bloques y el mapa de cuadrícula, no deberías necesitarlo a menos que estés trayendo tu propia costumbre, nuevamente, mallas para cada uno de tus bloques Ahora bien, este bloque es simplemente completamente blanco aquí, y notarás que es mucho más pequeño. Sólo voy a esconder los otros de aquí para que podamos enfocarnos en éste. Todo bien. Entonces lo primero es que tenemos que ir a escala y establecer XY y Z todo el camino a dos veces en su escala. Y la razón por la que estamos haciendo eso es para que se ajuste a un bloque entero de nuestro mapa de cuadrícula en lugar de estar fuera al borde o a lado en alguna posición extraña. Simplemente es más fácil para nosotros seguir adelante y hacer esto, solo el doble. Bien, entonces tenemos nuestro pequeño cubo aquí. Ahora, lo que necesitamos es una textura en él. Entonces lo que vamos a hacer es que vamos a abrir la anulación del material de superficie. Y la razón por la que vamos a hacer eso. Oh, no, este lío viene con él. Así que solo podemos abrir la sección de malla, y ahí está el material. Y solo agregamos un material estándar, abrimos eso. Y aquí está nuestra textura albedo. Y aquí es donde entraríamos en nuestros sprites Frogger. Y para mi bloque de pasto aquí, podríamos seguir adelante y traer a casa si quisiéramos. Podríamos hacer eso, pero no se ve tan bien. Es un poco raro. Y en lo personal, no soy tan fanático de ello. Entonces, personalmente, lo que estoy haciendo con esto es que voy a agarrar la textura mediana, y voy a colocarla ahí. Y luego solo por preferencia personal, voy a bajar al U V uno, específicamente, y solo voy a poner mi escala aquí de mis UVs a dos Creo que al menos se ve un poco mejor. Ahora bien, el problema es que esto se ve exactamente como nuestra mediana, y no podríamos notar la diferencia. Entonces aquí es donde voy a usar el siguiente pase aquí dentro de nuestro material, y voy a agregar otro material estándar aquí. Ahora, cuando abra eso, voy a configurar el albedo para que sea un bonito verde semitransparente Subiré a la sección de transparencia y estableceré la transparencia en Alpha. Y ahí vamos. Tenemos, como, una versión verde de la mediana, así que destaca y es bastante diferente. Ahora, solo tendrías que hacer esto para el bloque de pasto si me estás copiando con esto. Y la mediana, solo usas, por supuesto, la textura mediana, doble de tamaño, el agua. Se puede hacer lo mismo y lo mismo con la carretera. Y una vez que tengas eso, te recomendaría guardar esto, así que Control S. O, claro, subes a tu CN y guardas y guardas esto como tu libreria mesh lib, mesh. Y esto será por si acaso quieres volver y editar esto en el futuro, cual probablemente lo haremos en algún momento, solo el aviso. Y una vez que hayas hecho eso, podemos subir a SN e ir a Exportar como, y verás la biblioteca de malla como opción. Sé que ahora no lo puedes ver en mi pantalla, sino solo exportar SN como Mesh Library. Y cuando lo hagas, se te presentará esta pantalla. No es grande. Ahí vas. Y sólo por seguridad, voy a seguir adelante y asegurarme de volar meshed instancia nos transforma en, pesar de que deberíamos estar Y solo guárdala en alguna parte. Acabo de llamar a Min MAP, y uso la extensión mesh lib solo para mantener las cosas organizadas porque no quiero que todo se llame Res o Trez, por ejemplo Me gusta mantener las cosas nombradas correctamente así mesh lib o material, shader, cosas así A mí me gusta que mantengan las extensiones relevantes a lo que es. Entonces una vez que tengas eso, sigue adelante y di eso y presiona el botón Guardar. Si ya tienes uno creado en el futuro y vuelves a editarlo, puedes seguir adelante, simplemente sobrescribirlo. Estarás bien. Y de vuelta dentro de nuestra escena principal, en realidad podemos ir a nuestro mapa de cuadrícula. Y encuentras dónde guardaste tu lib de malla, puedes seguir adelante y arrastrarla sección de la biblioteca de mallas de tu mapa de cuadrícula, y ahí tienes. Ahí tienes todas tus piezas. Ahora, seguí adelante y tengo Grass block y grass end solo por mi naming, y seguí adelante y solo tengo mi set para agregar en lugar de sobrescribir lo que voy a hacer es que solo voy a volver a entrar, ir a exportar la biblioteca de malla Y voy a decir que voy a desmarcar, fusionarme con los existentes De esa manera, simplemente la sobrescribo completamente y la sustituyo. Y ahora cuando vengo aquí, solo tengo mis bloqueos normales. Impresionante. Bien. Ahora, para el proyecto, estoy usando la misma resolución que uso en Frogger en r2d3 36 Y si sigo adelante y corro eso, voy a tener un momento más fácil a la hora de colocar mis bloques. Todo bien. Ahora, ya verás mientras tenemos ahí el bloque gris, o no parece que tengamos nada en nuestra ventana. Verás si seguimos adelante y colocamos algo, aparecerá. Y así es como vamos a determinar dónde están nuestros límites . Eso es lo que vamos a hacer. Vamos a delinear nuestros límites si vengo aquí abajo. Esa es la parte superior, lo que significa que debería estar mirando de esta manera en mi cámara. A ver. Eso sigue en pantalla. Eso es un poco demasiado lejos. Bien. Entonces ese va a ser ese bloque. Se puede repasar una. Y voy a llamarlo ahí en esa cuadra. Y ahora, solo es cuestión de encontrar las otras esquinas, que si cuentas los espacios de la cuadrícula, deberías poder encontrarla fácil Esa debería ser mi esquina ahí. Y entonces nuestro rincón debería estar justo aquí, ¿uno más? Sí. Bien, entonces ahí está la esquina de todas nuestras posiciones. Ahora bien, si quieres colocarlo click izquierdo, si no sabes cómo eliminarlo, no lo entendiste. Es un clic derecho. Y ahora podemos comenzar a colocar nuestros objetos. Entonces nuestra mediana es nuestra segunda fila aquí. Teníamos el camino en la primera fila. Teníamos carretera en tercera, cuarta, quinta, sexta y séptima. Entonces volvimos a tener mediana. Cruzamos, teníamos otras cinco filas para el agua. Uno, engancha dos, tres, cuatro y cinco. A ver ¿qué tenemos a continuación? Teníamos nuestra zona de viento. Entonces para estos, voy a duplicar aquí en los extremos. Esto porque aquí es Uy un número impar. Y vamos a tener dobles, así. Tres huesos, uno, dos, tres, abajo, uno, dos, tres, abajo, uno, dos y tres abajo. Voy a llenar esos espacios vacíos con agua. Y luego tuvimos la última fila, que era solo agua donde estaba algo de nuestra interfaz de usuario. Ahora, sigamos adelante y rellenemos eso de nuevo. Y ahí lo tenemos. Utilizamos la cámara para asegurarnos que llenamos toda nuestra área visible aquí Ahora bien, esto es un poco oscuro, como pueden ver, y eso es porque no tenemos ninguna iluminación. Entonces voy a dar click en mi nota principal aquí y voy a añadir una luz. Y específicamente, vamos a agregar una luz direccional solo para que podamos emular un sol que se pone. Voy a levantar eso arriba, acercar el zoom para poder ver a qué ángulo apunta y apuntarlo hacia abajo. Aquí vamos. Ahora tenemos algo de luz brillando en nuestro conjunto de mosaicos o mapa de cuadrícula que podemos ver y realmente ver lo que está pasando aquí. Todo bien. Entonces eso es todo lo que tenemos que hacer aquí. En este video. Ahora, voy a señalar que aquí estamos en el piso cero. Sin embargo, si quisieras bajar a uno negativo, verás que vamos a ir por el espacio aquí. Si quisieras bajar uno, ciertamente puedes hacerlo solo para que nivela para que 00, cero esté sentado encima de nuestros objetos, o para que podamos tener, digamos, una rana sentada en cero, cero, y estaría en lo alto del suelo lugar de tener que levantarla, cual creo que voy a pasar y hacer muy rápido aquí. Bien, así que seguí adelante y bajé la mente por uno, y como pueden ver en la cámara, ahora estoy un poco apagada en mis números Así podemos subir y podemos simplemente llenar esos espacios extra en. Solo haz uno más ancho. Y eso arreglará eso. Boom. Boom. Arreglo simple. Fácil de hacer rs. Sabes, creo que solo traeré más agua ahí en los bordes. Todo bien. Entonces ahí vamos. Ahí lo tenemos. Necesito una carretera más en la parte inferior para cubrir esa rejilla inferior. Aquí vamos. ¿Todo bien? Yo pantalla es caer otra vez, cambio mi piso abajo a negativo uno. Entonces ahora cuando nos sentemos a las 00, estaremos directamente encima de ella. Y ahí vamos. Tenemos nuestro mapa de cuadrícula configurado. Tenemos nuestra cámara apuntando hacia abajo a nuestro mapa de cuadrícula para que podamos mirarlo a vista de pájaro. Y eso lo hará por este de aquí. Ahora, puedes ver que es muy fácil aparte de tener que crear nuestra propia biblioteca de mallas, lo que quiero decir, para ser justos, si estás en dos D y estás trabajando con conjuntos de teselas o tilemap, tienes que crear tu propio conjunto de mosaicos, ¿verdad Así que no es una diferencia demasiado grande pasando de dos D a tres D hasta el momento. Tuvimos que agregar una cámara, y tuvimos que agregar una luz. Aparte de eso, nuestro proceso ha sido, en su mayor parte, casi el mismo. O sea, con una biblioteca de mallas, tuvimos que exportar eso para que se configurara. Era un juego de baldosas, tuvimos que meterse con una sección especial de conjunto de baldosas aquí abajo en la parte inferior. Tan pequeñas diferencias ahí, pero mucho de eso fue lo mismo. No muy diferente ahí. ¿Todo bien? Una vez que sigas adelante y tengas tu mapa establecido, ponte en el piso que quieras, tu cámara, podemos seguir adelante y pasar a la siguiente sección. Olvidé lo que hicimos segundo, así que voy a tener que regresar y echar un vistazo. 49. Crear el reproductor: Bien, entonces aquí vamos a seguir adelante y crear nuestro jugador, y te voy a mostrar si sigo adelante y detengo esto muy rápido Voy a seguir adelante y mostrarte si eliges usar un tres activos D aquí y tal vez descargué algunos o creaste algunos. Verás, tengo un GLB para ug aquí. Con tres texturas aquí. Ahora bien, esto debería aplicarse automáticamente, y solo voy a hacer click derecho sobre él, y voy a seleccionar nueva escena heredada. Sé que no se puede ver eso, pero voy a seleccionar nueva escena heredada. Y verás que ahora tengo mi nueva ranita como escena propia, y debería tener todas sus texturas completamente aplicadas para mí y debería tener todas sus texturas completamente aplicadas para Ahora bien, si quisieras usar el modelo, por todos los medios, ve a por ello. Si tu modelo tuviera animaciones, verás un reproductor de animación dentro de su escenario. Y si esto es lo que quieres usar como jugador, puedes seguir adelante y guardarlo como jugador. Ahora bien, esto es, en este caso, un Nodo tres D. Así que tendríamos que cambiarlo. ¿Qué haces clic derecho y cambias tienes la opción de cambio ahí? Ahora bien, si sigo adelante y hago doble clic en mi rana aquí antes de que abramos la escena, cambia a C, no tengo opción para eso. Es interesante. A ver si tengo una opción si voy aquí. Bien, entonces haces doble clic en la escena. Conseguiremos el importador por rana tres D. Y podemos simplemente entrar en el tipo raíz aquí. Haga clic en eso y seleccione Cuerpo del personaje tres D. No hay razón para que me capture. Es lo mismo que crear un nuevo nodo, misma pantalla. Simplemente puedo hacer clic en Cuerpo del personaje tres D, presionar Crear. Y ahora que voy a tener un cuerpo de personaje o debería presionar el botón de reimportación aquí abajo en la parte inferior Cierra esa vieja escena, haz clic derecho y haz escena heredada. Puedo ver que mi nueva ranita aquí tiene un cuerpo tendemático. Entonces, si quieres usar un tres D, puedes seguir adelante y hacer eso. Hazte una pequeña rana feliz, muévete. Como dije, esta no tiene ninguna animación. Entonces él solo estaría saltando Bueno, yo diría que saltando, pero no realmente saltando, ¿verdad? Simplemente se movería un espacio a la vez. Y si quieres ir con solo la versión básica, tal vez no seas súper instantáneo en tres D, pero, ya sabes, tienes que por lo menos aprender un poco , sumergir los dedos de los pies en un poco. Lo que vamos a hacer es que vamos a entrar en cred una nueva escena, ir al otro nodo, hacer un cuerpo de personaje tres D. Y agregaremos una instancia de malla también La instancia de malla donde solo puedes usar una caja y para mantenerla en línea con todo lo demás, estableceremos la escala en dos. Voy a añadir un material estándar. Y como él es mi pequeña ranita sólo voy a ir con esto, como, verde amarillento Y eso es todo lo que realmente necesitamos ir con. Ahora bien, si quisieras, podrías entrar y ajustar algunos de tus otros deslizadores Mira, tenemos una especie de rana brillante pasando aquí ahora. Especular subiendo, y las ranas no son súper metálicas, así que solo tiene un poco de metal ahí dentro Y solo podrías hacer eso con un poco de ranita. Ahora bien, si planeas que solo el de arriba hacia abajo se vea así, y no lo haces en ningún momento, planea mover la cámara tal vez aquí abajo. Pero si la mueves aquí abajo, yo sugeriría agregar una segunda capa al viento el área de viento en el mapa de cuadrícula, solo para que la tengamos saliendo del suelo Pero si solo planeas ir de arriba hacia abajo, ¿qué estamos buscando Material. Lo que podrías hacer entra en tu rana o sprites. Oye, puedes traer ahí a la pequeña ranita por la textura, y Oh, no se ve muy bien, así que tal vez no queremos hacer eso Hmm. Bueno, espero que eso vaya un poco diferente. Pero supongo que no. Pero supongo que podríamos seguir adelante y simplemente usar esta textura para el color ranita si lo queremos, o simplemente puedes hacerlo verde, o de nuevo, puedes traer tu propio modelo de tres D, asegúrate de que tu nodo raíz aquí sea un cuerpo de personaje dos D. Cualquiera que sea la ruta que quieras ir con él va a ser completamente Dije al principio de esto que solo voy a ir con las formas básicas que ya están aquí en lugar de buscar y encontrar un montón de tres modelos D. Pero si quieres hacer eso, haz que tu look sea extra bueno. Fantástico. Te animo. Bien, entonces voy a ir con esto y cambiar el nombre mi cuerpo de personaje a Frog, ¿ o queremos ir a jugar? Iré con el cambio de nombre de mi jugador, y en realidad no necesito nada y en realidad no necesito nada más que esto en este momento Voy a seguir adelante y guardar mi escena como escena de jugador. Puedo ir a Maine y podemos traer a nuestro jugador. Todo el camino de regreso al inicio. Ya que conseguimos todo esto chasqueando con la grilla, perfectamente alineamos. Está justo en el medio. Bien. Entonces veamos. ¿ De hecho se alinearía con eso? Perfecto. Todo bien. Entonces con eso, sea cual sea la ruta del jugador que decidas ir o voy a tirar a nuestro pequeño amigo aquí arriba Tú. Bien, con eso Ve con cualquier rana o cubo, textura, lo que quieras ir con tu rana. Una vez que tengas eso, adelante y guárdalo. Hazlo ahora mismo. Y te veré en la siguiente donde seguiremos adelante y empezaremos a meter los pequeños movimientos. 50. Movimiento del jugador: Bien, sigamos adelante y creamos el movimiento básico del jugador para nuestra pequeña ranita Así que acabo de ir a nuestra escena de jugador aquí y bofetada es guión en Nuestra pequeña ranita y dentro de nuestro guión, estamos listos para irnos Podemos saltar directamente a nuestra función de proceso. Ahora bien, como estamos trabajando con tres D, debería decir que cualquier cosa que tenga que ver en futuro con detección de colisiones y cuerpos físicos, sería mejor que se pegaran cosas que tuvieran que ver con ellos específicamente, como el movimiento bajo un proceso de física. En lugar del proceso regular, estos son dos tiempos diferentes en un marco. Y nuevamente, para este juego, no debería ser tan importante, pero me imaginé que solo te lo haría saber para el futuro, si decides continuar con el desarrollo de juegos tridimensionales que cualquier cosa relacionada con desarrollo de juegos tridimensionales que la física como el movimiento debería estar bajo proceso de física en lugar de solo proceso regular. Bien, así que voy a seguir adelante y vamos a crear nuestra función de movimiento. Entonces movimiento esto no devolverá nada. Ahora, ya tengo mis funciones o no funciones, perdón. Mi movimiento aún establecido ya que estoy en el mismo proyecto. Recuerda, ve a la configuración del proyecto de tu proyecto. Ve a tu mapa de entrada. Y a partir de ahí, puedes seguir adelante y configurar tus entradas. Si no tienes eso configurado por el motivo que sea, tal vez estés haciendo esto en su propio proyecto separado, que de nuevo, estaría bien estaría bien. Pero sí, solo quería tener una configuración aún mía tal como lo fue de los dos D froger Todo bien. Entonces dentro de un movimiento. Todo lo que tenemos que hacer, claro, tenemos que comprobar decir que entré punto es acción presionada. Decir simplemente presionado porque no queremos enviarlo por spam. La acción que queremos comprobar va a estar arriba. Eso es lo que nombré por acción. Y para poder mover a nuestra pequeña ranita recuerdo antes, lo que hicimos es movernos a la posición del punto uno mismo Hacer, en este caso, estamos en tres dimensiones. Tenemos que ir con un eje z o z aquí. Y veamos qué pasa si hacemos esto. Vaya, huevo en mi cara. Nunca llamé movimiento. Por eso no es trabajo. Entonces, sí tienes la posición forma de llamar a las cosas. Tenemos la forma básica transformada de llamar a las cosas, y eso nos va a decir que no podemos usar un solo número. Tenemos que ir con un vector tres, y eso es para un tema mucho más avanzado cuando empezamos a ir a cosas como matriz, matrices, y cosas así. Así que transformar punto origen punto z sería el otro simple que podrías usar. Se puede ver, para nosotros, están trabajando idénticos. Aunque, dependiendo de tu situación y de tu juego, es posible que necesites usar o prefieras usar uno sobre el otro. Es una de esas cosas que pueden ser situacionales. Ahora, si quieres mantener las cosas lo más cerca posible de la versión Tut, puedes ir con la posición D, posición DZ Voy a ir a transform.org solo porque es algo con lo que queremos ir típicamente cuando se trata de tres D, diría yo Muchas veces esto es lo que vas a ver en la parte de atrás. Estás viendo el código de otras personas, al menos a través de mis experiencias cuando veo a otras personas. Entonces en este caso, puedes seguir adelante y supongo que usa el que quieras ir con aquí, y podemos dejar eso a preferencia personal Voy a escribir todo el asunto. Eso depende de ti. Y podemos seguir adelante y rellenar los otros, estos últimos tres para nuestra izquierda updwn Todo bien, entonces ahora su eje se ha cambiado a abajo izquierda, derecha, y son todos Ahora bien, si arriba va a ser negativo, entonces abajo va a ser positivo. Ahora, izquierda va a ser negativa, pero no va a estar en el eje z. Va a estar en la X. Y si eso es negativo en la X, entonces la derecha va a ser positiva en la X. Así que podemos seguir adelante e intentar eso. Y ahí vamos. Deberíamos estar moviéndonos en todas nuestras direcciones, ya que necesitamos y encajamos dentro de todas nuestras zonas de viento. Ahí vamos. Impresionante. Muy bien, hasta ahora tan bien. Ahora bien, ¿y si quieres rotar un poco Froggi? Especialmente tal vez si estás usando un modelo traído en tu propio tres D, entonces es posible que quieras rotarlo de nuevo mientras se mueve, tal como hicimos con nuestros dos D froggi Bueno, aquí vamos a seguir adelante y obtener auto rotación grados Y, creo que va a estar aquí. Y lo voy a poner a cero en abajo va a ser 180. Izquierda es, creo que son 90, y luego la derecha es negativo 90. Sigamos adelante y verifiquemos eso. Y cada vez que nos movemos, ahí vamos, nuestra pequeña ranita gira alrededor en la posición en la que necesitan estar Ahora, de nuevo, eso va a depender completamente ti si quieres configurarlo de esa manera. Y otra vez, si realmente quieres, puedes entrar y puedes tener una s para que por defecto vuelva a bajar a mirar hacia adelante en su rotación para que cuando te muevas, puedas ver que no es así no estamos obteniendo ese giro instantáneo, como esperaríamos en dos D. Así que tendríamos que entrar y poner solo una ligera pausa en él. A mí mismo no me importa. Podría ser solo porque estoy haciendo el cubo, pero no voy a tener ese bloque ahí dentro. Pero con eso, tenemos nuestro movimiento básico, y podemos empezar a conseguir cosas como autos, a ser aplaudidos por nuestros autos, y luego conseguir que nuestras plataformas salten sobre la muerte por el agua, zona de viento, que nos vuelvan a poner en marcha nuestro gooey Y a menos que me olvide de algo, tendremos nuestra versión tres D todo listo. Oh, bueno, no la respuesta será parte de la muerte, sí, así que ahí vamos. Bien, ahí están los controles aquí. Que estamos obteniendo para nuestro broger de tres D, recuerda llamarte función de movimiento dentro del proceso Y recuerda, en el futuro, si vas a seguir haciendo con tres juegos D, cualquier cosa que tenga que ver con la física, como el movimiento porque estoy seguro que ahí van a tener colisiones establecidas Vas a estar preferentemente pegando en el proceso de física en lugar de en el proceso. Pero bien. Ahí vas. Ahí está nuestro movimiento de jugador. Y sigamos adelante y saltemos al siguiente. 51. Crear vehículo: Bien, así que sigamos adelante y construyamos nuestros pequeños vehículos que podamos usar para engendrar en el Ahora, claro, de nuevo, si fuiste y obtuviste unos tres modelos D para vehículos, y luego igual que la rana, podemos seguir adelante, traerlos. Asegúrate de que estén orientados en la dirección correcta, lo cual debería ser obvio cuando lleguemos al final cuando los veas moviéndose. ¿Qué? Adelante y engendrarlos o crear un elemento a partir de esa escena. Guárdalo como tu vehículo. Y si estás haciendo los bloques básicos conmigo, entonces sigue adelante, vamos a seguir adelante y nos crearemos nosotros mismos. Nos haremos un camioncito. Voy a ceñirme a la versión dos D lo más cerca que pueda, y crearemos nuestro cuerpo de personaje. Se llama esta camioneta. Y claro, esto necesita una malla verus el agregar aquí. Y voy a seguir adelante y agregar una caja. Vamos. Ahora, para seguir con nuestro dos en dos, voy a aumentar la escala aquí dos y la voy a levantar. Yo bien, así que eso debería estar a la par con nuestro personaje de jugador. Voy a asegurarme de que todo esto esté igualado en posición plana y pareja Ahora, tú, por supuesto, no tienes que nombrar ninguna de estas cosas, pero esa va a ser la pestaña, voy a crear otro lío aquí, y este será mi tráiler. La escala de transformación sube a dos. Eso también va a ser una caja, posición, uno en la Y. voy a tirar de nuevo a dos en la X. Y veamos. Voy a seguir adelante y darle un color diferente. Y no tenemos visibilidad. Nosotros modulamos. Entonces voy a seguir adelante y agregar un material a esta malla. Ese va a ser mi tráiler. Digamos material estándar. Abre eso y ve a mi albedo, y yo sólo voy a seguir adelante y darle un color a eso Voy a ir con algo en el tono naranja. Y ahora si lo quiero, puedo seguir adelante y puedo cambiar tweak algunas de estas válvulas, así puedo poner mi X a dos, y ahora es más larga, que ahora se verá un poco más como un tráiler Vuelva a bajar mi posición en mi transformación tres para que se alinee un poco mejor. Y como esencia desnuda, yendo de arriba hacia abajo, esa será nuestra camioneta. Ahora, si quieres ir el kilómetro extra, puedes seguir adelante y traer otro messin Si quieres puedes usar como ejemplo aquí, vamos a cilindros Genial Así que podemos traer eso y se puede ver cómo tenemos nuestro lado. Y luego podemos ir y podrías ajustar el tamaño de todo esto Digamos que bajamos nuestra altura a uno, 0.5. Estamos llegando ahí tal vez 0.25. Y ahí tendríamos una rueda del costado. Entonces, si quisieras hacer ese esfuerzo extra y usar otra malla para crear tus ruedas, dale un shader, color Es así. Sin duda puedes hacer eso. Y entonces, en ese caso, yo diría que simplemente mueva toda la malla un poco más hacia arriba para que las ruedas sean lo que va a estar en el suelo aquí. Entonces si quisieras hacer eso, por todos los medios, ve a por ello. Vuélvete loco. Si quieres de nuevo, trae tu propia camioneta, puedes. Y cuando uses estas formas y creas tu propio camión, entonces adelante, regresa, y terminaremos la siguiente pieza que vamos a agregar al camión, y luego crearemos nuestros hilanderos y escribiremos nuestros guiones Bien, así que he seguido adelante. Le he agregado algunas ruedas, y acabo de levantar todo solo seleccionar todas nuestras mallas y levantarlo Voy a golpear escape para poder deseleccionar todo. Y ahí está mi camión sencillo. Ahora, si quieres, puedes seguir adelante y podrías seguir adelante con esto, por supuesto, y crearte más vehículos. Yo sólo voy a ir con esta camioneta fácil de aquí ponerse en marcha. Y para seguir adelante con los dos aspectos D para esa comparación justa lado a lado. De esa manera podrás tener una idea fácil o mejor de la transición de lo que es trabajar en dos D versus tres D. Vamos a seguir adelante y continuar y hacer esto con detección de área. Entonces vamos a agregar un área tres D igual que hicimos en dos D. Y en esa área, vamos a seguir adelante y agregar en forma de colisión aquí. Puedes ver aquí he tenido un área tres D y una forma de colisión. Esa forma de colisión, claro, va a ser una caja. No hay razón para no hacerlo. Y luego solo asegúrate de que tu caja cubra todo tu vehículo. Pero no hay error cuando tu pobre ranita se aplasta. Agarrando estas asas naranjas y sacándolas. En algún lugar cerca de la mitad de mi camioneta cerrar. Ahí vamos. Ahora, no hay error. Si mi rana es golpeada, entonces él la consigue. Voy a encogerlos en un poco. Sí, porque tenemos mucha base en el costado ahí. Bien, por ahora, creo que está bien. Si quieres, siempre puedes volver y ajustar esto más tarde. ¿Bien? Entonces voy a seguir adelante y guardar esto mi recolector de tres D solo dice camión punto C. Y ahora necesitamos que nuestro camión tenga guión, ¿no Porque necesitan estar en constante movimiento. Y vamos a ver. Vamos a estar moviéndonos en la línea roja, así que eso va a estar en el eje X transversal. Eso es fantástico. Et sigue adelante y agrega un guión. Obtenga nuestro guión para camiones. Y nuevamente, vamos a mantener las cosas tan similares como podamos para nuestras tres D como hacemos dos D. Y no necesitamos preocuparnos por nada de esto. Si tienes todo esto, solo tienes que seguir adelante y eliminar esas porciones. Estos son para un tipo de juego completamente diferente completamente diferente . Sí, ¿qué había ahí si no le prestaste atención y solo lo hiciste clic como yo lo hice ahí, y no tenías un guión vacío o no predeterminado Ese era un controlador de personajes. Y el controlador de personajes suele ser uno que tiene bien, estos aspectos se pueden pensar, supongo, más como un shooter en primera persona o una plataforma o cosas que están más a lo largo de esa línea en términos de RD, para puede correr por ahí, correr y saltar por ahí. En nuestro caso, nuestra camioneta no necesita nada de eso. Entonces, sigamos adelante. L lo mismo que hacíamos antes, como exportar nuestra variable de dirección. Que era un entero, y usamos el valor por defecto como una última vez. Entonces teníamos una variable para la velocidad, que también era un número entero que teníamos a 32. Eso podría ser súper rápido, ahora, pero supongo que lo averiguaremos. Entonces supongo que por ahora, voy a ponerla en una. Puedo cambiar eso más tarde. Dentro de nuestro proceso. Vamos a seguir adelante. Tenemos nuestra velocidad. Obtuvimos la propiedad X de la misma, y la pusimos igual a nuestra dirección de tiempos de velocidad. Y, por supuesto, necesitamos deslizarse en movimiento de lo contrario nuestra velocidad no hará nada. Vayamos a nuestra escena principal, llevemos nuestra camioneta y veamos si funciona tal como esperamos. Yo seguiré adelante y lo colocaré ahí y lo ejecutaré. Bien, estamos puestos en una velocidad de uno, y va en sentido contrario para nosotros. Pero, eso está bien. En este camión, eso significa que nuestra dirección es menos uno porque queremos ir a la izquierda. Y ahí vamos. Podemos ver nuestro camión cruzando. Impresionante. Y, por supuesto, podemos toparnos ahora mismo porque no tenemos escenas de muerte para que la pequeña ranita quede exprimida Pero nuestro camión se mueve Ahora, sigamos adelante y ahora que sabemos que está funcionando de la manera correcta, vamos a ejecutarlo, a ver si 32 es demasiado rápido o si sigue siendo bueno. A mi, eso parece que podría ser un poco demasiado rápido. Para ti, tal vez te guste esa velocidad. Entonces solo lo puse por la mitad a 16. Eso podría ser un poco rápido para mí también todavía podría querer ir con ocho mi velocidad y darle otra carrera. Bien, creo que voy a ir con ocho, al menos por ahora, de nuevo, siempre puedes volver y cambiarlo después. Y ahora vamos a seguir adelante y conseguir nuestros spanors creados aquí. ¿Todo bien? Entonces no tengo vehículos que vayan en sentido contrario, y sería aburrido tenernos a todos yendo en una dirección. Entonces solo voy a tener esta camioneta, y voy a hacer que vaya ya sabes, en dirección diferente. Vamos a tener algunos a la izquierda, algunos van a la derecha para esto. Por supuesto, si tienes varios vehículos, por supuesto, tienes un vehículo diferente para cada sponner así que vamos a seguir adelante en nuestra escena principal, y vamos a agregar lo mismo que hicimos en Tot, vamos a agregar un marcador D y esta va a ser nuestra llave Creo que usamos un marcador o ¿usamos un nodo? Creo que usamos un nodo. Déjame seguir adelante y hacer clic derecho Cambiar tipo y cambiar a un No cambiarlo a una llave de trazado ahora ¿Y cuál es la posición de esta camioneta? Tira de aquí un poco. Entonces podemos decir 32 y 12. Sí, eso se ve bien. Entonces llave, transforma posición, 32 en la X, 12 en la z. Y ahí es donde vamos a detectar esos vehículos, ¿verdad Sigamos adelante y agreguemos un script para nuestro spawner. Y nuevamente, manteniéndonos lo más cerca que podamos de la versión TD. Vamos a tener nuestra variable de camión, que después acabamos de llamar vehículo. ¿Sabes qué? Simplemente seguiremos adelante y llamaremos a un vehículo ya. ¿Por qué no por si acaso tal vez ustedes tienen vehículos extra? Voy a igualar una recarga, ¿verdad? De nuestro camión. Pero claro, es posible que desee establecer esto por separado. De esa manera podremos usar el mismo script en todo. Ahí vamos. Simplemente saltamos adelante y lo exportamos para una escena repleta. Y en este caso, claro, sólo voy al interior de mi vehículo. Y inspector, sólo voy a arrastrar mi camioneta en la escena de mi camioneta. Ahí vamos. Y listo, todo lo que tenemos que hacer es llamar nuestra función que vamos a crear aquí, vehículo de desove Bien. Califica ese funk span. Vehículo. Y podemos hacer lo que hicimos de nuevo, previamente donde podemos obtener un tiempo de espera aleatorio aquí. Y este es un entero aleatorio. Y usamos por ciento tres o por lo menos yo uso por ciento tres más uno. Así que recuerda, este por ciento tres nos va a dar cero, uno, dos, y sumando uno que nos dará un entero aleatorio de uno, dos, tres. Entonces uno de esos. Y como estamos usando esto como segundos, nos va a dar de uno a 3 segundos entre cada auto. Parece árbol como lo hicimos antes, crea nuestro temporizador, pasaremos nuestro tiempo de espera y sacaremos nuestro tiempo fuera. Entonces, después de haber esperado tanto tiempo, crearemos una instancia de nuestro camión o nuestro vehículo. VI es igual al punto del vehículo, instanciar. Y tenemos que agregar a la escena así auto punto anuncio Niño, nuestro vehículo. Y como este patrocinador está del lado derecho, lo necesitas para ir a la izquierda. Ahora, como solo estoy trabajando con este vehículo, necesito una forma para que este vehículo se fije por defecto o mejor dicho por defecto, cuando se extiende para que yo tenga yendo por ambos lados Porque si no lo hago, va a volver al lapso aquí por un segundo. Y cuando eso esté hecho, sólo vamos a llamarlo auto Curt span Entonces, si seguimos adelante y echamos un vistazo a esto ahora, qué tres D. Hacer este camión, eliminarlo. Si lo engendramos ahora, aquí vamos. Hay una camioneta. Es otra camioneta. Aquí vamos. Verás, creo que es una velocidad decente para esto. Pero puedes ver aquí que todos mis camiones obviamente van a ir a la izquierda. Entonces, si vas a usar un vehículo como yo, solo para ayudarte con el aprendizaje aquí, entonces puedes seguir adelante y puedes establecer un parámetro extra, específicamente para tu spinner. Y ese parámetro aquí, sólo voy a seguir adelante y exportar lo llamaré VD para dirección vehicular. Eso será un entero y por defecto, lo estableceremos en uno. Y específicamente este spotter, vamos a tenerlo puesto en agua negativa, obviamente, porque necesita ir a la izquierda Entonces todo lo que haría aquí es que solo haría V dot Direction, ¿verdad? Eso es lo que le pusimos nombre. Sí. Dirección. Es igual a BD. Todo bien. Entonces ahora si vengo aquí a la camioneta, si venimos aquí y si tuviera que volver a poner mi dirección predeterminada a la positiva, salvo eso. Entonces ahora sigue moviéndose en la dirección negativa porque mi patrocinador debería estar marcando esa dirección para nosotros. Aquí vamos. Entonces ya viene el camión. Entonces ahora puedo usar el mismo script si voy a usar el mismo vehículo. Ahora sólo puedo establecerlo entre uno negativo o uno positivo o dirección. Todo bien. Entonces ahora si tuviéramos que hacer lo mismo con más vehículos, bueno, si tuviéramos lo mismo cada vehículo yendo en diferentes direcciones, obviamente vamos a esta variable. Pero sigamos adelante y hagamos que nuestros otros patrocinadores se instalen aquí muy rápido. Bien, ten aquí a todos mis patrocinadores. Entonces el patrocinador cuatro va a tener ya que estoy usando un vehículo, voy a configurar un VD configurado a uno. Patrocinador dos también va a ser uno. Y por supuesto tres y mi spon original van a ser todos negativos uno porque están del otro lado Y ahora, si fuéramos a seguir adelante y echar un vistazo deberíamos tener algo que seguir, y eso va a ser mucho tráfico para apretarnos para nuestra pobre ranita. Así que de nuevo, puedes entrar aquí, puedes retocar con cosas como el tiempo de espera Oh, chico, ese es un poco desordenado. Pero, sí, ahí tienes. Puedes entrar, retocar eso Parece que podríamos meter otra camioneta en la parte superior, tal vez. Ahí lo tienes. Eso es muy peligroso para nuestra pobre frogie Eso está muy cerca Tenemos que ver en las pruebas si tal vez eso está un poco demasiado cerca, y si es así, solo borra esa fila. Es decir, parece que podría estar tocando nuestra ranita. ¿Bien? Ahí vas. Hay lo más cerca que podemos conseguir para nuestra versión tres D. En relación con nuestros dos D, así que tenemos nuestros pobres hilanderos todos montados. Tenemos nuestra roca que tiene nuestra área tres D y una forma de colisión, así podemos detectarla a la hora de estrujar nuestra rana y ahí la tienes Tenemos nuestros vehículos montados. Nuevamente, si tienes otros vehículos, ve por todos los medios, tráelos, échales un vistazo, úsalos, ten distintos preparados para diferentes direcciones. Y te veré en la siguiente. ¿Y qué es lo que estamos haciendo a continuación? Después de estos vehículos, echamos un vistazo a la muerte de respuesta de nuestro jugador. Entonces, a continuación, estaremos machacando nuestra rana. 52. Muerte y resurgimiento del jugador: Bien vamos a conseguir la muerte de nuestro jugador y reaparecer todo situado Pasemos a nuestro guión, y podemos seguir adelante y conectar nuestra señal para nuestro camión ahora, nuestra señal se va a conectar a través de script, nuevo, mantenla igual que TD. Aunque como de costumbre, siempre puedes entrar, seleccionar tu área, ir a la pestaña no en la parte superior y seguir adelante, bajar, echar un vistazo a la señal que quieres conectar. Pero es bueno para ti saber cómo conectarlos a través del código, solo porque en el futuro, probablemente tendrás que lidiar con la creación tus propias señales en algún momento, y luego tendrás que conectarlas, y es simplemente más agradable si todo está en un solo lugar, como dentro del código para mirar, especialmente si alguien más tiene que mirar tu código o tal vez tienes que regresa y mira tu código en el futuro. Pero sigamos adelante. Vamos a conseguir que nuestros nodos consigan nuestra zona tres D. Y vamos a conectar la señal del cuerpo ingresado, el cuerpo entró punto. Conéctate, y vamos a conectarnos a un callable. Y al igual que en Tutti, vamos a llamarlo jugador hit Esto tiene un cuerpo. Lo haremos nodo apretado. Olvidé la E al final de la palabra callable. Ahí vamos. Así que ahí solo tuvimos un poco de error ortográfico. No hay problema. Bien, entonces deberíamos estar en una situación muy familiar ahora mismo igual que cuando la creamos en dos D. Así que vamos a comprobar si jugador. Ahora otra vez, mantén mis mayúsculas en minúsculas de nivel. Si miro mi principal, veo jugador. Lo tengo deletreada aquí con una P. mayúscula Así que si jugador y nombre del cuerpo Yo diría, yo body dot tiene método y el nombre en forma de cadena, lo llamaremos muerte igual que antes. Y vamos a decir “body dot death”, así lo llamaremos. Y ahí vamos. Hasta el momento, este lado es exactamente el mismo que en dos D, excepción de que usamos tres D en lugar de dos D para el área. Todo lo demás es idéntico. Bien, entonces ahora nuestro jugador, no tenemos esa función de profundidad. No existe, así que nunca se le va a llamar. Entonces sigamos adelante y llamémoslo por nosotros. Y todo lo que va a pasar es que necesitamos desactivar la forma que se utilizó para chocar con el camión Y luego asegúrate de que esté orientado en la dirección correcta o un poco ranita por si acaso tal vez estés usando un modelo de tres D y luego reaparecerlo en una posición diferente Entonces sigamos adelante y podemos hacer eso. Entonces nuestro jugador, necesitamos abrir esa escena y darle a nuestro jugador una forma de colisión. Que nos deshagamos de ese triángulo de advertencia que nuestro jugador ha tenido todo este tiempo. Nuestra forma de colisión va a ser una caja para ti. Quizás quieras ir con una forma diferente. Tal vez quieras ir con una caja. Depende de ti. ¿Puedo simplemente bajar aquí y esto para que quede como una talla perfecta? Ahora que nuestro jugador tiene una hoja de colisión, se le puede detectar cuando es atropellado por el camión. Y cuando nos atropelle el camión, queremos llamar a nuestra función que llamamos muerte. Y al morir, queremos establecer nuestra rotación, igual que hacemos cuando nos movemos hacia arriba, así que voy a poner mi rotación a cero. Ahora bien, si tu modelo está orientado en sentido contrario, entonces obviamente tu arriba sería 180 y tu abajo, se pondría a cero en tu movimiento, y eso se reflejaría en profundidad. Entonces, sea lo que sea que sea, es el mismo grado en el que se está fijando al morir. Queremos desactivar nuestra forma de colisión para que solo podamos ser golpeados una vez. Todo bien. Sigamos adelante y hagamos llamada diferida Así que vamos a aplazar nuestra forma de colisión y llamada. Y eso es un montón de cosas por las que pasar. Sólo voy a empezar a escribirlo configurado deshabilitado. El segundo argumento será cierto porque eso es lo que queremos establecer queremos establecer disabled en true. Todo bien. Lo siguiente que vamos a hacer, si no recuerdo bien, subimos y creamos nuestros estados vivos y muertos. Se agregó eso a esto. Así que sigamos adelante y encabezemos arriba y creemos nuestros estados hasta que tengamos nuestro estado Enum, y tuvimos vivos y muertos, y más tarde, agregamos otro Vamos a crear otra variable aquí llamada current state. Y el tipo que lo vamos a declarar como es un estado Muy bien. Ahora, podemos seguir adelante y bajar el estado actual en nuestra muerte. Digamos que el estado actual es igual a la derecha? Estado punto muerto. Y sigamos adelante y preparemos nuestro repawn. Así reaparece funk. Y así, vamos a estar estableciendo nuestra forma de colisión y nuestro estado actual. Todo bien. Entonces queremos hacer, primero lo moveremos. Vamos a decir set disabled, está establecido en false. Nuestro estado obviamente va a estar cambiando de muerto a vivo, y necesitamos realmente cambiar nuestra posición aquí. Entonces para esto, necesitamos conseguir una posición de jugador aquí. Voy a añadir un nuevo nodo. Ya has visto todo esto antes. Podemos seguir adelante y usar marcador a nodo, lo que sea que quieras. Yo sólo voy a usar el marcador tres D. Y veamos cuál es mi posición aquí? Uno, uno, 15, así que voy a poner lo mismo a mi marcador, así que estoy desove en el mismo lugar en el que estoy empezando Uno, 115. Aquí vamos. Entonces donde empiezo al principio de mi juego es donde debería estar comenzando cuando reaparezca. Y seguiremos adelante y lo llamaremos jugador, spawn, ubicación. Y fijaremos nuestra posición. Auto punto. Posición es igual y necesitamos obtener Nodo de un jugador spawn Ahora recuerden, nuestro guión está en nuestro jugador, así que tenemos que subir uno. Entonces podemos escribir Get parent o simplemente podemos decir get node. Y para el camino aquí, podemos puntear punto slash como una forma corta de G parent y luego escribir en nodo aquí, jugador Bond Jason Got posición Bien, ahora cuando nos atropelle un camión, deberíamos poder responder Y ojalá esta camioneta no esté muy cerca. Y los chillos. Tenemos una cosa aquí. En realidad no vamos a tener una respuesta aquí en nuestro proceso. Tenemos que cambiar esto, así decimos, tenemos que verificar si nuestro rockie está vivo. Casi se me olvida eso. Y en dos D, también teníamos un temporizador en nuestra reaparicion, pero eso esta bien. Entonces sigamos adelante y terminemos. Así que estamos listos ahí arriba. Yo digo si el estado actual es igual al estado punto vivo. Podemos hacer nuestro movimiento. LFOs que es un estado actual W, LF es igual al estado punto muerto. Punto R. Todo bien. Ahora sigamos adelante y pruébalo. Bien, podemos avanzar, izquierda y derecha. Y sí, esa camioneta está demasiado cerca. Bien, así que parece que voy a tener que quitar a uno de mis patrocinadores o ajustarlos un poco Pero pienso por mí mismo, simplemente me desharé por completo de él. Yo sólo lo voy a quitar. No es un problema. Y ahora deberíamos ser buenos. Deberíamos tener un poco de espacio en la parte superior e inferior. Mi ranita no va a conseguir squish, y se puede ver por las miradas de ella, nos estábamos moviendo En cuanto nos atropelló un camión, respondemos. Esperanza. Bien, entonces no tenemos mucho margen de maniobra, así que tal vez quiera entrar y ajustar mis cajas de colisión en mis camiones Hyloiss va a ser bastante difícil, picante con esta boca yendo Pero eso solo viene de hacer algunos retoques. Voy a seguir adelante y hacer eso. No los voy a mantener aquí, chicos. Pero ahí vamos. Tenemos una muerte y respan trabajando aquí en la porción de carretera Y lo siguiente es que podemos echar un vistazo a morir en el agua, creando nuestras plataformas de agua. 53. Muerte por agua: Bien, así que igual que la versión dos D. Vamos a determinar si estamos en el agua obteniendo el ID de nuestro mapa de cuadrícula en este caso, porque estamos en tres D. Fue el conjunto de baldosas, el mapa de teselas en dos D. Así que antes que nada, igual que en Tut vamos a comenzar con una variable ready, que, nuevamente, básicamente solo establece la variable dentro de la función ready Entonces en otras palabras, esta variable no se escupe hasta después de que ya se esté ejecutando el juego Y como somos el jugador, tenemos que subir uno a nuestro padre y luego bajar para obtener nuestro mapa de cuadrícula. Así que lo configuramos en el nodo G, y tenemos nuestro punto punto slash nuestro equivalente de Get parent y grid Map Y luego bajamos y tenemos nuestro cheque Bell ID aquí abajo. Función, lista para funcionar, lista para codificar aquí arriba. Y esto va a ser muy similar a nuestra versión TD. Ahora, para nuestra versión TD, teníamos una variable para pausa MAP, que era nuestra cuadrícula Mapas traducción sería gridmp punto TMAP Local y ese mapa tomó Tomó perdón, un argumento. Y esa fue la posición de nuestro jugador la que pasamos. Y también teníamos una variable para ID, que era el equivalente de nuestro mapa de cuadrícula Yet sell source ID. Pero en lugar de la identificación de origen, lo que estamos haciendo es que necesitamos obtener artículo de venta cuando estamos tratando con mapas de cuadrícula. Y esto no toma dos parámetros. Yo sólo tengo el uno, y esa va a ser nuestra posición en el mapa. Así que no tenemos que pasarle ninguna capa ni nada. Ahora, al final, esto es todo, y esto es todo lo que necesitábamos, y diríamos si nuestro ID, en nuestro caso era igual a tres porque tres era el ID para el mapa de teselas, el conjunto de teselas. En este caso, si sigo adelante y miro mi mapa de cuadrícula y abro la biblioteca de mallas, puedo ver que el agua está asociada con la ID de aquí. Entonces voy a decir si ID es igual a uno, y aquí es donde llamaríamos. Y luego revisamos el ID de celular prácticamente cada vez que nos movemos. Boom, pero un boom. Pero un boom. Y lo voy a sacar del proceso por ahora, así que no lo estamos haciendo spam. Ahora, vamos a seguir adelante y ejecutarlo, y vamos a ver un problema. Verás, nada está pasando realmente aquí, ¿de acuerdo? Pero no estamos imprimiendo nada. Sólo consigue un le ahí. Y cuando pise el agua, esperarías que me muera aquí, y lo hago. Ahora bien, ¿eso es porque me olvidé de que lo hice? Entonces olvidé reiniciar mi reproductor aquí, y por eso funcionó. Ahora, normalmente tu jugador, de nuevo, debería estar arriba y arriba del mapa, y ya verás aquí, solo voy a seguir adelante y apresurarlo que no funcione. Y la razón de eso es, bueno, la razón por la que viste que mi jugador estaba hundido ahí abajo, estamos comprobando demasiado alto Entonces en la posición que estamos comprobando, es cero. Así que en realidad tenemos que pasar en una posición inferior a la que estamos usando aquí. Así que solo creo una nueva variable llamada cur pause para nuestra posición actual Y esto va a ser un vector tres específicamente, quiere un tres I. Así que sólo vamos a seguir adelante y pasar eso adentro. Y para eso, solo usaremos nuestra autodeposición X o nuestra Y, podemos usar la negativa. Eso será lo suficientemente bajo, y autodeposición Z para el tercer argumento. Entonces en lugar de pasar en nuestra posición propia al mapa local, pasamos en la pausa actual, derecha, curva. De esa manera podemos conseguir nuestra posición, pero una cuadra más baja, lo que nos debería dar la ubicación de donde está nuestra identificación celular, ¿verdad? Donde el mapa de cuadrícula está sentado. Entonces ahora cuando chocamos con el agua, Ahí tienes. Seguimos adelante y morimos, y nuestra reaparición no lo estropea porque estamos comprobando una cuadra por debajo del jugador Todo bien. Así que ya tenemos toda nuestra profundidad de agua instalada. Todo lo que tenemos que hacer es seguir adelante y poner nuestras plataformas de agua en nuestra zona de viento, configurar nuestro sistema de puntuación y la general I. Y luego si queremos, tal vez podamos configurar una cámara alternativa que vaya detrás de la rana para que tengamos una experiencia más codiciosa. Todo bien. Pero eso es todo. Tenemos nuestra profundidad de agua trabajando. Entonces puedes ver que en su mayoría es lo mismo todo excepto por esta línea donde solo tenemos que checar un bloque por debajo de nuestro jugador. Pero la mayor parte de eso, de nuevo, es lo mismo. Entonces si te gusta trabajar en dos D y te piden que hagas algo en tres D, ya puedes ver eso, ya hemos hecho mucho roger aquí. Y con mantener las cosas casi igual que lo haríamos cuando las hicimos en dos D, se puede ver que la mayoría de todo se traslada. Tuvimos que escribir nuestra posición. Escribimos nuestra posición en Poco diferente y nuestra rotación. Estaba escrito un poco diferente, pero quiero decir, todavía tiene sentido. No es muy diferente. Y tuvimos que agregar una línea aquí para verificar una debajo nuestro jugador en lugar de la completa de nuestro jugador. Entonces si prefieres dos D y tienes que hacer algo en tres D, no te sientas intimidado Casi casi todo lo que aprendiste en dos D se transferirá a tres D. Solo tenemos que recordar, como al establecer haciendo la posición actual aquí, tenemos esa tercera dimensión para trabajar sobre X, Y, y Z o X Y y Z. Muy bien. Entonces eso lo hará desde aquí. A continuación, seguiremos adelante y saltaremos a las plataformas. 54. Plataformas de agua: Bien, sigamos adelante y configuremos nuestras plataformas. Ahora, he seguido adelante y he creado mi registro aquí. Es sólo un cilindro con un material sobre él en la instancia de malla, y he coloreado el albedo, el marrón También tiene un área tres D sosteniendo una forma de colisión, y esta forma de colisión es solo una forma de caja, y solo estoy cubriendo la parte media de la misma para que no haya problemas a la hora de saltarse de ella, y el juego de alguna manera piensa en que tal vez todavía estamos en él solo porque podríamos estar apenas tocando o algo Así que solo fui con el medio plus. Cuando saltamos sobre él, deberíamos estar en el medio de todos modos. Entonces, voy adelante y lo hice. Y también he conectado dos señales, el cuerpo entró y el cuerpo salió de la señal en mi script de registro Y al igual que en la versión dos D, tenemos una dirección exportada. Y en nuestro proceso, solo tenemos punto de posición X más igual a una vez Delta. Y si tuviéramos que echar un vistazo a eso en tres D, se puede ver con la báscula, recuerda de los registros porque tiene que coincidir con todos nuestros bloques. Lo escalé a una escala de dos en lugar de uno. Y ya verás qué posición punto X. Ahí está lo lejos quitando con esa. Creo que uno es lo que estamos usando, ¿correcto? Sí. 01 veces Delta. Así de rápido se mueven nuestros registros. Puedes cambiar eso si quieres hacer dos veces Delta, tres veces Delta, lo que creas que es necesario para ti. Para mí, voy a dejarlo encendido una vez Delta por ahora solo para pruebas. Y luego al igual que mis camiones, puedo regresar y retocar las cosas más tarde Todo bien. Entonces, si quieres seguir adelante y tomarte un momento, asegúrate de que tus registros estén creados. Tienes tus áreas establecidas. Y si quieres seguir adelante y simplemente colocar perfectamente cinco de ellos cruzados así. Ve a por ello. Se puede. Adelante y pausa el video, adelante y haz eso. Y cuando estés listo, sigamos adelante y continuemos, y vamos a hacer la parte real de las plataformas, porque como ves, si saltamos sobre ella, no pasa nada, simplemente morimos parados en el agua Pero como dije, el primero en la sección Tut, es un poco raro, considerando que somos una rana, no deberíamos estar muriendo en el agua, no deberíamos ahogarnos Pero ahí vamos. Tenemos nuestras bitácoras. Tenemos nuestra ranita ahora la pregunta es, ¿cómo vamos a ponernos encima Bueno, vamos a tomar esto igual que nuestros dos D, ¿verdad? Tenemos nuestro cuerpo ingresado y cuerpo salido en nuestro jugador, tenemos nuestra plataforma de tres nuevas variables, que es una booleana, establecida en false por defecto Plataforma actual, que es un cuerpo de carácter tres D esta vez en lugar de dos D, establecido en null por defecto, y una dirección de plataforma, que es un int, un entero, y eso solo se establece en uno por defecto, y esa nos pondrá yendo a la derecha. Bien. Entonces aquí, no tenemos que hacer nada necesariamente por el momento. Aunque podríamos seguir adelante e Y, sigamos adelante. Voy a establecer nuestro ID aquí o no ID, sino nuestro segundo parámetro, nuestra segunda condición, más bien, si ID es igual a uno. Entonces, si estamos en un bloque de agua, y nuestra plataforma actual es igual a nula, ¿verdad? Entonces básicamente, no estamos en la plataforma. En realidad cambiamos eso. Utilizamos plataformas de desuso. Entonces dijimos plataforma falsa. Entonces esa es solo una forma más corta de hacer todo aquí. Entonces, si estamos en un bloque de agua y no estamos en una plataforma, morimos. Bueno, ¿cómo sabemos cuando estamos en la plataforma? Bueno, cuando saltamos a nuestro registro, que debería renombrar eso solo siendo plataforma. Hacer GD en lugar de registrar. Entonces solo dame un momento ahí. ¿Todo bien? Todo parece funcionar, y seguí adelante y le renombré plataforma De esa manera, si quiero crear pequeños discos para representar mis no ranas, las tortugas, puedo seguir adelante y hacer eso aún usando el mismo guión Entonces lo que estamos haciendo es como íbamos por aquí, tenemos una plataforma es falsa, entonces moriremos si estamos en el agua. Entonces llegamos a cambiar de plataforma a True. Entonces, una vez que nuestro Brogi entre en esta área, sigamos adelante y pongamos la plataforma a true Uy, yo masacré ese pedacito. Es plataforma corporal. Entonces quieres acceder a la variable de plataforma que está en el cuerpo tocándola, que por supuesto va a ser nuestro jugador. Y nuevamente, si quieres tener mucho cuidado aquí, puedes decir jugador en nombre de punto corporal y tabular todo en. Eso estaría bien aquí. A la plataforma encarnada equivale a verdad. ¿Todo bien? ¿Y qué más tenemos? Bueno, vamos a ver. Plataforma actual. Bueno, si miramos hacia atrás a nuestra versión dos D si nuestra rana está viva durante nuestra sección de procesos, entonces también tenemos una comprobación para plataformas de curva I no iguales a nulas. Y luego movimos nuestra rana, ¿verdad? Entonces cambiaríamos nuestra posición punto X igual, y luego tuvimos un poco de matemáticas aquí. Teníamos nuestra dirección de plataforma. Veces nuestra velocidad, que solo voy a ir con uno para que podamos hacer coincidir nuestros registros, y podamos volver y cambiarlo más tarde. Y luego multiplicamos eso por Delta. ¿Bien? Entonces, si nuestra plataforma actual no es nula, quiero decir, deberíamos estar parados en una plataforma, ¿verdad? Entonces nos iremos moviendo. Deberíamos estar moviéndonos con la plataforma. ¿Bien? Entonces vamos a entrar en nuestro tronco, y cuando el cuerpo entre, vamos a decir cuerpo puntear su plataforma. Asegúrate de que lo deletreé bien. Por plataforma, sí. Y qué puso eso igual a uno mismo. Ahora, recuerda tu bitácora. Tu registro aquí debería ser un cuerpo de personaje tres D. Voy a seguir adelante y solo reabrir el mío aquí Yo no cambié nada. Interesante. Debe tener que reiniciar el proyecto. Mi tronco es un cuerpo de carácter tres D. Y, por supuesto, el ion ver el tronco y el área tres D, que está despertando nuestra lágrima Bien, entonces veamos qué pasa. Es solo nuestro registro. Sigamos adelante y corramos el juego de llantas aquí. T corre y coge esos registros, vemos que se mueven, se suben y morimos. Bueno, eso es interesante. ¿Por qué sucedió eso? Bueno, eso pasó porque en realidad nos estamos moviendo demasiado rápido. Oh, ese es el dos D uno está arriba por alguna razón. Sí, baja, y eso es porque nuestra muerte está ocurriendo demasiado rápido. Necesitamos tener un poco de pausa ahí para que tiempo suficiente para que cosas como nuestra plataforma, eso cambien en el medio. Entonces es solo tener una espera, obtener árbol, gran temporizador y 0.2 debería ser todo lo que necesitamos. Sé que usamos 0.1 en dos D, pero fue 0.1 lo intenté, y no fue suficiente. Entonces vamos a ir con 0.2. Y si seguimos adelante e intentamos eso ahora, deberíamos poder Ooh. ¿Qué pasó ahí? Oh, es porque envié posición punto X es igual Intención a más igual. Aquí vamos. Ahora vamos a subirnos a este registro. Puedo seguir adelante y cruzarlos. Fantástico. Y en cuanto me baje, bueno, si me subo a este lugar de aquí, Oh. Bueno, no estamos seguros porque nunca hemos calculado salir de la plataforma. Esto significa que también nos estamos moviendo permanentemente para siempre hacia la derecha, así que sigamos adelante y arreglemos eso. Cuando nos bajamos de la plataforma, obviamente necesitamos revertir estos. Entonces plataformas falsas y nuestra plataforma actual, va a volver a ser nula. Y solo ese cambio para resolver este andar a lo largo. Oh. Y ahí acabamos de morir. A, bueno, eso no es. Eso no es genial. Averiguemos por qué. Bueno, si recuerdas, de vuelta en la versión dos D, teníamos Bueno, dos cosas más que faltaban de esto. El primero, cuando entra nuestro cuerpo, en realidad teníamos otro temporizador, y eso solo está configurado en 0.1, lo cual está bien. Nosotros ahora cuando entramos, nos subimos. Ahí vamos. Y podemos saltar a través sin que nos maten. Y en cuanto saltamos al agua, que sería nuestra zona de viento, nos matan. Salta a través, y en el agua, morimos. Y sigue pasando cuando nos atropellan nuestros camiones. Fantástico. Entonces todo sigue funcionando bien. Este tíber es suficiente para arreglar ese pequeño error que tenemos Genial. Y lo único que nos quedaba es que creo que creamos una función para establecer la dirección aquí. Entonces eso simplemente dependería bastante de si vamos a la izquierda o a la derecha, lo que estamos estableciendo un gran. Y esa sería la dirección en la que podemos pasar. Lo cual para este registro es cero en este momento, pero sería uno. Y en este caso, en nuestro script de jugador, podemos seguir adelante y crear esa función, dirección funet, y tomas un ID, que es un int y solo tienes nuestra dirección de plataforma es igual a ID, lo llamamos IDA, creo que lo llamamos DR, así que vamos a mantenerlo ahí DR. Y luego en nuestra plataforma, podemos seguir adelante y body dot set direction y pasar en nuestro dirección. Bien, entonces ahora, no importaría en nuestra jugada si entramos aquí y cambiamos la dirección de la plataforma a, ahí vamos, 8,967 No haría ninguna diferencia porque eso se establecerá una vez que saltemos a un registro real aquí. Ahí vamos. Entonces, si nuestros registros iban en la otra dirección, entonces vamos a la derecha, seguimos terminando. ¿Cómo sigue pasando eso? Entonces entramos ahí. Entonces, si establecemos esto a uno negativo, eso también sería negativo en nuestra velocidad aquí. Entonces podríamos simplemente cambiar esto por completo y decir dirección tiempos Delta por el momento, pero podemos ver que la bitácora se mueve en dirección opuesta. Y la única razón por la que cambiamos un registro específicamente. Por ejemplo, podemos entrar aquí y poner éste en negativo, también. Ahora tenemos dos registros que van en la otra dirección. Bueno, deberíamos. ¿Por qué esta no cambió? Conseguí el registro correcto. Eso es negativo. Mm. Hmm. Vamos a tener que seguir adelante y leer ver. Eso está bien. Vimos que los troncos se mueven completamente en la otra dirección? Y vamos a seguir adelante y configurarlo para nuestro registro principal aquí. Y podemos ver que van por ese camino, nos subimos y nos estamos moviendo de esa manera. Bien, entonces todo lo que necesitamos ahora es si quieres, puedes crear pequeños discos a una escala de dos para representar tus pequeños obstáculos o almohadillas de lirio o lo que quieras hacer con ellos Y básicamente solo usa este script y establece la dirección. Ahí vas. Esta nuestras pequeñas plataformas pasando ahí. Para nuestras bitácoras. Y estos esponsores podemos seguir adelante. Sólo tienes que ir a llamar establecer estas posiciones aquí. Así que recuerda, vamos a alternar en cada lado. Izquierda. Y luego a la derecha. ¿Bien? Ahora, todo lo que necesitamos es un spawner Configurar. Y para eso, veamos. ¿Podríamos usar nuestros scripts de spinner? Bueno, esos son vehículos, así que en realidad no tendría sentido en términos de ese código. Pero el resto, parece que tendría sentido. Eso es lo que estamos nombrando aquí, dirección correcta. Sí. Así que podríamos usar el mismo código de spinner y simplemente crear más de estos hilanderos Y eso es perfecto bien. Creo que lo hacemos. Adelante y crea este engendrador Es este SponnorCinco, despeja tu vehículo, encuentra mi registro, tráelo Y es posible que en realidad tengamos que establecer, solo voy a ejecutar esto muy rápido. Creo que también tenemos que establecer la rotación de nuestra bitácora. ¿Dónde está mi bitácora? Estoy un poco confundida aquí. Sí, bien, ahí está el registro. Va completamente vertical. Entonces tendríamos que configurarlo. Bien, así que vamos a seguir adelante y crear un nuevo script luego spawner plataforma ya que tenemos que ajustar algunas cosas con Así que hemos seguido adelante y básicamente tenemos las mismas cosas aquí aunque tenemos plataforma y plataforma de generación, instancia de plataforma PI Oh, eso se ve bien. Déjame ir con mi patrocinador y sacar la escena del registro. Nuevamente, plataforma. Yo. Y ahora tenemos que echar un vistazo a nuestros registros aquí. ¿Cuál es la rotación que la tengo establecida? Y se establece en nueve negativo. ¿Bien? Entonces tenemos que asegurarnos de establecer eso. Entonces digamos rotación de punto pi Podemos hacer eso, bien. Es una rotación R Y es igual a 90 negativo. Y vamos a ver si ese esponsor está trabajando. Recuerda a ese sponer de aquí abajo. Mate sobre un cierre tipo int. Entonces solo tuve la idea. Ahora, antes que nada, la metí completamente en la pata. Estaba tratando de cargar en la escena de registro equivocada. Estaba tratando de cargar desde las dos D en lugar de las tres D, así que eso es parte de por qué estaba recibiendo algunos errores. Pero luego en nuestra plataforma aquí, podemos seguir adelante y solo podríamos dentro de nuestro listo aquí, seguir adelante y simplemente establecer nuestros grados de rotación aquí. Si quisieras hacer eso, podrías. Solo ojalá eso no afecte a ninguna de las otras plataformas que crees más tarde. Pero sólo para bien, prevenir eso. En realidad, supongo que en realidad no lo impediría porque va a llegar a la misma situación. Va a desovar y ser rotado. Yo sólo voy a seguir adelante y bajar uno. Solo voy a seguir adelante y ponerlo aquí en mi lugar así que solo estamos tomando plataforma i BI instantánea y configurando grados de rotación, y lo estoy configurando en un vector tres, que son solo tres piezas de datos, ¿verdad? X, Y y Z, o en color, sería como RGB, ¿verdad? Entonces cero, negativo 90 y cero, y esto ahora lo posiciona correctamente sobre la orientación, diría yo. Entonces ahora solo tenemos que hacer que nuestros troncos se muevan en la dirección correcta. Yo así como el Pozo, dirección correcta así como la posición del esponsor Entonces para eso, simplemente voy a mirar más o menos dónde están establecidos mis registros. Entonces ejemplo, éste, el transformar aquí, negativo 29 y negativo uno. Eso es bastante bueno. Posición, negativo 29 y negativo uno. Ahora ese registro, puedo eliminar completamente y podemos tener otro sponnor con esta transformación, que sería negativo cinco y negativo 29 también Esto es negativo 29 y negativo cinco. Aquí vamos. Ahora ese registro debería poder ser eliminado, y aún deberíamos tener a nuestros dos patrocinadores de registro de la derecha, yendo hacia la izquierda. Excepto que mi dirección está apagada, así que en realidad nos estamos moviendo fuera pantalla continuamente hacia la izquierda. Bien, así que sigamos adelante y no tienes que hacer esta parte, claro, porque si estás creando diferentes plataformas, vas a tener tus tortugas yendo a la izquierda, tus troncos yendo a la derecha Entonces eso va a estar perfectamente bien. Pero como solo voy a usar los registros aquí en lugar de crear múltiples cosas en este momento, solo voy a crear una variable para dirección. Por defecto, solo configuraremos eso en uno. Y cuando los genere en, voy a decirlo diconolrecon Pongo estos dos a los generadores de un candado negativo, deberían ir a los ahora mismo Entonces como el desove en ojalá estén desove aquí Ahí están. No. Bien, ¿dónde están mis bitácoras? No, el registro está aquí. La dirección es negativa, por lo que debería ir en la otra dirección. Oh, puse los registros de esa manera. Vaya, entonces eso fue un error de mí. Y mejor ponerlos todos en uno negativo por defecto, entonces. Y tenemos este tiempo de plataforma aquí, lo cual es un poco molesto, pero ahí vamos. Ahí están mis registros yendo por ahí. Y solo puedo poner tres en el otro lado y tener uno negativo como su dirección. Entonces voy a hacer eso bro. Bien, así que solo configuré a mis patrocinadores en el otro lado, para que podamos seguir adelante y ejecutar el juego, cruzarlo. Todos estamos bien. Y solo esperamos a que aparezcan estos registros, y veremos si podemos saltar todo el camino a través, aunque vamos a morir cuando lleguemos a lado porque aún no tenemos nuestra condición de viento. Entonces a este ritmo, sí, creo que me gustaría acelerar mis registros ahora, seguro. Y tengo que restablecer esas direcciones para tres, cuatro, cinco. Yo creo tres, cuatro, cinco, eso es positivo. El ser negativo ahora. Impresionante. Y dije que quería cambiar el guión decir tiempos de dirección. Hagamos tres. Veremos qué tan rápido es eso demasiado rápido, bajaremos a dos. La parte superior a través. Veamos qué nos darán tres. Troncos. ¿Dónde estás? Bien, tres no tan mal. Podemos seguir adelante y subirnos ahí. Y ahora, mi ranita no se mueve demasiado no se mueve lo suficientemente rápido Estoy como que saltando por aquí. Mantente atrapado. Tenemos que arreglarlo. Aquí vamos. Podríamos cruzar, y eso sería un pozo, una victoria teórica. Entonces en mi jugador. Yo sólo voy a seguir adelante y cambiar ese uno, dos o tres, porque creo que me voy a quedar con tres. Pruébalo una vez más. Sólo para asegurarse de que todo va bien. Tráeme mi bitácora. Aquí vamos. Y ahora nuestra velocidad coincide con arriba. Puedo saltar al siguiente registro. Caca Poo. Aquí vamos. Bien, para que podamos cruzar todo el camino. Excelente. Y todo está funcionando. Tenemos nuestras plataformas funcionando, y ahora todo lo que tienes que hacer si quieres crear tus tortugas, haz lo mismo Simplemente puedes crear tu pequeña lanza a lo largo de los años, ¿verdad? Tus pequeños cilindros y los aprieta como pequeños discos, para luego tener un área así, solo el lugar que cubre el medio para esa detección Y así, tendrás una nueva plataforma todo configurado. Bien, así que eso lo hace por nuestras plataformas de agua. Y a continuación, creo que tenemos nuestro winspace. 55. Corrección de fugas de memoria: Todo bien. Entonces antes de saltar a nuestra condición de viento, ahora que tenemos nuestros vehículos y plataformas están todos hechos, volvamos de nuevo a esta fuga de memoria, donde tenemos infinitas plataformas y vehículos que se mueven constantemente en el vacío y constantemente ocupando memoria. Sigamos adelante y nos deshagamos de ellos cuando ya no los necesitemos. Bien, así que sigamos adelante y abramos nuestro script de plataforma y nuestro script de camión o vehículo. Y vamos a resolver esto exactamente de la misma manera, muy simple. Dentro de nuestro proceso aquí para nuestro camión, vamos a seguir adelante y solo lo vamos a hacer si nuestra posición global punto X es mayor que 436 o por muy amplia que sea, ¿verdad? muy amplia que sea tu ventana, voy a decir más 100 es sobre el espacio que estamos dando o punto de posición global X menos que negativo 100, auto punto libre, y vamos a hacer lo mismo para nuestras plataformas. Y vamos a ejecutar esto y ver si tenemos algún problema aquí. Bien. No nos estamos topando con ninguna. Y vamos a ver ¿en qué momento nos deengendran? Bien. Ahora, recuerda que 100 off quite va a ser muy diferente que en dos D. Así que probablemente deberíamos bajar eso de 100 trabajar contigo Entonces probemos diez Así que digamos 346. Tenemos un intento y feo mirando plataforma ahí. Pero vamos a copiar eso a nuestra camioneta. Así es. Vea nuestros camiones desove en Por otro lado, eso no es suficiente espacio. Podemos ver nuestros camiones y nuestras plataformas glitching ahí fuera. Por lo que claramente necesitan más espacio que eso para los diez negativos aquí. Entonces vayamos con 20 negativos y veamos si eso es suficiente espacio para ellos. No es suficiente para nuestros camiones. No parece que sea suficiente para plataformas, pero no. Así que ahora solo estamos marcando. ¿Entonces ese 100 negativo parecía un poco ridículo, aunque? Intentemos el negativo 50. Sólo vamos a marcar esto. Vea si nuestras plataformas son capaces de generar. Y nuestros camiones van más rápido, sin embargo. Entonces veamos si pueden desaparecer en pantalla aquí. Si tan solo abrimos esto para que podamos ver el exterior de él. Bien, entonces los camiones van una distancia más justa. Verás, desaparecen justo por aquí. Se trata de dónde deberían estar desapareciendo nuestras plataformas también Y al otro lado, simplemente siguen y van y van. Bien, entonces agregaremos 50 estamos de ese lado, 346. ¿Cómo es el 336? 336 tiene que estar bien. ¿Desaparecerán los camiones? Van a desaparecer en algún momento, eso es lo importante. Pero si quieres entrar y marcar este lado hacia abajo ahora, desde luego, adelante y haz eso. Pero lo importante es que tenemos nuestros objetos borrando, así estamos liberando la memoria con los objetos que ya no necesitamos Entonces con eso, hemos solucionado el problema de memoria que teníamos en la versión dos D que ahora teníamos la versión tres d. No me olvidé de ello. Solo lo estaba posponiendo y primero vamos a conseguir nuestros componentes principales. Bien, vamos a saltar a esa única condición. 56. Gana espacio: Bien, sigamos adelante y creamos el espacio de viento para nuestro jugador. Yo como que aclaro todas estas áreas a medida que avanzamos. Entonces vamos a necesitar nuestro guión de jugador, y tengo un winspace aquí que creé Es sólo un área tres D, y voy a cambiarle el nombre para ganar espacio. También tiene una forma de colisión tres D que agregué. Su forma es una caja, y para que coincida con todo lo demás, le dimos una escala de dos en nuestros tres ejes. Entonces ahora debemos encajar con cualquier lugar en el que lo coloquemos. Sigamos adelante y agreguemos un guión a esto, nuestro script de espacio eólico. Y esto también va a tener un par de señales conectadas a él. Va a ser nuestro cuerpo ingresado. Y creo que en realidad eso es todo lo que vamos a necesitar aquí. Y en nuestro jugador, aquí es donde agregamos en nuestro nuevo estado, nuestro estado ganador, lo que significa que tenemos otra condición LSF aquí abajo, LF estado actual iguala estado, ganar y esto haríamos nuestro repot y luego estableceríamos zona de victoria, creo que es lo que la llamamos Adelante y suma nuestra nueva variable, nuestra zona de ganar y ganar. Eso es un toro fijado a caídas por defecto. Y veamos, en nuestra muerte, decimos si ID es uno y plataforma es falsa, y zona de viento es falsa, así que no estamos ganando. Entonces no estamos en el espacio del viento. No estamos en la plataforma, y estamos en el agua, entonces terminamos llamándolo muerte. Excelente. Y vamos a ver. En nuestro espacio eólico, llamamos dos cosas. Necesitamos obtener nuestra zona de viento de punto corporal. Es igual a verdad. Y entonces nuestro segundo lugar es establecer nuestro punto corporal de estado actual, estado actual es igual a ganancia estadística y asegúrese de que escriba eso bien. Estado actual, creo que sí, pero voy a copiar y pegar solo guardar identificador estado no declarado alcance actual, ¿verdad? Body stay dot win. Ahí vamos. Y por ahora, eso debería hacer eso realmente no debería hacer nada. Entonces en nuestra muerte, vamos en realidad vas a decir “print dead”. Así que solo nos aseguraremos de que todo se active de la manera en que debería Responder imprimir la palabra responder. Y en nuestro winspace Bueno, también necesitamos establecer la zona de viento de nuevo a Walls Pero también imprime Win. Y podemos seguir adelante y probarlo. Ya podemos ir a nuestra escena principal. Principal, instancia en con este pequeño icono de la cadena, ¿recuerdas? Y sólo tienes que seguir adelante y realizar una búsqueda de tu winspace. Tráelo. Ganchos. Aquí está el mío. Respaldarla. Van a ser dos espacios de viento para estas zonas. Para que se ajuste a todo el asunto. Impresionante. Y ahora solo lo duplicamos. Segunda ranura. Y yo sólo voy a seguir adelante todo el camino. Llenar todas mis zonas. Todo bien. Así que he posicionado todos mis pequeños posicionados todos mis espacios de viento. Sigamos adelante y veamos asegurarnos de que nuestro texto se esté imprimiendo correctamente en nuestra consola. Déjame arreglar ese juego ahora. Estoy de vuelta a una pequeña cosa. Aquí vamos. Bien, así que vamos a ver Nos aplastamos por un auto. Nos morimos y respondemos. Excelente. Bien, saltamos al agua, y morimos y respondemos. Nos subimos al tronco. Estamos bien. Pad, y estamos bien. Tortuga, tronco, almohadilla, tronco. Y saltamos adentro. Conseguimos una victoria. Veo una victoria, reaparición, muerta, reaparición. Eso no suena como como se supone que debe ir. Hagamos nuestro camino de regreso. Adelante y deténgalo aquí. Para que pueda aclarar que va ahí. Y continuar con esto. S. Bien, hasta ahora tan bien. Saltamos adentro. Conseguimos una victoria, una reaparición, una muerta y una Bien, así que eso no es genial. Eso significa que tenemos un bicho ahí dentro. Deberíamos haber conseguido una victoria y una reaparición. No debimos haber conseguido un muerto. Creo que nuestra reaparición aún no se ha disparado. No ha cambiado nuestra posición ni nada de eso. Deberíamos establecer nuestra colisión primero. Sí. Muerte recordando. Entonces lo único que puedo pensar en este momento es posiblemente algo aquí. Pero intentaremos con solo deshabilitarlo antes. A ver si eso funciona. Ya lo averiguaremos. Mis bitácoras, vamos. Esto es probablemente lo único que más me disgusta de probar Constantemente está haciendo lo mismo una y otra vez. Y esperamos una bitácora. Ahí va. Cuando Respawn entonces conseguimos un muerto y reaparece. Bien. Entonces voy a probar algunas cosas y ver cuál de estas lo arregla. A lo mejor solo será tal vez vuelvo en 2 segundos. Y veamos dónde está aquí la fuente. Yo Bien, tuve que mirar a los dos D versus, ver qué podríamos haber hecho para haber resuelto eso Y solo estaba un breve retraso aquí en la parte superior de heckll ID Teníamos un pequeño temporizador 0.1 antes de conseguir nuestra posición y todo aquí. Entonces ahí tienes. No es gran cosa. Pero con eso, verás que ahora podemos seguir adelante y saltar por toda la pantalla. Disfruta siendo un poco ranita. Vamos. Saca los troncos. Vamos. Aquí vamos. Nos subimos al tronco. Esperamos a las tortugas pequeñas o a las almohadillas de lirio, lo que quieras que sean el tronco, el siguiente pad, el tronco y la zona de viento Aquí vamos. Conseguimos una victoria y respondemos, no hay muerte. Oh, me topé con esa camioneta. Y Z, todavía morimos si saltamos al agua. Bien. Entonces ahí vamos. Ahora tenemos nuestro espacio eólico todo instalado y lo último que debemos hacer. ¿Se supone que debo poner un sistema de puntuación y nuestra cabaña otra vez Y entonces tendremos nuestra versión tres D todo configurado. 57. GUI de partituras y temporizador: Bien, entonces aquí vamos a seguir adelante y conseguir el puntaje vidas y nuestro Hud todo configurado, y esto va a ser mucho más fácil porque podemos reutilizar el HUD que creamos en la versión dos Entonces lo principal que vamos a hacer es que vamos a reutilizar nuestro global. Entonces usamos algunos de los TD. Y solo vamos a tener que renombrar parte de nuestro camino aquí, y podemos hacer que esto funcione tanto con la versión dos D como con la versión tres D si quisieras. Pero básicamente vamos a usar el mismo guión. Entonces, si tienes tres versiones D y dos versiones D en dos proyectos diferentes, puedes seguir adelante y simplemente copiar ese script y luego dirigirte a la configuración de tu proyecto y configurarlo como un autotoloa Todo Entonces para que esto funcione en tres D para global. Ahora se nota el mío dice principal para el nodo raíz de mi escena principal tres D aquí, que es un nodo tres D, y en dos D, era un nodo dos D. Así que voy a seguir adelante y volver a cambiar el nombre de esto a Min porque así es como me llaman, y voy a seguir adelante y reemplazar eso en Actualizar Vidas, así como actualizar puntaje. Bien. Y para nuestro Guy, voy a dirigirme a la versión dos D, abrirla otra vez. Y solo voy a hacer click derecho solo no tener que volver a recrear al Guy, ya que simplemente va a ser exactamente lo mismo Sólo voy a hacer click derecho y seleccionaré la opción. ¿Dónde está? Guardar sucursal como se ve. Y cuando haces eso, deberías tener una opción. Deberías tener esta pantalla emergente aquí y puedes seguir adelante y guardarla. Voy a entrar en mi rana o escena tres D aquí y simplemente volver a guardar la escena de Gooey Todo bien. Y eso es todo lo que necesitamos de los dos D. Y claro, no tienes que hacer eso. Puedes seguir adelante y recrearlo. Simplemente agrega la capa del lienzo, el progreso de la textura, las etiquetas y todo de nuevo. Si eso es lo que querías hacer. Voy a seguir adelante y agregar esto ahora, agregar mi escena de Guy. Y fíjense que no podemos verlo aquí. Si estás recreando tu Guy desde cero, vas a tener que dar click en la opción dos D aquí y echar un vistazo y recrearla de esta manera porque la capa de lienzo es un objeto dos D, Algo renderizado a la pantalla encima de todo lo demás, pero es dos D independientemente de si el resto de los componentes son dos D o tres. Entonces, si tuviéramos que ejecutar esto ahora mismo, podemos ver que todo está en la cima y como debería ser. Así que solo recuerda si estás creando esto tú mismo, tenlo en cuenta. Si vas a recrear esto, puede que tengas que ejecutar el juego para darte una buena estimación de dónde están las cosas Y lo bueno es, es que si quería entrar aquí y editar algunos de estos componentes, podría entrar y mover las cosas como, y se puede ver actualización en vivo en el juego. Así que siempre podrías asegurarte de que tienes cosas en posición que Bien. Voy a dejar de correr el juego ahí. Entonces, si recreas al Chico, solo voy a seguir adelante y mostrártelo aquí mismo otra vez Mano esta capa en la parte superior. A las etiquetas para la etiqueta y el texto de la partitura. Nuestra barra de vidas es un progreso de textura, y tenemos esas texturas Frogger lives que puedes traer como textura de progreso si abrimos texturas aquí para el progreso Tenemos una barra de temporizador, que, de nuevo, es lo mismo. Es solo una barra de progreso de textura, y tiene el rectángulo cuadrado verde, cualquiera que sea el que haya creado, solo para usar como barra aquí Tenemos una etiqueta que solo dice tiempo para que el usuario sepa qué es esto, y tenemos un nodo temporizador con el tiempo de espera predeterminado de un auto statrt encendido, y la señal de timeout está conectada hasta nuestro Guy que tiene un script Nuestro guión de Guy es simplemente en tiempo de espera. El valor de la barra del temporizador es menos igual a uno. Entonces esto hará que nuestro bar baje continuamente. Y luego si el valor es cero, entonces obtenemos nuestro nodo jugador llamado muerte en él, y luego restablecemos la barra a 30. Todo bien. Ojalá, con eso, tuviste tiempo suficiente para guardar tu Gui como esta en escena, traerla o recrearla Y voy a señalar aquí que en la barra Vidas, nuestro modo de película es de izquierda a derecha, y en nuestra barra de temporizador, es de derecha a izquierda. Todo bien. Pero una vez que tengas esas dos cosas establecidas, recuerda en nuestro Global, tenemos que cambiar esto de no TD a lo principal. Y eso es sólo porque el mío está etiquetado como principal. Podríamos simplemente etiquetarlo no dos D. Será confuso, pero podría. O si lo dejaste por defecto, entonces en vez de principal aquí, estarías escribiendo no a tres D. Muy bien. Entonces, ¿cuáles son las cosas que tenemos que cambiar? Bueno, eso va a estar en nuestro jugador aquí y en nuestro WindSpace Pero comencemos con el jugador. Eso va a ser recordado cada vez que nos movemos hacia arriba, eso va a estar en nuestro movimiento aquí. Es cuando subimos, obtenemos puntos, ¿verdad? Entonces accedemos a nuestro mismo global o si lo copiaste, actualizamos puntaje, y en las dos D, fuimos por diez puntos. Después a la muerte, seguimos adelante y tenemos que actualizar nuestras vidas. Así que la actualización global Vidas. Y esto se fijó en menos uno. Y lo último que actualizamos en DEF es nuestra barra de temporizador. Así que con esto, tendríamos que conseguir nodo, ¿verdad? Y tendríamos que recordar a nuestros jugadores, vamos a subir a nuestra vena, así que obtén el nivel de padres, y luego podemos llegar hasta que nuestro Guy obtenga un nivel de padres y luego consigamos a nuestro Guy. Y luego a partir de ahí, podemos agarrar nuestra barra de temporizador aquí. Barra de temporizador. Solo asegúrate de que deletreé bien. T mayúscula, B mayúscula, valor del punto de la barra del temporizador es igual a 30. Bien, así que eso se restablecerá. Y ahora sólo tenemos que ir a nuestro Winspace aquí. Y en nuestro espacio eólico, solo tenemos que hacer nuestras pocas semanas baratas aquí. Así que necesitamos actualizar nuestro valor multi rana. Entonces nuestro multi frog plus equivale a uno. Recuerdas en nuestro global, la forma en que funciona Frogger, aumentamos nuestra rana múltiple, y una vez que llegamos a cinco ranas múltiples, obtenemos un bono de 1,000 cuadrados, y luego nuestra Multi rana se restablece de nuevo a cero El espacio del viento, ¿verdad? Entonces agregamos a nuestro multiplicador ahí. Agregamos a nuestra puntuación SOE Global dot update, y vamos por 40 puntos aquí Y luego recuerda que también teníamos el bono del temporizador. Entonces, en base a la cantidad de tiempo que nos queda, obtuvimos puntos adicionales agregados a nuestro puntaje. Así que sigamos adelante y consigamos el bono de tiempo. Eso era VR y acabamos de llamarlo bono de tiempo. Esto era un entero, lo dijimos igual a nodo y tuvimos que subir uno, conseguir a nuestro padre, correcto, y luego nos llevará todo el camino hasta nuestro nodo principal en la parte superior. Entonces podemos conseguir a nuestro Guy y conseguir el temporizador Bar. Y queremos que el valor de eso multiplicado por diez sea lo que estamos usando. Eso nos da un bono máximo teórico de 300 puntos, pero eso supone que se sube ahí en menos de un segundo, no va a suceder. Y eso nos da un bono mínimo, asumiendo que te queda 1 segundo de diez puntos. Entonces otra vez, eso es bastante decente en el aguinaldo, en algún lugar 10-300 Aunque de manera realista, probablemente va a ser más 10-200 Todo bien. Y ahora que tenemos nuestros puntos de bonificación, podemos seguir adelante y actualizar, volver a llamar a la actualización de nuestro puntaje, puntaje de actualización global de puntos y usar nuestro bono de tiempo. Ahora, pasando por esto de nuevo, claro, podríamos hacer bono de tiempo más nuestro 40 para la puntuación de actualización. Si quisieras combinarlo todo en uno en lugar de llamar a nuestro puntaje de actualización dos veces. Ya sabes, preferencia personal, y eso es algo que puedes hacer por tu cuenta. Cuando hablamos de código limpio y darte la posibilidad de volver y breve código de actor y limpiar áreas que crees que tal vez son un poco desordenadas Entonces vas a tener esa opción más adelante. Y lo último que tenemos que hacer es restablecer nuestra barra del temporizador a 30. Así que sólo vamos a conseguir nodo, en nuestro padre en el Gooey, obtener la barra del temporizador, agarrar el valor Sólo voy a copiarlo ahí y solo restablecerlo a 30. Todo bien. Y así como así, nuestro juego debería funcionar con nuestros viejos guiones globales y Goey y verificar Cada vez que voy hacia adelante, gano un punto. Muero, pierdo una vida. T se restableció. ver si podemos hacerlo a través, envolverlo en nuestro tronco o pasar el rato, de da de dah. Empezamos a saltar a través. Y nos metemos en nuestra zona de viento, veamos qué vamos a tener. Pasó de 180 hasta 320. Entonces conseguimos un bono bastante bueno ahí en nuestro tiempo. El tiempo se restableció, y recuperamos una de nuestras vidas. Entonces eso es fantástico. Todo parece estar funcionando perfectamente bien con la transferencia de nuestras cosas de tote. Entonces otra vez, Guy, esa es una capa de lona. Con una etiqueta con una etiqueta de partitura, una etiqueta con un texto de partitura. Nuestra barra de Vidas es un progreso de textura, y establecemos la textura de progreso a nuestra textura de vidas, déjame obtener el nombre exacto de la barra de salud punto PNG. La barra del temporizador, acabo de llamar a Tr punto PNG. Es otra barra de progreso de textura, y la textura de progreso se establece a través del temporizador punto PNG. Entonces tenemos una etiqueta la palabra tiempo al lado de eso. Tenemos un nodo temporizador con inicio automático activado con un tiempo de peso predeterminado de 1 segundo. Tiene la señal de tiempo de espera conectada hasta el guión de Boy. En el tiempo de espera en nuestro guión Gooey, restamos uno del valor de nuestra barra de temporizador Y si nuestra barra del temporizador es cero, llamamos muerte al jugador y reiniciamos a 30. En nuestro jugador al morir, llamamos Actualizar vidas en nuestro global que estábamos usando de los dos D es menos uno, restó También conseguimos nuestra barra de temporizador así que subimos uno, conseguimos padre. Después pasamos por nuestra GUI hasta la barra del temporizador, accedemos a la propiedad de valor. Lo configuramos 30, y cuando nos movemos hacia arriba y solo cuando subimos, accedemos nuevamente a nuestra función global, actualizamos la función SCOR y pasamos en diez puntos Y nuestro guión global volverá echar un vistazo a esto por si acaso alguna razón por la que no pudieras encontrarlo en tuyo por cualquier motivo. Aquí tienes. Así que tenemos un par de variables de las puntuaciones más altas un entero establecido en cero por defecto, multi frog, un entero, cero por defecto. Vidas, lo estableces a seis por defecto, otra vez, otro entero, y multiplicador es un entero establecido en uno, nuestra función update score toma un parámetro de nueva cantidad, que es un entero. Y tenemos nuestro ILS verificar si multi frog menos de cinco, entonces solo anotar más es igual a nuestra nueva cantidad. Entonces solo agregamos la nueva cantidad a nuestro puntaje si no tenemos los cinco multiprogs Entonces la única manera que podríamos tener aquí es si tenemos cinco o más, entonces en lugar de agregar la nueva cantidad, sumamos 1,000 puntos y reasentamos Multi frog a cero Y luego verificamos si la puntuación dividida por 10,000 veces nuestro multiplicador es mayor o igual a uno. Entonces actualizamos nuestras vidas, llamamos función de actualización de vida y le agregamos una, y establecemos nuestro multiplicador, más es igual a uno. Bien. Ahora, después de eso, fuera de esos bloques FL, obtenemos nuestro texto de partitura, y simplemente actualizamos el texto con nuestra nueva partitura, y convertimos nuestra partitura en una cadena, y llamamos ceros PAD, y agregamos cinco de ellos Eso nos va a dar nuestro acolchado aquí en la parte superior. Asegúrate de que siempre tenemos los cinco de estos ceros, aunque nuestro puntaje sea de solo un dígito Entonces nuestra actualización de la función Vidas, tenemos una cantidad como parámetro, que es un entero. Si las vidas son cero, vamos a conseguir Tree y recargar la escena actual, manera efectiva reiniciando De lo contrario, vamos a hacer Vidas más la cantidad igual, y vamos a obtener nodo, subir a nuestro padre, bajar nuestro nodo principal, bajar nuestro Hoey, a nuestra barra de Vidas, obtener el valor y agregar más es igual a la cantidad por la que estamos actualizando nuestras vidas Bien. Entonces ese es nuestro guión global, nuevamente, si no lo captaste o no lo pudiste encontrar, alguna manera lo perdiste. Ahí vas. Ahí está de nuevo, recorrido rápido, así como el guión de Goey y la configuración de Gooey en la escena como puedes ver Como los pequeños cambios que agregamos a nuestro jugador para que todo funcione. Y si por alguna razón estás luchando por habilitar tu global, si lo reescribiste y lo trajiste, déjame ver si puedo capturar eso muy rápido Entonces subes a tu proyecto, ingresa a la configuración de tu proyecto. No autocargues, presiona este pequeño botón aquí y puedes seleccionar tu guión global desde la El nombre del nodo que automáticamente rellena aquí va a ser el nombre de tu script, que sería global. Y solo presionas el botón de anuncio y aparecerá aquí abajo. Solo asegúrate de tenerlo habilitado, y el nombre es como accedes a él. Por eso podemos escribir la palabra Global y tener acceso al guión. Pero ahí tienes. Ahí está nuestro sistema de puntuación, el bono del temporizador y el Gei todos se han agregado a nuestro juego Y ahora podemos seguir adelante y podemos jugar algo de Ride Boger. Y no tener ningún problema a medida que avanzamos. Todo bien. Entonces eso es todo con esto. Cuídense, tengan uno bueno, y podemos pasar a la semana siguiente. Si quisieras agregar audio , es lo mismo. Simplemente agregue un reproductor de stream y cargue en el que son todos MP threes o algunas ondas vv Expedientes. Sí, los dos P tres y los expedientes. Para que puedas seguir adelante y usar esos exactamente igual que los dos D. Simplemente agrega un reproductor de flujo de audio a tu escena principal y el fondo y tu tema principal para la música de fondo se envía a la reproducción automática Y para tu reproductor, puedes seguir adelante y simplemente agregar una transmisión de audio ahí dentro y cargar las fuentes de audio y reproducirlas como lo necesites de squish, punk y todo eso Exactamente lo mismo que es con los dos D. Así que si quieres agregar que te olvidaste, puedes volver ahí arriba. Semana tres, échale un vistazo. Pero creo que eso va a terminar para esta semana. Ahora tenemos una versión tres D de nuestro pequeño juego Frogger aquí, para que podamos cruzar la pequeña carretera y llegar a nuestra pequeña zona de viento, atravesar nuestras pequeñas plataformas, y ojalá no ser aplastados por los camiones 58. Qué es una API: Bien. Hola a todos. Y hoy, vamos a embarcarnos en el emocionante viaje hacia el mundo de las API. Si alguna vez te has preguntado cómo diferentes aplicaciones de software se comunicarán e intercambiarán información, este es el lugar perfecto para comenzar. Ahora, imagina que estás en un restaurante y quieres pedir tu plato favorito. Bueno, en el mundo de la programación, este proceso es similar a cómo funcionan las APIs. Vamos a sumergirnos y explorar juntos este fascinante concepto. En primer lugar, entendamos qué una API o qué significa API. API significa interfaz de programación de aplicaciones. Piense en ello como un menú o un conjunto de instrucciones que permita que dos sistemas de software hablen entre sí y compartan datos. Así como pides una comida a un mesero y un mesero lleva una solicitud a la cocina, la API sirve como intermediario que facilita la comunicación entre diferentes Entonces, para que este concepto sea aún más claro, vamos a usar la analogía del restaurante, que se ve en la pantalla aquí Entonces usted, el cliente, representa la aplicación de software, y la cocina representa otra. Ahora bien, esta podría ser tu propia herramienta que hagas, y quieres la otra aplicación, la cocina, tal vez siendo Spotify, por ejemplo, o Twitter o tal vez una base de datos de Aime, algo con lo que quieras hablar y obtener información. Bueno, quieres pedir una comida deliciosa, obtener la información, pero no tienes acceso a la cocina directamente. Entonces, en cambio, comunicas tu pedido al mesero que actúa como API en este escenario El mesero entiende tu pedido, lo lleva a la cocina, la otra aplicación de software en tu nombre La cocina prepara tu comida de acuerdo a tu solicitud y la devuelve al mesero. El mesero que actúa como API, luego te devuelve un plato recién preparado En el mundo de la programación, las APIs funcionan de manera similar. Definen un conjunto de reglas y protocolos que permiten que diferentes aplicaciones de software soliciten e intercambien datos sin problemas. Las API se pueden usar para acceder a datos de servidores web, integrar servicios de terceros o incluso interactuar con dispositivos de hardware. Entonces digamos que entras a un restaurante, ¿verdad? Te sientas en la computadora, lo que estás haciendo. Estás usando tu aplicación, y luego le dices al mesero o la API lo que quieres formateando los datos correctamente La API o Witter luego regresa a la aplicación de software de terceros, base de datos, sea lo que sea, obtiene esa información y luego se la devuelve. Entonces tienes la información para hacer como quieras. Entonces, en resumen, las APIs son como intermediarios que facilitan la comunicación entre diferentes sistemas de software Al igual que un mesero lleva el orden a la cocina y a un restaurante, permiten que las aplicaciones hablen entre sí, compartan datos y realicen diversas tareas sin necesidad de comprender funcionamiento interno del otro. Bien. Ahí lo tienes. Una introducción rápida a las API utilizando la analogía clásica de restaurantes Espero que la analogía te ayude a comprender el concepto fundamental de las APIs y su papel en el desarrollo de software Recuerde, las API son herramientas poderosas que permiten integración y colaboración sin fisuras entre varios componentes de software. 59. Cómo usar una API: Bien, todos. Oye, vamos a echar un vistazo a dónde conseguir una API, así como cómo es si podemos usarlas y específicamente la que vamos a usar en nuestro ejemplo de código para ayudar con el aprendizaje, va a ser la API de clima abierto aquí. Entonces, si sigues adelante y vienes aquí para abrir el clima, puedes seguir adelante y registrarte para obtener una cuenta, y podrías notar que quizás tengas que llegar a precios y realmente seleccionar un plan aquí, pero sí tienen un plan gratuito que te da 1 millón de llamadas al mes, 60 llamadas por minuto. Y podemos ver el clima actual y eso va a ser lo más importante aquí. Ahora, toda esta otra información y todas estas llamadas y todo, claro, siempre puedes sentirte libre de hacerlas, pero esas API son bastante caras. Obtienes muchas funciones y muchas más llamadas por minuto y por mes. Obviamente, en realidad no vas a conseguir nada cerca de eso. A menos que tenga una aplicación publicada públicamente que sea bastante popular. Entonces, para aprender y sobre todo si es una de tus primeras aplicaciones que estás publicando, el nivel gratuito probablemente sea mucho más que suficiente de lo que vas a necesitar. Entonces, si es necesario, siga adelante y suscríbase a eso. Ya tengo el mío, que, como ves, dice, consigue APIK Ahora bien, ¿cómo es que realmente usamos estas API? Bueno, si echamos un vistazo a la parte superior, vemos que tenemos guía aquí. Y da click en eso, dale un segundo por ello también. Ahí vamos. Nosotros aquí. Y es interesante que lo llamaran Llegué aquí. La mayoría de los lugares lo llamaremos documentación. Y aquí es donde debería estar donde podamos seguir adelante y usar el ven aquí abajo y echamos un vistazo alrededor, ver si podemos encontrar el segundo exacto para usarlo. Específicamente la torsión de clima abierto. Por llamada. Entonces aquí vamos. Entonces ahora estamos en la página aquí para la documentación específicamente para el clima aquí. Y podemos ver el concepto de producto. Tenemos nuestro como comenzar, pronóstico actual sobre datos meteorológicos. Tenemos nuestra llamada API aquí, que veo, necesitaremos una clave API para esta. Tenemos todos los parámetros enumerados aquí, cuáles son requeridos, qué es opcional. Y luego tenemos un ejemplo de una llamada API aquí. Y un ejemplo del tipo de respuesta que obtendríamos. Ahora, cuando obtenemos una respuesta como esta, estamos obteniendo una respuesta JSON. Y si miras de cerca, podemos ver que son muchos pares de valores clave. Para que podamos tratar esta respuesta y sacar información de ella de la misma manera que si fuera un diccionario. Y puedes ver toda la información diferente que estamos sacando de esto. Lo cual es mucha información para que podamos pasar. Entonces, una vez que sigas adelante y te registras para obtener una cuenta, puedes seguir adelante de cabeza hasta tu usuario en la parte superior derecha, ir a mis claves API, y seguro que verás una clave ahí. Si no, puedes seguir adelante y generar uno y tener esto en cuenta o mantener esta página abierta porque vamos a tener que volver aquí y agarrar tu clave API en el futuro. Todo bien. Entonces sigamos adelante. Una cosa más que voy a mencionar es que, si buscas APIs gratuitas para que uses APIs gratuitas y abiertas, solo puedes hacer una simple búsqueda en Google y encontrarás que hay lugares que tienen lista completa de todos los diferentes tipos que tú o diferentes tipos que hay con enlaces que salen a todos ellos. Así que siéntete libre de, por supuesto, practicar siempre y revisar algunas de las otras, ver cómo tal vez la API de una compañía opera un poco diferente a otra. Pero eso es todo para este, vamos a seguir adelante y saltar a Goto en el siguiente ¿Mantener nuestra clave API arriba? Oh, lo escondo un poco, así que realmente no lo vemos para la mayoría de nuestro código. Y bueno, lo tomaremos a partir de ahí. 60. Configuración del guion: Todo bien. De nuevo, puedes seguir adelante y crear un nuevo proyecto si lo deseas. Acabo de crear una nueva carpeta para la sección API y websocket aquí Y obviamente, para que las cosas funcionen, vamos a necesitar una escena de algún tipo para estar corriendo aquí. Entonces voy a seguir adelante y crear una interfaz de usuario, que por supuesto nos va a dar algún control para nuestro inicio aquí, vamos a llamar a esta demo API o ¿sabes qué? Esta API. Eso está bien. Entonces voy a guardarlo, guardarlo el mismo nombre y guardarlo en mi carpeta. Tengo una escena llamada API. Y claro, esto va a necesitar un guión. Ahora bien, la escena real aquí no importa a menos que desee que el usuario pueda ingresar información aquí, como, por supuesto, un cuadro de texto o una ruta de edición de línea, debería decir, para que el usuario escriba la información relevante, y entonces tal vez tenga un botón que agarra todo el texto de esas casillas Pero en su mayor parte, realmente no necesitamos nada ahí dentro, pero vamos a necesitar una pieza más para esta escena aquí, esa va a ser una solicitud HTTP, así podemos agregar una de esas a nuestra escena. Yo y una solicitud HTTP es en realidad lo que nos va a permitir hacer una llamada a una API, a un sitio web o servicio web de algún tipo. Y luego una vez que eso se completa, alguna información se nos devuelve, y en base a esa información, podemos usar podemos analizarla para obtener los datos que estamos buscando, o podemos tomar esa información y tal vez asignarla a algunas variables para enviar otra solicitud a una sección diferente porque algunas API requerirán datos adicionales en la forma de algo llamado encabezados pero para esto, siendo esta una API simple, no es demasiado difícil de seguir. Todo lo que tenemos que hacer es hacer una solicitud, y recuperaremos los datos JSON. Bien, entonces en nuestro APM, voy a seguir adelante y agregar un guión Y aquí vamos a tener algunas variables. Tan variable, voy a tener la clave API, que voy a decir que deberías tener tu clave API. Debería estar oculto. Nunca se debe subir a ningún lado. Esto es algo que debes mantener lo secreto y lo más oculto posible. Así que la clave API, eso sólo va a ser una cadena. Y puedes volver a conseguirlo desde el sitio web. Yo sólo puedo copiar y luego puedes seguir adelante y simplemente pegarlo ahí. Ahora, se puede ver éste. O va a estar borrosa para el video o simplemente puedo desactivarlo para que ya no funcione Después de grabar esto, así que no es un gran problema en este momento, sino solo tenlo en cuenta, esto es algo que debes mantener secreto posible. Bien, ¿qué otra información vamos a necesitar? Bueno, si volvemos y echamos un vistazo a los datos, perdón este. Veamos qué se requiere. Vamos a necesitar mucho, así que una latitud y una longitud. App ID, esa va a ser nuestra clave API. Eso tenemos. Excluir es opcional, y todo lo demás es opción. Bien, entonces podemos ponerlo en latitud y longitud para esto. Todo lo que estamos haciendo es mirar la documentación para este Davar Long, y eso va a ser flotar y también vamos a necesitar uno para vuelta, flotador de salsa Y estas son las piezas mínimas de información que vamos a necesitar. Ahora bien, si tuviéramos que echar un vistazo a la llamada a la API, cómo haríamos esto, esto, copiarlo, intercambiar otra variable aquí por la cadena URL, y ahí vamos una cadena realmente larga. Entonces tenemos HTTPS colon slash slash gmther o esta la llamada de ejemplo que vimos antes Entonces ya ves vamos a tener la latitud puesta aquí, la longitud aquí, excluir, vimos que eso es completamente opcional. Y como no tenemos información adicional aquí en este momento, solo voy a eliminar esa porción y el ID de la aplicación, que es donde va nuestra API. Bien. Entonces lo que vamos a hacer es que vamos a usar un marcador de posición que es un porcentaje en una S minúscula y vamos a usar eso para deshacernos de estas llaves y Así que vamos a tener la latitud, longitud y clave API, así que son tres cosas que debemos recordar. Entonces lo primero que quiero hacer es que vamos a necesitar una latitud y longitud, que por ahora, podemos darle un valor por defecto cero, cero. Y dentro de nuestra función ready, poder hacer esta llamada a la API, necesitamos seguir adelante y obtener nuestra solicitud HTCP, pero solo llamaremos a esto la parte de configuración Lo dividiremos al siguiente. Entonces iremos a nuestro HTCPRquest y en realidad vamos a conectar la señal de solicitud completada a la Y verás que obtenemos un resultado, un código de respuesta, obtenemos algunos encabezados, y obtenemos el cuerpo. El cuerpo va a ser la pieza importante aquí. Yo sólo voy a seguir adelante y guardar eso, cerrar todas las demás pestañas. Bien, así que voy a terminar este video aquí, así que solo podemos dividir esto aquí a continuación Y el siguiente video, vamos a seguir adelante o la siguiente conferencia. Vamos a hacer la llamada API real, y vamos a analizar los datos que recuperemos para que podamos realmente usarlos y ver qué tenemos. 61. Hacer llamadas de API: Todo bien. Entonces quiero hacer una nota aquí es una que estamos viendo fue para una llamada. Entonces la URL es ligeramente diferente. Se trata de api.weathermap.slash data. Después barra 2.5 barra NOSOTROS Signo de interrogación. Y entonces ahí es donde tenemos nuestros parámetros a Lat Long, y App ID. Entonces es ligeramente diferente la URL aquí ahora. Para esta versión, sí me gritó cuando estaba probando, pero una llamada es tener que suscribirme a un servicio diferente Entonces es un poco raro tratar de encontrar la documentación sobre esta, pero seguimos adelante y obtenemos nuestro nodo de solicitud HTTP, y llamamos a la función request on. Pasamos la URL, y para rellenar esos marcadores de posición, hacemos un signo de porcentaje Y luego tenemos un par de corchetes como una matriz, y pasamos nuestras variables lat, on, y nuestra clave API. Ahora, te darás cuenta si intentamos simplemente imprimir el cuerpo aquí, eso bueno, tenemos muchos datos aquí. Nada de eso realmente tiene sentido para nosotros, pero estamos recuperando algo, lo cual es genial. Ahora, en general, probablemente querrás hacer una verificación F aquí con un código de respuesta para asegurarte que lo que se devuelve es que no estamos teniendo ningún error. Entonces, si solo imprimimos el código de respuesta, verás que obtenemos el código 200, que significa que todo ha salido bien para pasar por él. Ahora bien, si conseguimos un error 400, entonces, bueno, yo sólo me eché a perder ahí, es un error Entonces eso significa que algo salió mal, algo no está funcionando. Los datos no volvieron, el servicio está abajo de su parte, la solicitud no está formateada correctamente, información incorrecta, sea lo que sea, hay un error. Entonces podríamos verificar si código de respuesta es 200 solo para estar seguros. Si el código de respuesta es igual a 200, ¿verdad? Entonces podemos decir si todo salió bien, ahora, ¿cómo obtenemos realmente estos datos? Porque lo vimos era una matriz, pero una matriz de solo un montón de números aleatorios. Bueno, tenemos que analizarlo. Entonces lo primero que vamos a hacer es crear una nueva variable para nuestra respuesta, y eso se establece en nuestro cuerpo, pero queremos obtener los datos de. Entonces decimos punto y si tecleamos UTF ocho, lo veremos cadena de UTF ocho con un subrayado entre cada uno Entonces ahora si seguimos adelante e imprimimos nuestra respuesta, veamos qué pasa. Bien, bueno, tenemos información. No obstante, en muchos casos, vas a dar el paso extra aquí, Anine Simplemente voy a crear mi variable temporal aquí, TD para datos temporales. Y para esto, llamamos a nuestra cadena de análisis JSON, y podemos pasar nuestra respuesta a ahí. Y ahora echemos un vistazo a lo que recuperamos después de haber analizado analizar la cadena Ahí tienes, algo que es un poco más fácil de ver espaciado un poco mejor. Tenemos comas en el medio, todo. Es más agradable de ver, pero siempre podría hacer que sea aún más agradable querer realmente solo mirar las cosas Pero en la base ahora mismo, TD representa ahora toda nuestra información que necesitamos o necesitaríamos. Derecha. Si eso te costó ver leer, lo entiendo. Eso está bien, pero podemos prepararlo un poco solo para que nos sea más fácil verlo. Y aquí solo seguimos adelante y llamamos la clase JCN y podemos llamar al methicon stringify, pasar en nuestros datos, pasar en nuestros datos, TD y un segundo argumento de una cadena que solo contiene un Y si tuviéramos que mirar la salida ahora, todo va a ser mucho más fácil de seguir leído. Entonces, si eso es lo que necesitas, fantástico. Así es como puedes hacerlo agradable y limpio. Todo bien. Entonces ahora sabríamos que si entramos aquí, podríamos imprimir TD y podemos sacar una pieza de información de aquí, como ver Maine es lo que estamos buscando. Para que podamos conseguir Maine e imprimirlo. Y vemos aquí abajo, si acabo de comentar eso, comente la línea con Control K para que no podamos confundir la información antigua Podemos ver aquí está la temperatura. Esto es lo que se siente. Tempman Max, la presión, la humedad, el nivel del mar y el nivel del suelo Ahora, mencioné antes que necesitamos latitud y longitud. Entonces un lugar al que podamos ir por eso, si solo vuelvo a la captura de pantalla aquí. Este sitio web aquí se llama latlondt net. Y como puedes ver, puedes simplemente hacer clic en cualquier parte del mundo y obtendrás una posición de latitud y longitud. Entonces, por ejemplo, si tuviéramos que bajar, voy a ir con Vancouver aquí, y sólo voy a hacer click ahí. 409-25-6791 Sólo voy a seguir adelante y copiar eso de nuevo y poner eso a mi operación aquí. Entonces primero está en. Están de lado y mi longitud aquí. Hace s. para que puedas seguir adelante y llegar cualquier parte del mundo aquí, obtener tu latitud y longitud. Como ves, también puedes simplemente escribir un lugar aquí y debería aparecer para ti. Bien. Entonces con esta información puesta, sigamos adelante y ejecutemos esto. Mira lo que obtenemos ahora temp 288.11 se siente como 288.14. Ahora, obviamente, estos números parecen bastante altos. Entonces la pregunta sería , ¿por qué sería eso? Bueno, aquí es donde entra en juego con los datos que estamos obteniendo. Aquí tienes. Acabo de llevarnos a los campos en nuestra respuesta ATI aquí en la documentación. Me desplazo por aquí, podemos ver dónde estamos aquí? Punto aquí mismo. Entonces la temperatura dentro de Maine, el valor por defecto de la unidad es Kelvin Entonces por eso es tan alto para nosotros por el número que estamos viendo a 200 y algo grados. Recuerda, opcional, tenías la opción de poner en métrica o imperial dentro de nuestro opcional si vamos a unidades aquí, ¿verdad? Ya ves que podemos poner en imperial métrico estándar. Y las unidades estándar se aplicarán por defecto. Entonces estándar sería nuestro Kelvin, y entonces tenemos nuestro imperial mexicano, ¿verdad? Entonces, ¿cómo los agregaríamos para obtener información? Bueno, simplemente como ves aquí, si seguimos el patrón, solo tenemos el ampersand, el parámetro es igual, y luego lo que sea que estemos buscando Entonces, si queremos sumar unidades, entonces solo deberíamos tener que hacer unidades ampersand iguales, y creo que es un resorte que se necesita Así que sigamos adelante y saltemos de nuevo. Y agreguemos unidades o unidades. Y como dije, creo que eso sólo va a ser un manantial. Y para nosotros, vamos a algo así como podría ir a Celsius. Y creo que eso es lo voy a buscar. No es Celsius. Tenemos que ir con México o Imperial. Sigamos adelante y sigamos adelante y tecleemos métrica. Y eso lo estoy obteniendo al mirar la API. Veo una métrica en todas minúsculas, así como Tempio, así que estoy asumiendo que todo esto es Así que tenemos que agregar eso a nuestra URL. Entonces voy a seguir adelante y después de mi longitud, pero antes de mi ID de app, voy a poner unidad Ampersand igual Y luego volveremos a tener nuestro marcador de posición aquí. Ahora en mi solicitud, tenemos latitud, longitud, y antes de la clave API, puedo pasar en unidades. Y si tuviéramos que echarle un vistazo ahora, ya ve que volvemos 14.85 Y lo mismo si tuviéramos que reemplazar métrica por imperial, ahora deberíamos obtener el equivalente Fahrenheit 58.44. ahora deberíamos obtener el equivalente Fahrenheit 58.44. Todo bien. Entonces así es como podemos obtener esta información. Y ahora puedes configurar el texto de, digamos, una etiqueta en pantalla, o puedes tener diferentes imágenes dentro de tu aplicación y puedes cambiar o mostrar la imagen en función qué tipo de clima es, ¿verdad? Entonces podemos ver la temperatura, la presión, la humedad. Pero recuerda, eso es todo lo que no es toda la información que tenemos, ¿verdad? Podemos echarle un vistazo a la temperatura es clima punto Principal? Podría tener esto mal, ojalá que no, pero si es así, supongo que vamos a obtener un error en nuestra impresión. Sí, ahí tenemos un error. Sólo voy a echar un vistazo descomentar mi cadena de información fina para poder echarle un vistazo Viento, clima. Bien, entonces parece que es solo clima. No principal. Entonces TD y yo tomaremos el atributo del clima de eso. Limpia eso. Y en realidad, el ID es de 81 nubes principales. Descripción, pocas nubes. Así que ya ves que podemos ver, ¿de acuerdo? El clima principal aquí se considera nubes, por lo que sería nublado. Entonces ahora podría mostrar tal vez una imagen turbia en la pantalla para ir con eso o cambiar el fondo de la app para que esté nublado. Como puedes ver, aquí también hay un icono en estos datos. No estoy seguro de dónde viene este ícono. Pero si supieras dónde y te dieron un enlace o una identificación o algo así para una imagen, es posible que revises y busques esa imagen de Internet, así podrías usar eso, lo que sería más ideal Pero de nuevo, no sé de dónde viene este ícono. Así que no estoy 100% seguro de dónde atar dinamo gar para hacer eso Pero eso es lo básico ahí haciendo estas simples solicitudes API. Y algunas solicitudes se volverán más complicadas que eso y requerirán que realmente te sientes y revises la documentación que pueden requerir autorización, ciertos permisos otorgados. Es posible que tengas que esperar a que el usuario se autentifique. Es posible que tenga que tener un montón de información que se ponga dentro de sus encabezados, que los encabezados vendrían después de la solicitud. Entonces tenemos la URL aquí. Solo tendríamos coma y luego nuestros encabezados personalizados, que estarían en forma de, creo, una matriz Eso podrías pasar , y luego podemos obtener otra información como G, publicar el método que queremos usar. Y G es simplemente el valor por defecto, que es lo que estamos haciendo aquí. Estamos pidiendo a la API información de la base de datos, y publicar sería como enviar información a la base de datos, como una tabla de clasificación, por ejemplo, si tienes algún tipo de configuración de tabla de clasificación donde trabajas con una API, entonces podrías insertar información allí usando el método post post en lugar del Pero ahí tienes. Así es como hacemos estos Esto es esencialmente el núcleo de hacer una llamada API. Cualquier cosa más allá de esto es solo cuestión de hacer llamadas para obtener información para que la uses como encabezados con el fin de obtener los datos que deseas. Pero en el CR VIT, esto es lo que vas a hacer. Y si es sencillo, esto es todo lo que necesitas. Si es más complejo, como Twitch, por ejemplo, vas a tener que revisar la documentación, pero la documentación de Twitch no es tan Así que probablemente vas a tener dolor de cabeza y te vas a dar problemas tratando de pasar por las fases de documentación de Twitch Pero ahí lo tienes. Ahí están los conceptos básicos de cómo hacemos llamadas API. 62. RapidAPI de Python a GDScript: Muy bien, todos. ignorar el error que hay en la pantalla ahí. Eso es solo porque las variables aún no existen. Pero quería hablar de aquí y voy a estar usando tengo una escena separada abierta para esto. Es idéntico al primero. Simplemente tiene un guión dk, y esto va a ir a una base de datos de anime. Escojo este solo porque el anime es popular. Entonces, tan popular como es el Anime y la cantidad de shows que hay. Si ustedes están viendo, probablemente sea una buena posibilidad de que les guste anime o al menos le hayas dado una oportunidad en algún momento. Pero este es el tema real aquí ¿es relevante? Simplemente pasa a ser lo que estoy usando aquí como mi ejemplo. Ahora bien, de lo que quiero hablarte es de usar APIs en línea y cuando estás mirando a tu alrededor, porque no vas a encontrar nada para Goto o script GD Lo más cercano que vas a encontrar es algo así como Python, que está bastante cerca. Entonces te voy a mostrar cómo podemos tomar el ejemplo de Python que nos da y usarlo en GDScript Ahora, lo que estamos usando aquí es de API rápida. Y Rapid API tiene muchas API gratuitas que están bien, ambas gratuitas. Este, como ves, es premium. Entonces, si vamos a precios, tenemos múltiples opciones aquí. El básico es gratuito, que es lo que estoy usando aquí. Y ve que puedo hacer 100 solicitudes al día y sólo dos solicitudes por segundo. Entonces estos obviamente no serían tan buenos para una aplicación implementada porque podrías obtener más de dos solicitudes por segundo, y si empiezas a obtener alguna popularidad o tienes un usuario realmente pesado, podrías superar fácilmente esos 100 por día Entonces obviamente, ahí arriba, si vas a hacer algo y pasarlo o se va a desmayar. Y, ya sabes, los $5 o $10. Parecían algunos planes bastante buenos. Entonces $10 completamente ilimitados, y los $5 son 5,000 al día. Pero te das cuenta que no tenemos ninguna no tienes un límite de cuántas solicitudes por segundo. También elijo este porque la latencia es de solo 591 milisegundos, eso es aproximadamente cinco o 6 segundos desde hacer la solicitud hasta cuando obtenemos nuestra databa es de solo 591 milisegundos, eso es aproximadamente cinco o 6 segundos desde hacer la solicitud hasta cuando obtenemos nuestra databa Popularidad, 9.8 de cada diez, por lo que es muy popular. Se actualizó hace dos meses, así que aún se mantiene al día. Los niveles de servicio han sido del 100%. Entonces, hay muchas razones de por qué esta API hace una buena para nuestro ejemplo aquí. Todo bien. Así que todo lo que puedes hacer es simplemente subir a la API Rapid, registrarte para obtener una cuenta, y puedes entrar y simplemente hacer una búsqueda de lo que estés buscando. En mi caso, de nuevo, me acerco y busco anime, y luego tenemos todas estas APIs aquí. Algunos de ellos pueden ser dinero obligatorio, algunos pueden ser completamente gratuitos, y algunos pueden ser premium, como te mostré con el otro. Ahora bien, el primer resultado aquí es el que estamos usando, y vemos si ayudo rol pero podemos obtener información por ID. Podemos conseguir todos, podemos conseguir géneros. Entonces hay algunas cosas que podemos hacer y esta aquí llamada A Animation, podemos conseguir algo sobre un regalo o GF, quiera pronunciarlo, una imagen, que información no es demasiado para nosotros. En este caso, empieza a ir un poco más allá del alcance aquí, pero se puede ver, no todos son iguales. Todos ellos ofrecen diferentes servicios aquí. Eso es lo que puedes conseguir. Y mira, como estoy apareciendo, algunos de estos dicen premium, algunos dicen gratis Podrías obtener una prima en algún lugar donde solo se paga, no lo sé, pero no se ve así. Parece que estos son todos gratuitos o premium, al menos en el primer pagier Entonces solo voy a seguir adelante y click en uno solo para mostrarte un ejemplo. Entonces, una vez que decidas lo que quieres hacer, lo que quieres conseguir, notarás en el lado derecho, estas son todas las cosas que podemos usar. Entonces digamos que queríamos papel tapiz aleatorio. Haríamos clic en eso y obtendríamos nuestra información del lado aquí con nuestro ejemplo. Y realmente no se puede ver nada de eso. Entonces voy a reajustar esto ahora. Entonces un momento. Por ahora, eso va a hacer por nosotros. Pero ves en el lado derecho, estos son todos los diferentes supongo que puedo decir servicios o información que puedes sacar de su API. Y con sólo hacer clic en uno, se ve la información cambiando en el lado derecho así como en el medio. Entonces así es esencialmente como van a funcionar estos. Y puedes ver que estos son todos consiguen, pero algunos de ellos podrían ser un post dependiendo de lo que intentes hacer. Y ese es el método que mencioné al final del último video, donde muchas veces vamos a usar get para obtener información, pero puede haber ocasiones en las que tengas que publicar y empujar información. Y si decides que este es el que quieres, solo tienes que seguir adelante y presionar el botón suscribirse a prueba aquí. Y eso debería llevarte a la página de precios de la fase de precios. También puedes simplemente venir a aquí y puedes seleccionar a qué plan quieres suscribirte. Y todos estos tienen un límite duro aquí, como podemos ver. Y quieres tener cuidado. Algunos de ellos no son un límite duro, como puedes ver aquí, en el caso de éste, te van a cobrar, que irá a tu cuenta, te cobran que tienes que pagar. Este 1.5 centavos el uno para el otro. Cada solicitud adicional, ¿verdad? Esa caída en línea con esa y $0.03 en esta. Y eso es por supuesto en mega. Estos obviamente suben más alto, medida que avanzas, pero el plan básico sólo tiene un límite duro. Así que solo ten en cuenta que algunos sí tienen o se extienden más allá de cierto límite a costa de que realmente les pagues, pesar de que podría ser un plan gratuito. Bien, vamos a saltar a Whoops, esa es la API rápida. No queremos esa. Sólo voy a volver aquí. Vuelve al DB de anime que estamos usando. Y sólo voy a reposicionar esto mejor para nosotros. Entonces, solo para esto, voy a estar usando get all on the right side, or sorry, the left hand side here. Entonces ese es el que voy a estar usando. Ahora voy a simplemente deslizar la pantalla sobre así ver las cosas mejor para nuestro uso. Ahí vamos. Todo bien. Entonces para esto, lo que vamos a usar, y yo dije Python. Y específicamente, si abrimos esto, podemos ver ejemplos para todos estos diferentes idiomas. Y Python es el que queremos. Y estaremos mirando al cliente HTTB así como a la biblioteca de solicitudes Ahora, en Python, puedes hacer esto de cualquier manera, pero para nosotros, tenemos que hacer este tipo de mirar ambas versiones, para darnos una idea. Y ya ves aquí, tenemos encabezados. Sólo voy a copiar los encabezados de ahí. Y si volvemos a Goto aquí, podemos seguir adelante y crear nuestras cabeceras variables Ahora, el suyo tiene llaves rizadas y es un diccionario. El nuestro tiene que ser una matriz para nuestros encabezados. Esos son corchetes. Sólo voy a pegar eso. Ahora vamos a tener un error. Simplemente porque bien, tenemos pares de valores clave. No es así como funciona una matriz. Lo que voy a hacer es que voy a ir en medio, resaltar esta cita, resaltar esta cita, el espacio de dos puntos y la otra cita aquí. Y yo sólo voy a poner en borrar ese espacio de dos puntos ahí. Así que básicamente estamos quitando las comillas a su alrededor, convirtiéndolas en una sola cadena. Y se ve al final por devolve, copia los dos. Ya tenemos eso separado por una coma, y vamos a hacer lo mismo aquí en medio Eliminar, carbón en el espacio. Entonces tenemos dos piezas de cuerdas aquí, y esas van a ser nuestras cabeceras. Y lo obtuve de la deberías poder obtener eso ya sea de la solicitud o del cliente HTTP de Python. Ambos serán exactamente los mismos aquí para esta pieza de información. Y voy a seguir adelante y solo acercar esto más, solo porque esta es la única información en solo porque esta es la que realmente deberíamos estar enfocándonos aquí. Bien. Entonces nuevamente, los encabezados aquí. Seguí adelante y solo copié la información aquí. Y esto es esencialmente el como dice aquí, nuestro host y clave API. Que vamos a usar específicamente para API rápida aquí. Y esto va a cambiar por mi cerebro está teniendo una pausa ahí por base de datos, por API. Entonces esto siempre va a ser diferente. Ahora, la URL que queramos, bueno, podemos ver conexiones animadas db.p.rapidpi.com Y luego en su petición, tenemos todo esto grande aquí. Bueno, eso no va a hacer por nosotros. Así que vamos a bajar y vamos a Python Quest, y esta va a ser nuestra URL base. Si solo copiamos eso y echamos un vistazo aquí atrás. Podemos crear var URL. Y esa es nuestra URL base. Ahora, dije que vamos a usar get all, y de ahí viene esta última variable. Simplemente creando eso ahí. Y aquí es donde tienes que ser un poco observador a la hora combinar las cosas porque podrías fusionar todo en una URL, y luego puedes tener una fusión del get all go alrededor del género para dar la vuelta, etcétera, pero lo que voy a hacer aquí es que vamos a ir vamos a regresar por aquí, y podemos ver que esto termina con slash N, rapid api.com slash anime Así que tenemos que tenerlo en cuenta. Vamos a volver al cliente HTTP Python. Y podemos ver aquí abajo en la parte inferior, tenemos slash anime, signo de interrogación, página uno, etcétera, Entonces vamos a ignorar el anime slash y agarrar todo después de eso Y vamos a saltar de nuevo a Goto . Y ahí vamos. Entonces podemos ver las búsquedas, full metal, género, fantasía, clasificación de clasificación cinco, orden de clasificación ascendente, ahí vamos. Tenemos todo eso. Así que ahora podemos simplemente fusionar nuestra URL base con lo que sea que tengamos aquí. Entonces como otro ejemplo, si tuviera que bajar al anime G one. G one anime, por ranking. Todo bien. Y me vuelvo aquí solo para mostrarles aquí, y voy al cliente de HTV Wills anime, pero luego aquí mismo, B Ranking slash uno Esto sería como ejemplo. Lee otra variable aquí. ¿Correcto? Digamos que consigue ranking. Eso es una cuerda. Y podríamos hacer eso. Entonces ahora podemos simplemente intercambiar esto con get ranking, queremos o volver a poner en. Entonces por eso me gusta separarme aquí entonces solo puedo cambiar específicamente lo que quiero allá. Y claro, si ibas a implementar resultados de búsqueda y cosas así aquí, veo la búsqueda aquí, el género y todo eso. Puedes poner eso como marcadores de posición como lo hicimos aquí atrás con el clima, correcto Con esto, tenemos eso, y entonces podemos ver ¿qué es lo que necesitamos conseguir? Bueno, si echamos un vistazo, va a volver a la de llegar a todos aquí. Si miramos aquí abajo en el cliente HTTP, vemos la respuesta G, y estamos viendo todo esto, y vemos aquí abajo, todo lo que están haciendo es decodificar UTF h. así que eso es todo aros. así que eso es todo aros Todo lo que están haciendo es que están decodificando UTF ocho. Entonces eso debería ser todo lo que tenemos que hacer para esta API. Ahora bien, si estás trabajando con una API diferente, es posible que tengas que hacer el análisis JSON completo, como hicimos en el clima abierto Entonces aquí, solo tenemos nuestra respuesta y todo lo que estamos haciendo es que estamos obteniendo la cadena de UTF H. Ahora, si imprimimos la respuesta aquí, ejecutamos esto, y recuerden, estamos obteniendo todo Tenemos que esperar un par de segundos. Y aquí vamos. Tenemos una lista completa, así podemos ver el episodio 16 de comedia de fantasía que sí tiene el ranking de episodios verdadero. Podemos ver la imagen aquí a WebP. Tenemos un enlace que va directo a él. Entonces podrías tomar ese enlace y proporcionar ese enlace a tus usuarios. Si eso es lo que quieres, pero puedes ver que todo está aquí como sus datos. Y podemos acceder a todo esto individualmente. Y sólo para mostrarles que aquí tenemos llaves rizadas al principio Si entramos aquí, solo obtenemos datos, está llegando como correcto. Así que tendríamos que encontrar una manera de ordenar realmente la información que estamos buscando. Entonces en este caso, como no vamos a recuperar a Jason, eso es un poco molesto, supongo. Pero como ves aquí, ya que tenemos que dar el paso extra, aunque la API o la página, nos dijeron que todo lo que tenemos que hacer es analizar la UTFA. Eso está bien. Pero como queremos obtener los datos extra, seguimos adelante y analizamos la cadena usando la clase JCN Y como pueden ver, ahora puedo obtener esos datos, el primer elemento de los mismos porque los datos eran una matriz de ítems. Y entonces puedo agarrar el título de ese primero, que es, creo que sería el primer episodio, ¿verdad? Al menos el resultado. Y si cambiamos esto al segundo ítem, deberíamos conseguir un nombre diferente ahí abajo. Sí. Entonces tenemos Hermandad. Voy a ir a la siguiente. al conquistador de Shambala, sea lo que sea que sea Nunca había visto esto. Pero ahí tienes. Verás, no es demasiado difícil trabajar con este Python o convertir el ejemplo de Python en él. Así que nuestras matrices, las copiamos y las colocamos en el script GD aquí como una matriz en lugar de un diccionario Eliminamos las comillas en el medio. Así que nuestra clave API es una cadena larga, y nuestro host API es una cadena larga. Alternamos de ida y vuelta entre solicitud HTTP y el cliente punto http y la biblioteca de solicitudes para las dos opciones de Python aquí para obtener nuestra URL base aquí, así como las diferentes búsquedas aquí que realmente podemos poner en. Y todo lo que hacemos en la solicitud, pasamos en nuestra URL, y en este caso, sólo voy a agregar a más mi G A y los encabezados. Ahora bien, si tienes más que eso, por ejemplo, si tienes uno donde te diga que necesitas empujar, ¿verdad? Necesitas publicar en lugar de G. Aquí es donde entran estos incumplimientos, ¿verdad Así que solo podemos venir en el método del cliente HTTP bajo Square Post. Ahora bien, el valor por defecto es G. Por eso no ponemos nada ahí. Pero si alguna vez necesitas publicar, en lugar de G, así es como lo harías. Simplemente lo agregarías después de los encabezados. Bien, así que ahí tienes. Hay cómo hacerlo Hay una gran colección de API con las que puedes buscar trabajar, practicar con. Y si esto es lo que quieres hacer, provee cosas para tu cliente. Así como cómo se usan sus ejemplos de Python y los convierten para que podamos usarlos en script GD Entonces ahora has conseguido una colección más amplia con la que podrías trabajar. Ya sabes cómo trabajar con encabezados aquí. Y te he enseñado cómo hacer un post en vez de G. Ahora esto saldrá al aire porque no publicamos. Obtenemos por estos. ¿Sí? Y esa va a eso nos debería redondear por ahí para la porción de API. Y a continuación, vamos a seguir adelante y saltar a echar un vistazo a qué son los sockets web, por qué son útiles y cómo podemos usarlos y por qué podríamos querer usarlos. 63. Qué son los WebSockets(espacio llenado): Hola a todos. Bienvenida. Y hoy, vamos a hablar de ¿qué son los sockets web? ¿Qué son? ¿Qué son pobres? Bueno, si conocieras la programación, que probablemente están aquí, quizás hayas escuchado este término antes, pero ¿qué son exactamente? ¿Qué son los websckets y cómo funcionan? Bueno, para el final de esta lección, ojalá tengas una autocomprensión de lo que son los sockets web y la magia que pueden proporcionarnos. En pocas palabras, los sockets web son un protocolo de comunicación que permite la transferencia de datos en tiempo real, bi dirección o bidireccional entre un navegador web y un servidor web puede pensar en ello como una conexión persistente virtual que permanece abierta permitiendo la comunicación instantánea entre los dos extremos. Para entender esto mejor, imaginemos que estás platicando con un amigo en una aplicación de mensajería. Cuando envías un mensaje, tu amigo lo recibe instantáneamente, ¿verdad? Eso se debe a que la aplicación de mensajería tiene un concepto similar. Establece una conexión entre tus dispositivos permitiendo la comunicación en tiempo real. Ahora bien, ¿cómo funcionan los sockets web? Bueno, cuando se carga en tu navegador una página web que soporta sockets web, envía una solicitud HTTP especial al servidor solicitando establecer una conexión de socket web. Una vez que el servidor aprueba la solicitud, se crea la conexión persistente y tanto el navegador como el servidor pueden enviarse datos entre sí en tiempo real. La magia de los sockets web radica en su capacidad para manejar la comunicación bidireccional. Esto significa que no solo el servidor puede enviar datos al navegador instantáneamente, sino que el navegador también puede enviar datos al servidor en tiempo real. Es como tener una conversación en vivo entre el navegador y el servidor. Los sockets web son increíblemente útiles para crear aplicaciones que requieren actualizaciones en tiempo real, como chats en vivo, juegos en línea, tickers del mercado de valores y una vez más Eliminan la necesidad página constante, refrescante, tirando, haciendo que sus aplicaciones web sean más eficientes y receptivas. Entonces, si necesitas otro tipo de explicación para ayudar a entender con esto, puedes pensarlo como lo piensas como dos personas que se encuentran, posiblemente por primera vez, la persona A, el cliente, la persona B, el servidor, se encuentran, se dan la mano. Y tratan de establecer una conexión, ¿verdad? Se encuentran, se dan la mano, y determinan a partir de ese punto si quieren mantener esta conexión, e intercambiar información, tener una conversación entre ellos o alejarse. Si no quieren hablar, entonces la conexión que podemos decir está cerrada, y van por caminos separados. No obstante, si deciden continuar su conversación, entonces se aceptó la conexión entre ambos miembros, ambas partes, y ahora pueden intercambiar información en vivo en tiempo real. Ojalá uno de esos tres ejemplos de Sho te ayude a entender exactamente cómo es que funcionan Y aunque lo tengas, esa es una simple introducción a websocket es lo que son, cómo se pueden usar Y son una herramienta esencial a la hora de mucha programación moderna, y de nuevo, esto va a depender realmente de qué tipo de campo, yo diría que quieres entrar con tus habilidades de desarrollo. Pero sí ayudan a habilitar esa comunicación en tiempo real entre su aplicación y el servidor. Y a medida que profundiza en la programación, encontrará que los sockets web son una herramienta poderosa y versátil. Cree aplicaciones interactivas y atractivas. Pero recuerden, no solo trabajan con servidores que están apagados en otro lugar. Hay algunas aplicaciones existentes que utilizan websockets con las que podrías crear tus propias herramientas para trabajar Vamos a echar un vistazo a eso en el siguiente video. 64. Cómo establecer una conexión: Muy bien, así que sigamos adelante y echemos un vistazo a cómo estableceríamos una conexión de socket web con nosotros mismos aquí y cómo podríamos conectarnos a algo. Y a lo que nos vamos a conectar va a ser OBS. Ahora, si quieres, puedes seguir adelante y buscar el plugin de servidor websocket, el conector websocket para OBS Studio, si quieres seguir junto con esto y simplemente ejecutar a través del instalador Sólo debería llevarte uno o dos minutos. Y lo que vas a ver es que si vas a subir a Herramientas en OBS, deberías ver una opción de configuración del servidor web socket ahí. Y al hacer clic en eso, tendrás esta ventana aquí Popo Asegúrese de tener activado el servidor websocket. Y todo lo que necesitamos es que necesitamos un poco de información aquí. Entonces si vamos a mostrar Connect Info, entonces lo que va a aparecer es la IP de tu servidor y el puerto. Y la IP es lo principal que queremos fuera de esto porque ya podemos ver el puerto aquí mismo en esta ventana. Ahora, aquí abajo en la parte inferior, verás cuándo o como sea mucha gente se conecte a esto. Y como ves, también tendrás la opción de patear a un usuario desde aquí. Entonces aquí es de donde vamos a obtener nuestra información solo para que sepas. Y nuevamente, vamos a querer la IP y los puertos del servidor aquí mismo. Para que puedas seguir adelante y tomar esa información, recordarla, tenerla a un lado. Y comencemos aquí. Todo bien. Entonces lo primero que tenemos que hacer es que solo tengo un nodo de control aquí, mi escena, nada grande para algo con lo que podamos correr. Y voy a agregarle un script y simplemente llamar a y simplemente llamar un cliente de websocket. Realmente no importa. Y ahora estamos listos para crear esta conexión. Bien, entonces, ¿cómo hacemos esto? Bueno, vamos a vamos a necesitar un nuevo socket, bien, para poder empezar. Así podemos crear una variable llamada socket. Y esto es igual a un punto de peer socket web no. Queremos crear un nuevo artículo, ¿verdad? Un nuevo objeto, este socket web. Y voy a seguir adelante y poner aquí también la URL del socket. Simplemente almacene eso como una variable. Enchufe RL. Y esa va a ser tu dirección IP. Pero no sólo de cualquier manera. Vamos a tener WSS, CLONas entonces nuestra IP, y no puedo pegarlo, así que tendré que teclearlo 100 punto cero punto 19 Este es no sé si falla, entonces echaremos un vistazo al otro. Entonces dentro de nuestro listo, aquí es donde vamos a hacer nuestra conexión. Así socket punto se conecta a la URL, y sólo vamos a pasar en nuestra URL de socket. Ahora bien, esto puede tomar parámetros opcionales, pero nosotros no Esto no es cosa para nosotros poner aquí. A continuación, eso nos da nuestra función de proceso aquí. Y lo que vas a necesitar hacer es entero. Y lo que es eso es que básicamente constantemente se puede pensar ello constantemente como intercambiar una cantidad muy, muy diminuta de información solo para mantener la conexión en ambos lados. De lo contrario, si no se recibe nada, entonces se caerá la conexión y te desconectarán de ese socket web, ¿verdad? Serás desconectado de ese servidor. A mí y a nadie le gusta eso. Muy bien, entonces ahora para usar estos, tenemos que decidir qué vamos a hacer, y podemos determinar eso con base en el estado en el que se encuentra nuestro socket. Y los estados que obtiene nos permiten saber si está abierto, cerrando, cerrado, o si sigue conectando. Así que sigamos adelante y guardemos eso. El estado de la barra es igual al estado de listo del punto del socket. Y ahora ese estado podrá decirnos qué es. Ahora podemos decir si el estado es igual a websocket aquí, t y aquí están todos nuestros estados Entonces diremos estado abierto. Y sólo voy a pasar por ahí un momento. Y vamos a crear nuestros otros aquí también. Vamos a decir, s si estado es igual al cierre estatal. Y eso deja que nuestro último esté cerrado. Ahora, podríamos tener uno para conectar también, pero no hay una placa de puntos real. Ahora, cuando el estado está cerrando, aquí no tenemos que hacer nada. Solo tenemos que asegurarnos de que todavía estamos sondeando en este momento para poder cerrar correctamente Y veamos, Empecemos. Sigamos adelante y hagamos cuando nuestro estado esté abierto. Bueno, aquí vamos a tener un bucle salvaje, y aquí es donde vamos a obtener información de nuestros paquetes que nos están dando. Entonces podemos decir Wil socket disponible Pack cuenta. Mientras nos están enviando datos, ¿ verdad? Entonces tenemos paquetes. Vamos a seguir adelante y sólo vamos a imprimir lo que es esto, así que vamos a decir pack Base. Y luego para el segundo argumento, vamos a pasar lo que sea ese paquete, ¿verdad? Enchufe. Sí. Paquete. Todo bien. Y eso es todo lo que tenemos que hacer mientras está abierto. Echemos un vistazo aquí abajo donde se cerrará nuestro enchufe. Y la información de barras, podemos seguir adelante y hacer código de barras, y eso va a ser capaz de socket, obtener código cercano. De esta manera, podremos tener alguna información cuando sí nos desconectemos por qué o tal vez falla nuestra conexión. Entonces intenta conectarse, y luego simplemente se cierra de inmediato. De nuevo podemos averiguar por qué para que podamos devolvernos alguna información. Y hablando de razón, ese va a ser nuestro próximo aquí, eso va a ser socket Acercarse Motivo. Entonces podemos seguir adelante e imprimir nuestras opciones aquí. Y esto solo va a ser websocket cerrado con código, marcador de posición, razón, marcador de posición, marcador Vamos. Ahí vas. Se puede ver ahí, webs cerradas, código, razón, limpio. Un extra ahí al final. Y los vamos a rellenar con código, razón, y luego código no es igual a menos uno. Todo lo que nos deja una última cosa hacer es dejar de sondeos, y podemos hacerlo simplemente llamando a set process false Entonces, cuando estableces eso en false, lo que sea que esté aquí, esta función de proceso ya no se va a ejecutar hasta que la vuelvas a establecer en true nuevamente. Todo bien. Entonces con esto, deberíamos poder conectarnos a nuestro deberíamos poder conectarnos al OVS ahí dentro Entonces si solo hacemos nuestra ventana ir? Piensa que nuestra ventana está cerrada. Sólo tienes que seguir adelante y abrir eso. Ahí está. Bien, así que sólo voy a seguir adelante y pegarle Corre aquí Pero voy a asegurarme de que podamos ver este lado cuando lo haga. Yo sólo voy a seguir adelante y correr eso. Dale un segundo, y vemos que no tenemos conexión. Ahora, la parte seria va a ser cuanto al por qué. Bueno, vamos a echar un vistazo. Bueno, la razón por la que no está conectando es porque no hicimos nada con el puerto. Ahora bien, el puerto puede ser si haces tu propia aplicación, podría ser prácticamente lo que quieras. Apenas mientras no se esté utilizando ya. Y la forma en que agregamos un puerto al final de nuestra URL aquí es solo dos puntos. Y luego el puerto que estaba disponible ahí en la configuración del servicio, que es cuatro, cuatro, cinco, cinco, salvo eso. Y si miramos hacia atrás por aquí y lo ejecutamos, dale un segundo aquí. Ahí vamos. Podemos ver si estamos conectados. Podemos ver cuánto tiempo estamos conectados, los mensajes de entrada y salida identificados no han sido identificados porque no estamos usando ninguna contraseña aquí y nuestra información, y tenemos la opción de golpearla. Ahora bien, si echamos un vistazo al lado de Goto aquí, podemos ver aquí nuestro paquete de información Parece una matriz de números, pero sí tiene datos ahí. Confía en mí. Simplemente no podemos ver exactamente qué es. Así que lo arreglaremos aquí en un momento. Y debajo de eso, se puede ver donde cuando pateamos al usuario, que será nuestro cliente aquí, podemos ver ese websocket cerrado, y se cerró con el código 40 11 Se ha invalidado el motivo de la sesión. Por la razón es que nuestra sesión ha sido invalidada, y fue un cierre limpio, lo cual es bueno Pero, ¿cómo sacamos datos de todo este paquete aquí, paquete de byte Bueno, socket dot Obtener paquete. Esto es en una matriz pull by. Así que conseguimos esto como formato UTF ocho, así que necesitamos sacar el texto de él. Así que después de hacer socket punto Obtener paquete aquí, vamos a llamar a Yet cadena de UTF ocho Y guárdala. Y cuando vamos a ejecutarlo de nuevo, cuando se conecta, podemos ver que conseguimos los datos reales que estaban dentro de él. Para que podamos ver la versión que obtuvimos y la versión RPC Y esa información que estamos usando aquí que tengo aquí con la versión actual del servidor que estoy usando. El tuyo podría ser diferente porque estoy asumiendo que lo vas a conseguir completamente nuevo. Tengo esto instalado desde hace bastante tiempo. Yo sólo voy a seguir adelante y dejar de correr aquí. Y ya ves que no nos dieron ningún mensaje de patada ahí. Pero si lo ejecuto aquí y si presiono el botón de patada, ya ves, ahí está nuestro mensaje de patada. Muy bien, así que desafortunadamente, realmente no puedo ayudarte a superar este punto. Más allá de cómo puedes obtener una conexión aquí ya que obtener información o enviar información una manera particular va a depender a qué estás conectado y cómo quieren sus datos, supongo que podrías decir estructurados, y cómo te envían los datos, posible que tengas o no que obtengas datos de diferentes maneras, pero en el futuro, lo que puedes hacer es si tenemos el control, podemos dar click en websocket Peer Y si bajamos, podemos ver aquí todas nuestras propiedades, nuestros métodos, y toda nuestra información tiene que ver con esta cosa específica aquí y cómo usar todo aquí. Para que puedas seguir adelante, puedes recorrer, echar un vistazo a eso y supongo cruzarlo con mirar la documentación o lo que mirar la documentación o sea con lo que estés tratando de integrarte. Y en ese punto, supongo que es como la mejor de las suertes. Me da asco decirlo, pero te conectamos, depende de ti leer tu documentación y eso para averiguar cómo intercambiar esa información. 65. Envío de datos con WebSockets: Bien, entonces tengo un botón y una edición de línea aquí agregados a mi escena solo para algunas imágenes Y el botón tiene la señal de prensa conectada hasta mi cliente de socket web. Y voy a mostrarte al menos la idea de cómo enviar, digamos, un mensaje a través de este websocket Ahora bien, la nuestra está bien, te voy a mostrar. Hecho lo puedes ver ahí abajo en la parte inferior, pero lo veremos aquí en un minuto. Entonces en la prensa, vamos a tener una pantalla de mensaje para esta variable, y esto va a ser ajustado a nuestro texto de edición de línea. Texto. Detener con el autocompletar. Deténgalo. Entonces tenemos eso. Y ahora tenemos que enviar realmente esto. Ahora, podrías poner esta porción de envío en su propia función, que probablemente sería una idea inteligente porque entonces podría simplemente llamar a enviar siempre que necesite enviar datos. Pero así es como lo mandaríamos. Entonces decimos calcetarlo, ponerlo empacar, y luego tenemos que poner en nuestro mensaje. Sin embargo, no podemos simplemente poner en nuestro mensaje así. Eso no va a funcionar. Pero podríamos entrar con nuestro búfer UTFA, por ejemplo, y esto lo va a codificar Entonces, si seguimos adelante y ejecutamos esto, ahora esto sigue conectándose a OBS aquí. Si tecleamos, digamos, hola, enviar, podemos ver que nuestro socket de borrado estaba cerrado porque la codificación se envía a Jason, pero se recibió un mensaje binario. Para que veas que estamos enviando el tipo incorrecto de datos. Entonces aquí es donde es donde el tipo de información necesita estar o se basa en tu proyecto. Se basa en lo que estás conectado y por qué necesitas mirar la documentación. Alternativamente, hacerlo de esta manera también es JSON dot stringFio message Y entonces podemos codificar eso a UTF ocho, así, y eso nos va a dar el mismo resultado en esta instancia Nuestro zócalo se va a cerrar. Y claro, cuando estás enviando, probablemente quieras asegurarte de que el estado es estado abierto aquí. Pero ahí tienes. Ahí está la idea de cómo enviarías datos a través de este socket web. Ahora, como dije, realmente no funcionó. Nos cerraron porque enviamos el tipo incorrecto de datos, así que perdimos nuestra conexión. Pero solo vas a tener que leer documentación de lo que sea que estés tratando de conectar y cualquier programa con el que estés tratando de hablar. ¿Verdad? Entonces, si ustedes tienen Python instalado, no dude en echar un vistazo a esto y copiar este código para hacer su propio pequeño servidor de socket web en Python para meterse con las cosas. Pero en última instancia, estamos usando sockets asíncros y web, por supuesto, los sockets web tendrían que ser importados Y todo lo que estamos haciendo aquí es que estamos creando una función asíncrona, y esto básicamente es simplemente iniciar nuestro servidor para nosotros, o lo siento, aquí abajo, estaremos iniciando nuestro servidor Pero aquí arriba dentro de nuestro servidor, estamos viendo cuatro mensajes en socket web, así que bien, cada vez que enviamos un mensaje aquí, nuestro mensaje va a ser decodificado de UTF ocho ¡Vaya! Y luego vamos a imprimir el mensaje que recibimos del cliente. Entonces, si esto era, digamos, una aplicación de chat, entonces tomarías esto y se lo enviarías a quien sea con quien esté hablando, ¿verdad? Basado en su identificación o lo que sea. Y aquí esperamos un momento y devolvemos el mensaje. Estamos enviando el mensaje de vuelta a GOTO aquí solo para que podamos echarle un vistazo y podamos ver que podemos enviar y recibir datos, derecha, ida y vuelta Y luego apenas estamos iniciando el servidor en el host local, que en GoTo, si no lo sabías, la dirección IP tiene un host local Es 127.0 0.0 0.1. También estamos usando el puerto 5,000 para esto. Que solo estamos imprimiendo en nuestra consola abajo en la parte inferior aquí abajo que el servidor ha comenzado, y luego nuestros dos bucles aquí es básicamente tener nuestro servidor funcionando continuamente. Todo bien. Entonces, si tuviera que entrar y ejecutar esto, podemos ver que el servidor comenzó aquí. Y voy a seguir adelante y ejecutar esto en el lado del gatto para que podamos conseguir esa linda conexión Ah, y no podemos ver eso ahora por esa capa. Eso está bien. Sólo voy a bajarlo para esto. Bien. Entonces ahí está. Y ya verás voy a seguir adelante y teclear aquí, decir, hola, nueva persona. Bienvenido al chat. Y estoy súper emocionada. Voy a presionar mi botón Enviar, y ahí tienes. Podemos ver mensaje de nuestro cliente. Entonces podemos ver que recibimos datos en nuestro servidor web socket por aquí. Y si ocultamos esto, podemos verlo en nuestra versión GTO aquí El paquete que nos dieron de vuelta, cierto, era un mensaje que el servidor nos envió diciendo: Consiguió su mensaje y repitió de nuevo cuál era nuestro mensaje. Para que veas que esto funciona, solo es cuestión de tener o formatear lo que estás enviando, ¿verdad? Lo envías correctamente en función de lo que sea a lo que te estés conectando. Entonces ves que este método aquí funciona o esta configuración aquí funciona con un simple servidor web socket y Python aquí, pero este formato no funciona al conectar o enviar datos a OBS. Entonces ahí es donde entra algo de esa lectura, pero sí quería mostrarte que sí quería mostrarte los sockets web que funcionan con un servidor. Y ya ves lo que tenemos aquí es nuestro conjunto base de crear un bot de chat o crear una sala de chat que ya hemos hecho aquí, solo con nuestro servidor y cliente. Solo necesitas diferenciar qué cliente es quién y a quién le están enviando cada mensaje. Quiero decir, como que tienes un chat configurado, al menos entre un servidor y un cliente. Pero antes de que empiece a deambular, ahí tienes. Hay alguna prueba, supongo, se puede decir que enviar estos datos sí funciona. Simplemente depende de cómo esté formateado y a qué se encuentre conectado. Todo bien. Voy a poner eso ahí arriba otra vez. Entonces, si quieres pausar el video y seguir adelante y copiarlo si quieres. Y tienes Python instalado en tu computadora. Si quieres hacer esto, y crear tu propio servidor, ve a por ello. Con eso, cuídense que tengan uno bueno, y así es como nos conectamos y usamos websockets 66. Cómo se diferencia el desarrollo de equipos de escritorio: Bien, todos bienvenidos de nuevo, y vamos a sumergirnos en la sección de desarrollo de software aquí. Ahora bien, ¿qué hace que el desarrollo de software sea diferente del desarrollo de juegos? Bueno, vamos a discutir eso. El desarrollo de software o las aplicaciones de escritorio implican la creación de programas que se ejecutan directamente en la computadora de un usuario. Estas aplicaciones sirven para una amplia gama de propósitos, desde herramientas de productividad hasta software creativo y todo lo demás. Como desarrollador de aplicaciones de escritorio, su enfoque estará en diseñar interfaces de usuario intuitivas y crear soluciones eficientes para satisfacer las necesidades de los usuarios Una de las principales diferencias entre el desarrollo de juegos y el desarrollo de aplicaciones de escritorio radica en su propósito previsto. Si bien los juegos están diseñados para el entretenimiento y la interactividad, las aplicaciones de escritorio están diseñadas para resolver un problema específico o mejorar la productividad En el mundo del desarrollo de software, encontrarás una amplia gama de aplicaciones, como procesadores de texto, herramientas de hojas de cálculo, editores de imágenes, reproductores de video y más Las posibilidades son ilimitadas, y tienes el poder de crear herramientas que puedan impactar positivamente la vida de las personas Además, como desarrollador de aplicaciones de escritorio, podrás trabajar con diferentes lenguajes de programación. Algunas de estas opciones populares serían Python o C SHARP, que podrías usar junto con GDSCRP para mejorar o traer más funciones a tu aplicación que normalmente no tengas Obviamente, esto es opcional, pero la habilidad estaría ahí para ti. Otro aspecto clave del desarrollo de software para aplicaciones de escritorio es la experiencia del usuario. A diferencia de los juegos donde la inmersión y la jugabilidad ocupan un lugar central, las aplicaciones de escritorio priorizan la usabilidad y la eficiencia Te esfuerzas por crear interfaces intuitivas que hagan que las tareas de los usuarios sean más simples y agradables. Ahora, una cosa que también va a ser muy importante a la hora desarrollar software es cómo se ve todo en general, la forma en que has presentado tu aplicación. Si tu aplicación parece que fue construida en los días de Windows 95, entonces va a parecer vieja, anticuada, y no va a ser atractiva en comparación con otra aplicación, aunque la tuya pueda ser muy superior. Si no se ve tan bien, no tanta gente lo va a probar. Es solo la desafortunada realidad del mundo. No sólo hay que hacer un programa que funcione excepcionalmente bien, también tiene que verse bien. Por lo tanto, no le hará daño tomar una experiencia de usuario o una interfaz de usuario, por supuesto para ir junto con esto después para mejorar sus habilidades de diseño de interfaz de usuario, si eso tiene sentido. Y eso es, por supuesto, sólo si eliges ir por la ruta del software en el futuro. Pero ahí lo tienes simple introducción al desarrollo de software para aplicaciones de escritorio. A medida que profundizamos en esta sección, exploraremos algunas de nuestras herramientas esenciales, supongo que podemos llamarlas mientras usamos TDScript aquí Y algunas de las cosas que puedo ayudarte con algunos de tus principios de diseño para ayudar a hacer una aplicación de escritorio fácil de usar. 67. Anclajes: Hola a todos. Y antes empezar a crear algo, necesitamos hablar de anclas. ¿Qué son los anclajes Bueno, los anclajes son herramientas poderosas que te ayudan a crear interfaces de usuario receptivas y flexibles para tus juegos y aplicaciones de software Los anclajes se utilizan de manera efectiva para adaptar su elemento de interfaz de usuario a diferentes tamaños de pantalla y proporciones de aspecto Vamos a sumergirnos en eso. En Goto, los anclajes son ataduras invisibles que unen elementos de la interfaz de usuario a los bordes del contenedor o pantalla padre Definen cómo el elemento UI debe escalar y posicionarse cuando el contenedor principal o la pantalla cambia de tamaño Esto garantiza que su interfaz de usuario siga siendo consistente y fácil de usar en varios dispositivos y resoluciones. Para entender mejor los anclajes, imaginemos que tienes un botón de interfaz en el menú principal de tu juego Desea que el botón permanezca en la esquina inferior derecha de la pantalla, independientemente del tamaño de la pantalla o la relación de aspecto. Para lograrlo, anclarías la posición del botón a la esquina inferior derecha de su contenedor padre o a la pantalla. Entonces a esto, agarraríamos nuestro botón, y estos pequeños pines verdes son nuestros anclajes. Entonces, si los movemos a todos a la esquina inferior derecha, e íbamos a echar un vistazo a la escena aquí, sin importar el tamaño que la hagamos, siempre va a permanecer en esa esquina inferior derecha de manera consistente, mientras que si la dejamos por defecto, que estaría en la esquina superior derecha, perdón, esquina superior izquierda. Y lo fijamos. Y si fuéramos a correr eso ahora, verás que se queda en esta posición relativa a la esquina superior izquierda, independientemente de dónde esté la esquina inferior. Y como puedes ver, la parte inferior de la misma no importa y podemos quitarla completamente la pantalla con tan solo hacer una pequeña. No obstante, si nuestras anclas estuvieran en la parte superior izquierda e inferior izquierda, y tuviéramos que echarle un vistazo a eso, va a permanecer en esa posición, pero también se va a estirar en la parte inferior, porque va a ser así de cerca fondo y ese cierre en la parte superior hacia la otra esquina Y todavía podemos, por supuesto, pasar. Para que puedas ver cómo los anclajes pueden afectar cómo se verá tu UI al final del día Entonces, si quisiéramos esto en la esquina inferior derecha, vamos a poner nuestras anclas en la parte inferior derecha Y ahora esa parte de nuestra UI siempre permanecerá en esa posición relativa a esa esquina. Ahora, cuando ejecutas el juego en diferentes dispositivos o cambias el tamaño de la ventana como estás viendo ahí, el botón ajustará automáticamente su posición en función de los anclajes, asegurando que permanezca en la esquina inferior derecha en todo momento Ahora, en goto, puedes usar los presets de anclaje para establecer el comportamiento deseado de los elementos de la interfaz de usuario Estos ajustes preestablecidos incluyen arriba, izquierda, derecha, abajo. Los anclajes son elementos en los bordes especificados de su contenedor o pantalla padre Centro vertical, centro horizontal, ancla los elementos al centro vertical u horizontal de su contenedor padre o la pantalla y llena nuestra última opción aquí, ancla el elemento a los cuatro bordes haciendo que se estire y escale con el contenedor padre o Entonces si quisieras, digamos, una imagen para rellenar siempre la parte de atrás, por ejemplo, si entramos e hicimos un rect de color aquí, y llenamos la pantalla Entramos. Tenemos este bonito color oscuro. Aquí tenemos un marrón oscuro. A lo mejor queremos ir con un sutil verde oscuro para nuestro fondo. Y si no tocamos los anclajes, dejamos todo por defecto, y se puede ver que tenemos un problema aquí Sin embargo, si usamos en este caso, solo podemos usar el preset para bull wreck para poner nuestros pines en las cuatro esquinas, ahora siempre vamos a tener nuestra pantalla completamente cubierta con este fondo En nuestro caso, nuestro color. Entonces, al usar presets de anclaje y personalizar sus valores, tiene un control total sobre cómo responden los elementos de su interfaz de usuario a cambios en el tamaño de la pantalla y la relación de aspecto Bien, ahí tienes una introducción a las anclas en Gato Al aprovechar el poder de los anclajes, puede crear interfaces de usuario adaptables y receptivas para sus juegos y software Ahora para los juegos, por supuesto, esto generalmente solo se aplicará a tu pantalla frontal, asegurando una experiencia de usuario fluida en diferentes dispositivos. 68. Diseño de búsqueda: Todo bien. Lo primero que vamos a hacer es que vamos a crear primero vamos a crear nuestra barra de búsqueda y lo que vamos a crear aquí. ¿Vamos a crear nuestra propia pequeña aplicación de escritorio que nos permitirá buscar un anime y nos dará una lista de resultados Tendrá todas las imágenes para todos los resultados de cada anime individual. Voy a tener el título. Voy a tener los géneros. Y si tuviéramos que hacer clic en uno, se abrirá. Nos va a dar una sinopsis. Tendrá una versión más grande de la imagen. Y si queremos echarle un vistazo, échale un vistazo más a fondo, podríamos hacer click en un enlace externo para llevarnos que se abrirá en nuestra aplicación predeterminada, que sería tu navegador web predeterminado si estás en PC. Y abre la página del anime para ello. Y lo primero que vamos a hacer en este video aquí es que vamos a crear la barra de búsqueda y el botón que te envió para ello. Pero vamos a empezar poniendo un fondo aquí porque esto es algo aburrido, ¿verdad? Lo abrimos y tenemos esta imagen aburrida, gris. Aquí vamos. Tenemos esta aburrida caja gris. No es demasiado emocionante. Y aunque le pongamos , como, una línea en el medio, no va a ser tan atractiva. Parece una especie de M, ¿verdad? Entonces lo primero que voy a hacer es que voy a conseguir mi nueva escena aquí. Por supuesto, lo llamé Principal. Se trata de una escena UI. Entonces mi nodo raíz es un control. Y voy a seguir adelante y agregar en una textura rect aquí. Voy a renombrar esto como mi fondo. Y por la textura, acabo conectarme y encontré un fondo de anime porque es un fondo de anime que encajaría para Anime. Así que simplemente seguí adelante y encontré uno, lo traje. Ahora, eso obviamente es demasiado grande para mi aplicación aquí. Entonces te darás cuenta si agarramos el asa, no podemos cambiarlo, pero podemos hacerlo más grande, pero no podemos hacerlo más pequeño. Entonces voy a entrar en el modo expandir en el inspector en el lado derecho y cambiarlo de mantener el tamaño a se podría decir ignorar el tamaño, encajar con la porción, ajustar la altura. Yo solo voy a ir con Ignorar tamaño y reducir esto hasta que PS cubra todos nuestros lados. Algo así. Y luego voy a seguir adelante y poner sus anclas a la ruina de toros. Aquí vamos. Eso va a establecer. Ahora, eso va a ser demasiado brillante para que podamos exhibir algo encendido. Así que en realidad voy a entrar en la sección de visibilidad en Min Spector Voy a entrar en el modular. En realidad, voy a ir auto modular en éste. En este caso, no importaría. Pero si usas modular, también afectaría a todos sus hijos, siendo este el trasfondo, no va a tener hijos Entonces va a estar bien, pero si solo quieres afectar a este nodo, solo vas a usar auto modular, y yo solo voy a oscurecerlo porque el mío es bastante brillante Creo que algo por ahí probablemente va a ser bueno. Entonces, ¿si sigo adelante y corro eso bien? Esa es mi ventana. Eso no es tan malo. No es demasiado brillante para quitarle nada, a pesar de que tenemos muchos blancos en mi caso. Todo bien. Entonces ese va a ser mi antecedente. Ahora bien, ¿qué pasa con la búsqueda real? Bueno, la búsqueda real, en realidad vamos a meter eso dentro de un contenedor. Y esto se va a poner dentro lo que se llama un contenedor VBox Y este es un contenedor vertical, ¿verdad? Entonces todo lo que pongas dentro de él se va a colocar está igualmente espaciado verticalmente. Entonces, si solo sigo adelante y traigo una textura, digamos esta textura de aquí mismo, ¿verdad? Usa esto como ejemplo. Entonces como lo veas, sólo vamos a seguir así de la siguiente manera. Entonces ahí tienes. Ahora, obviamente, no vamos a tener todos esos ahí, pero aquí se entiende la idea. Y solo para echar un vistazo aquí, si tuviéramos un control ahí dentro, eso ahí dentro, no haría ninguna diferencia. Todos estos permanecerían igual. Borro todos esos van. Ahora eso es porque nuestro control por defecto, tiene un tamaño de cero. Ponlo bajo diseños. Ahí está. Es transformar. Para que puedas ver nuestras tallas Y completamente cero en este caso. Y podemos ver que con nuestra transformación es en realidad lo más grande, así que no podemos tener su control. Entonces lo que haríamos es tener nuestro propio contenedor dentro del cert Entonces en nuestro caso, sigamos adelante y aunque los contenedores podrían estar bien, creo que solo vamos a ir con una configuración de Mrvust supongo aquí Así que vamos con una línea para nuestro SRT ahora, puedo ver que mi fondo realmente se esconde, así que solo voy a retocar esto todavía Se oscurece un poco más así que mi línea en él en realidad se destaca un poco Texto marcador de posición, busca anime aquí. Y seguiremos adelante y agregaremos un botón con eso también. Y el texto sobre esto solo dirá, señor. Eso un poco más ancho. Aquí vamos. Ahora, se puede ver que sí tenemos gris sobre negro. Va a ser. Es un poco difícil de ver. No obstante, lo único que realmente podemos hacer al respecto en este momento sería ir en dirección opuesta e ir con un enfoque más ligero, cual está perfectamente bien si eso es lo que querías hacer, algo así, tal vez. Obviamente, esto va a depender de tus antecedentes, pero esto es algo que sería reparable cuando lleguemos a la siguiente sección cuando realmente hablamos de personalizar todo Entonces nada se ve muy predeterminado y todo se ve mucho más profesional, diría yo. Ahora como un pequeño consejo aquí a la hora de hacer UI, si realmente llegas a la cima aquí, tenemos dos imanes. Uno va a ser un chasquido aquí. Como ves, tenemos algunos chasquidos inteligentes en marcha, y el otro nos va a dar una bonita cuadrícula que podemos romper. Y esto es lo que va a ayudar a que las cosas se vean bien. Vemos que esto va todo el camino hasta el medio ahí. Construyamos esto para estar en relación con la parte superior central. Y voy a hacer lo mismo con mi botón aquí. A Bien. Y ahora en relación a eso, obviamente voy a estar un poco demasiado alto. ¿Cómo se va a sentir eso? A ver si ejecuto eso. Echa un vistazo. Bien. Estoy sintiendo que aunque tal vez traigo eso ahí y extiendo eso podamos llenar nuestra caja llena aquí. Entonces bajamos nuestro botón de búsqueda. Tan pequeños como podamos ir, así que tal vez vayamos así con una caja en el medio. Si conseguimos algo así, creo que eso está bien para lo que vamos con aquí. Al menos, en mi opinión, no soy UI ni experto, pero al menos todo está alineado con la grilla. Así que tenemos un buen comienzo. Ahora, fíjate como mi botón y mi línea en él también tiene la misma altura también. Eso es sólo otra cosa que va a hacer que se vea un poco más cohesionado y darle la apariencia de ser más amable de lo que tal vez es lo Muy bien, así que voy a seguir adelante y nombrar estos, así que voy a llamar a esto mi barra de búsqueda, y este va a ser mi botón de búsqueda, ¿verdad? Eso va a ocupar la cima aquí. Y ¿hay algo más que cubrir en este libro? Voy a repasar la búsqueda. Creo que eso es todo, y luego vamos a tener nuestros resultados de búsqueda. Haremos nuestros resultados de búsqueda en un video separado. Todo bien. Entonces ahí está nuestra búsqueda básica. Ahora podemos entrar y empezar a escribir cosas . Tenemos uno. Attack on Titan es popular, y podemos presionar nuestro botón de búsqueda. Ahora, obviamente, no hace nada en este momento. Pero entiendes la idea, ¿verdad? Ahora, solo asegúrate de que esto se vea bien. Entonces sabemos dónde está la línea central aquí mismo. S uno, dos, tres, cuatro, así, uno, dos, tres, cuatro, así se nota eso. Estamos a cuatro cuadras a la izquierda, así como a cuatro cuadras a la derecha, así que mantenemos ese equilibrio en las imágenes también Pensé que lo había mencionado también muy rápido. Entonces sí tenemos expandiéndonos del mismo tamaño, así que nos mantenemos relativamente equilibrados. Y aparte de este espacio vacío, estamos bastante equilibrados visualmente en ambos extremos. Todo bien. Eso es todo para la búsqueda. En el siguiente video, continuaremos y configuraremos la sección para mostrar nuestros resultados. 69. Diseño de resultados: Bien, vamos a seguir adelante y configurar nuestra área de resultados de búsqueda Y solo quiero anotar aquí algo después. También vamos a tener un botón de opción aquí. Y esto va a ser para nuestros géneros para los que tendremos una selección desplegable. Y voy a seguir adelante y renombrar mi botón de opción a género Optas y te darás cuenta de que solo muevo mi búsqueda, mi botón hacia la derecha más y la línea a la izquierda un poco más, y tengo que configurar los anclajes para mi botón de opción aquí Creo que eso estuvo centrado. Así es. Ahora podemos entrar y puedo cambiar el tamaño esto y ser bueno. Prueba. Ahora si queremos, podemos seguir adelante y basarnos completamente en la parte superior. Eso también estaría bien. Todo bien. Entonces, sigamos adelante y configuremos nuestra sección de resultados. Entonces para eso, voy a seguir adelante y agregar en un contenedor de pergamino aquí. Y lo que esto va a hacer es que nos va a permitir o permitir que podamos usar nuestra rueda del mouse y tener esa barra de desplazamiento en el costado como vemos aquí. ¿Correcto? Y eso va a ser siempre que tengamos algo dentro va, se extienda más o más ancho que la caja que estamos usando aquí. Entonces, para nosotros, creo que vamos a estar bien en eso, y eso va a ser demasiado nuestro fuera. Ahí. Ahora, incluso esto creo que va a ser un poco demasiado para la información que vamos a tener aquí. Pero, ¿quién sabe? A lo mejor podamos hacer que funcione. Entonces voy a renombrar mi contenedor scroll para que sea Contenedor de sales. Bien, así que con nuestro contenedor scroll, podemos ver que aquí tenemos este pequeño triángulo. Y si tuviéramos que mover el mouse sobre, solo nos va a decir que un contenedor scroll está destinado a funcionar con un solo control hijo Esto sería como una caja en V o una caja H, etcétera. En nuestro caso, vamos a usar una caja V. Entonces va a ser un contenedor de caja vertical. Y eso nos permitirá seguir agregando artículos verticalmente, y podremos desplazarnos hacia abajo cuando los superemos. Entonces vamos a hacer vamos a agregar ese contenedor VBox aquí Y realmente no podemos hacer nada a partir de ahí. Entonces lo que haremos es adentrarnos en una nueva escena. Voy a seleccionar otro nodo aquí poder crear un contenedor de caja H como mi techo. Voy a crear dos bloques I y veamos, dos o seis. Sólo vamos a ir seis de ancho por ahora. Ahora, todo esto va a depender de cómo quieras ordenar el tuyo, claro. Ahora mi alineación va a ser desde el principio, lo que significa que voy a empezar por la izquierda y apilar la pila hacia la derecha. Si empezamos por el final, entonces nuestros artículos comenzarán desde el final. Así que mira una vez que agrego una textura rect aquí, voy a darle el icono goto por defecto Entonces ya ves a partir del final, va a empezar por ese lado. Empezar desde el principio. Empezaré por la izquierda y partiré desde el centro. Voy a construir desde el medio. Bien, así que sólo voy a usarlo para empezar desde el principio. De esa manera, nuestra imagen de nuestro anime siempre va a estar a la izquierda. Y esto va a ser miniatura de anime, imagen de anime, imagen de anime Llama a este anime resultado, supongo, desde mi contenedor. Y ahora quiero tener pienso directamente al lado de la imagen aquí. Creo que queremos tener el título en la parte superior, y luego directamente debajo de eso, tener todos nuestros géneros. Entonces, si seguimos adelante y hacemos eso, obviamente vamos a necesitar una caja V porque necesitamos ocupar una ranura dentro de nuestra caja H, ¿verdad? De lo contrario, puedes entrar y podemos agregar algo de texto aquí y agregamos otra etiqueta, va a estar directamente al lado así. Pero lo queremos directamente debajo, ¿ verdad? Queremos ir verticales. Entonces si solo lo dejo eso, por ejemplo, y agrego la caja adentro, ya ves cuando agregamos estas dos etiquetas dentro de esa vBox, se convierte en una pila vertical así ¿Correcto? Entonces vamos a hacer eso. Pero aquí vamos a establecer la alineación para estar en el centro. Y vamos a establecer el primer sello será el título de anime. El segundo sello será si puedo renombrarlo, géneros Anime. Y simplemente llamaremos a este contenedor Anime Info. Ahora bien, no me gusta lo cerca que está esto de esa zona, así que voy a subir a mi casilla H aquí. Y dentro del inspector, iré al Mvides Constanza Marque la casilla de separación, y puedo agregar una cantidad personalizada aquí. 20 píxeles. 30 pixeles, quién sabe, ¿verdad? Va a ser completamente ti echarle un vistazo, probar y ver cómo es lo que te gusta. Sólo lo voy a dejar en 30 por ahora. Y voy a guardar mi escena Anime resultado. Eso está bien. Ahora cuando vuelva a la escena principal a nuestro contenedor de resultados, haga clic en el contenedor VBox Ahora cuando entre y pueda instantáneamente en mi resultado de anime y verás si uso Control D y simplemente duplicarlo a través de. tenemos un montón entero. Y cuando lo ejecutamos, es como se vería, y podemos desplazarnos hacia abajo por todos nuestros resultados gracias al contenedor scroll. Todo bien. Ahora, al igual que la octava caja, cómo podemos tener una separación personalizada ahí. Podemos tener una separación personalizada con nuestra caja en V también. Sin embargo, no quiero tocar eso hasta después de que tengamos nuestras miniaturas y eso ahí dentro, y luego tal vez vuelva y lo retoque Pero con eso, tenemos nuestra configuración de pantalla de resultados. Todo lo que tenemos que hacer es solo instancia un resultado por cada resultado que tengamos y rellenar su información. Entonces, por ahora, ve a seleccionar todos mis resultados aquí, y solo eliminaré. Bien. Y eso lo hará por esta porción. A continuación, echamos un vistazo a realmente hacer una búsqueda con el fin de hacer un certificado que podríamos llenar nuestras ondas también en la siguiente 70. Hacer una búsqueda: Oh, chico. Bien, sigamos adelante y echemos un vistazo a nuestros resultados Ahora, para los resultados, vamos a usar esa base de datos de anime. Si vuelves atrás y echas un vistazo a la sección API cuando hablamos de API rápida y cómo convertir de Python a script GD, vamos a usar esa base Y como tal, acabo de copiar el código de esa conferencia. Entonces no hiciste eso, o necesitas regresar y echar un vistazo para recordar cómo hacerlo o para ver qué base de datos es, adelante y haz eso. Consígase a sí mismo. Sólo voy a poner un script en mi nodo principal aquí. A y sólo voy a pegar en todas mis variables. Entonces tenemos nuestros encabezados que miramos. Cómo configurar. Tengo mi URL base aquí, y tengo mis tres llega aquí, ¿ verdad? Nos permitió conseguir. Creo que nos permite cuatro diferentes, tenemos, dos de ellos, tres de ellos, perdón. Tenemos conseguir todo, obtener géneros y ranking. Ahora, creo que sólo vamos a necesitar conseguir todo para esto en lugar de conseguir géneros. Pero, ¿quién sabe, tal vez? Tal vez podamos Oh, no, vamos a necesitar nuestros géneros get para poder llenar nuestro menú desplegable. Entonces creo que el ranking es el que no vamos a necesitar. Sólo vamos a conseguir todos y conseguir géneros. Voy a deshacerme del ranking uno. Y entonces tenemos aquí nuestro texto de búsqueda o barra de búsqueda, nuestro género que vamos a estar buscando, y EXT significa la extensión de la imagen que vamos a estar obteniendo ahora veamos ¿qué más vamos a necesitar aquí? ¿Necesitamos algo más por defecto? No creo que necesitemos nada para. Entonces sigamos adelante y supongo, lo primero que vamos a hacer es conseguir nuestros géneros y llenar nuestro botón de opción. Hagámoslo. Vamos a necesitar una solicitud HTTP. Entonces agregaré uno a la escena. Y voy a ponerle nombre a esto mi petición de género. Así como así. Y además con eso, voy a seguir adelante y conectar mi señal para eso, la señal de solicitud completada en mi script principal aquí, borrar proceso. No necesitamos eso. Entonces ahora en nuestra función escrita aquí, puedo seguir adelante y puedo obtener nuestra solicitud de género, y podemos hacer esa solicitud HTTP, ¿verdad? Y esa va a ser nuestra URL más nuestros géneros et. Y podemos pasar en nuestras cabeceras como segundo argumento. Ahora, cuando recuperemos esos datos, recuerda, necesitamos analizarlos, así que vamos a decir, vamos a crear una nueva variable llamada respuesta. Vamos a establecer eso igual a body, string de tFight y veremos qué pasa si solo imprimimos la respuesta, y veremos qué recuperamos Bien. Así podemos ver todos estos pequeños dictarios individuales de un valor clave uno, y parece que todos nuestros géneros son valores del subrayado clave ID ¿Bien? Entonces dentro de nuestra respuesta aquí, necesitamos realmente tener este derecho Jsonified, porque solo tenemos una cuerda larga en este momento por técnica Entonces podemos llamar a esto nuestros géneros, si puedo deletrear, cadena JSON y poner en nuestro lugar, ¿verdad? Ningún error es bueno. Y ahora podemos entrar y podríamos imprimir decir respuesta. Podemos decir cuatro géneros y géneros género impreso, y queremos queremos recordar la clave para subrayado, minúscula I, minúscula D. Así que si jugamos esto ahora, deberíamos tener Ahí vamos todos impresos para nosotros aquí, Suspenso de acción galardonado para Eti Avant garde, deportes, fantasía sobrenatural, gourmet, drama, comedia Nosotros lo conseguimos. Así que ya podemos ver todos los géneros aquí. Fantástico. Entonces ahora necesitamos agregarlos realmente al menú de opciones que tenemos, ¿verdad? O subastas de género. Así que los hemos impreso. Lo que tenemos que hacer es agregarlos. Dirán género, subasta necesitamos realmente ponernos en contacto con eso Opciones de género. En el ítem. Y ahora vamos a añadir es ese ID de género que estamos imprimiendo. Y ahora lo jugamos ahora, podemos echarle un vistazo, y ahí están todos nuestros artículos. Ahora bien, vemos que esto es un poco más grande de lo que era. Así que es como chocar con nuestra barra de búsqueda allí. Entonces en este caso, tal vez quiera echarle un vistazo y luego tal vez deslizarlo por encima ahora que sé lo grande que es. Cómo encontrar un equilibrio en algún lugar de ahí. ¿Eso se ve? Creo que se ve bien. Cuando en realidad estamos de lado de nuestro proyecto ahora. Aquí vamos. Ahora tenemos todas nuestras opciones aquí. Siempre échale un vistazo a estas en todas nuestras opciones. Fantástico. Así que tenemos nuestro conjunto de género, y somos capaces de escribir lo que queremos ahí. Ahora, queremos tener un sustantivo octen en la parte superior. Así que en realidad voy a agregar un artículo antes de que empecemos. Así que en la lista, y yo sólo voy a poner esto a. No me gusta eso. Y eso debería seleccionarse automáticamente por defecto. ¿No me equivoco? Sí. Ahí vas. Y en vez de ninguno, si quisieras, podrías hacerlo seleccionar género si quisieras. El punto es, si tenemos eso seleccionado, entonces no vamos a estar introduciendo ningún género, ¿verdad? Va a estar vacío en nuestra búsqueda. Pero ahí vamos. Tenemos la porción de género llena y lista para crear nuestras búsquedas. Y ahora necesitamos la búsqueda real para obtener toda nuestra información, ¿verdad? Y puedes ver aquí, estoy recibiendo una página, pero mi talla es de 1,000 artículos por página. Entonces eso podría ser más que suficiente para llenar cualquiera de estos. Así que vamos a usar get all en nuestra siguiente solicitud aquí. Entonces sigamos adelante y agreguemos aquí una solicitud PTP más. Y esta va a ser nuestra llamada esta la búsqueda de anime. Y también conectaremos esa señal de solicitud completada. Y al igual que los dos primeros aquí, vamos a analizar el cuerpo, bien, obtener la cadena de UTFA y luego tenemos una variable, no géneros, sino esto animes Y ya tendremos una lista de todos nuestros animes. Entonces, si tuviéramos que imprimir estos, y vamos a supongo que podemos hacerlo hipotéticamente por ahora En realidad, configuraremos nuestro botón. Hasta ahora nuestro botón de búsqueda cuando se presiona, conecta esa señal de pulsación. Y aquí es donde nuestra solicitud Así que obtendremos nuestra búsqueda de anime quest, y tendríamos URL más G todos y pasaríamos en nuestros encabezados segundo argumento. Y antes de eso, necesitamos realmente llenar parte de la celda. Nuestros géneros, si tenemos alguno, tenemos que rellenar. Ahí los tienes construidos. Bien. Así que vamos a decir que llévate todo. Entonces en realidad voy a poner paréntesis alrededor de la variable u get all porque dentro de aquí es donde vamos a agregar marcadores de posición, Entonces por ciento y luego un par de corchetes. Y eso entra en la búsqueda del primero, marcador de posición y género o géneros para el segundo Bien, así que vamos con ¿qué tenemos que conseguir? Tenemos que obtener nuestro texto de búsqueda. Entonces nuestro texto de búsqueda va a ser lo que esté dentro de nuestra barra de búsqueda. Entonces vamos a decir que la búsqueda es igual a nuestra barra de búsqueda, texto. Y luego limpiaremos nuestra barra de búsqueda. O en realidad, no necesitamos hacerlo en este caso, ya que estamos haciendo una búsqueda real. Y nos aseguraremos búsqueda no sea igual a una cadena vacía. De esa manera tienes que hacer una búsqueda real, y de esta manera realmente recuperamos resultados pase lo que pase. No importa si no tenemos género. Sólo importa si tenemos una búsqueda. Ahora bien, no tenemos las partes de género establecidas, pero sigamos adelante y asegurémonos de que aquí podamos obtener resultados. Entonces vamos a entrar aquí y vamos a decir tack en Titan search. Y ahí vamos. Tenemos mucha información, y como veis, desbordamiento de salida, imprimir menos texto. Entonces tenemos mucha más información de la que la salida quiere permitirnos, lo cual está perfectamente bien. Pero podemos ver lo importante es, podemos conseguir que veamos toda esta información de nuestra búsqueda para que sepamos que nuestra búsqueda al menos está funcionando. Todo bien. Entonces, ¿qué pasa con nuestras opciones aquí? Bueno, para las opciones de género, seleccionamos nuestro menú de opciones. Vamos a conectar el elemento de señal seleccionado. Conéctalo a nuestro guión principal aquí. Y aquí vamos a crear una variable temporal. Y vamos a llamar a este género texto, y luego es igual a las opciones de género, nuestra barra de opciones. Sin embargo, el texto del ítem, y pasamos en el índice que se pasa automáticamente a nuestra función con nuestra señal, ¿verdad? Entonces obtenemos nuestro índice. Cuando hacemos clic en algo de nuestra barra desplegable, vamos a obtener el texto de ese elemento, y eso va a ser ajustado a nuestro texto de género aquí. Y ahora vamos a decir, en pocas palabras, solo podemos usar un partido aquí si queremos. Decir texto de género coincidente. Y si coincide con lo que pongamos platicar, que estamos usando género selecto. Ahora bien, si estás usando ninguno, entonces no pondrías ninguno ahí. Si coincide con eso, entonces los géneros equivalen a una cadena vacía. Y usaremos este guión bajo para actuar como comodín. Entonces, si no se trata de géneros seleccionados, entonces solo diremos géneros iguales al texto del género. Derecha. Ahora bien, si queremos probar esto, podemos seguir adelante y volver por ahí y simplemente imprimir géneros cada vez que seleccionemos una nueva opción. Entonces veremos abajo en nuestra producción cada vez que seleccionemos algo, deportes, comedia. Entonces vemos que todo esto está funcionando bien. Y si seleccionamos el género selecto aquí mismo en la parte superior, nada se pone prnted porque es una cadena vacía. Entonces ahí tienes. Tenemos nuestros géneros funcionando, y tenemos nuestro texto de búsqueda Ahora, lo último que tenemos que hacer cuando obtenemos nuestro resultado es que necesitamos saber cuántos resultados tenemos. Y en base a eso, podemos agregar nuestros artículos de resultado, ¿verdad? Entonces, si entramos aquí, ponemos una búsqueda aquí. En realidad, quiero que esto sea un poco más agradable de ver Entonces voy a usar animes JSON Spring Pi. De esta manera sería un poco más fácil decir lo que estamos viendo. Volveré a atacar a Titán , haré una búsqueda, y sí, no lo estoy imprimiendo. Ahí vamos. Bien, así que le pego a Titán para poder tener una mejor visión de lo que estamos viendo aquí No es así como quería que estuviéramos todo el camino hasta la cima. Entonces vemos que todo va a estar dentro de los datos. Bien. Entonces vamos a imprimir animes e ir a la sección de datos Y eso lo comprobaremos. De vuelta a Titán, formar una búsqueda. Y no válido obtener índice el. ¿Bien? ¿Qué hice mal aquí? Sólo piensa, oh, eso no nos va a dar nada. Eso en realidad sí nos dio algunas cosas. Eso es interesante. Oh, es una D minúscula, por eso. Tenía un asunto de capitalización de capital. Vamos a los datos. Forma la búsqueda en, echa un vistazo. Y sólo voy a desplazarme todo el camino hacia arriba. Bien. Entonces ahora tenemos todos estos. Entonces, por cada resultado dentro de los datos, podemos crear algo nuevo, ¿verdad? Entonces podemos decir, podríamos configurar nuestros animes ahora de nuevo, así que diremos animes iguales a datos de anime De esa manera, esto ahora solo contiene los datos en lugar de tener que pasar por esta clave extra sin motivo alguno. Ahora podemos seguir adelante y verificar. Podemos decir cuatro anime y animes. Anim va a escribir aquí pasado por un segundo, no tenemos una instancia o no tenemos nada cargado para crear una instancia desde Entonces voy a decir que el resultado de la barra es igual al resultado de anime aquí. Y vamos a cargar esa G. Y volver a bajar al anime y a los animes. Vamos a hacer RI para resultado de instancia de resultado, instanciate Oh, porque lo estamos haciendo pasar ahí dentro. Todo bien. Así dicen resultado de anime. Sí, lejos porque aquí tenemos una confusión. Está tratando de agarrarlo de la función aquí, así que está pensando que es un entero en su lugar. Así que sigamos adelante y llamemos a este cambio este resultado de anime punto instanciado Todo bien. Ahora vamos a obtener una VBox que está dentro de nuestro contenedor de resultados Y Niño. Y estamos en RI, ¿verdad? Entonces ahora si ejecutamos esto y hacemos una búsqueda que debería llenar completamente nuestro resultado ataque a Titan search. Ahí vamos. Y mira la cantidad de resultados de búsqueda que tenemos para atacar a Titán. Eso de aquí, búsqueda de secundaria. Y tenemos mucho más. Entonces, lo que realmente necesitamos hacer es aclarar eso porque aunque no lo podías ver, nuestros resultados están apilados uno encima del otro, agregando nuestros nuevos resultados a los antiguos. Entonces antes de buscar todos esos, necesitamos ir a nuestro contenedor VBox Y vamos a ver. ¿ Tenemos un claro o algo Bien. No veo ninguna manera de simplemente aclararlo, así que podemos simplemente pasar por otro bucle también antes de entrar en eso. Entonces podemos hacer ya sea un rato o un bucle for. Entonces, ¿cómo queremos decir mientras R vBox contenedor punto Niños ¿Eso nos va a devolver un entero? Padres en matriz de referencias. Bien, eso va a llegar a eso. Entonces queremos que los niños cuenten. Por lo que el recuento de Wilchild es mayor que cero. Vamos a obtener nuestro contenedor VBox, y sin embargo el índice Child cero, justo aunque tengamos un hijo que seguirá teniendo un índice de cero Así que básicamente vamos a eliminar constantemente al niño superior hasta que no nos quede nada e ir cuarto. Pon ahí un pequeño espaciador. Ahora ya ves si entramos, tack Piton busca tenemos la L llena Y si tuviéramos que mirar el contenedor remoto de Rsults o VBox, tenemos todos estos aquí Entonces, qué es ahora, qué vamos a hacer cuando realicemos otra búsqueda, vamos a agarrar la de arriba aquí, eliminarla. Se va a revisar. Sí, todavía tenemos al menos un hijo aquí. Agarra el siguiente, que se moverá aquí arriba, elimínelo, y así sucesivamente. Si entro ahora y si mantienes un ojo en el costado aquí, si recuerdas lo pequeño que se puso eso, entras, haces esa misma búsqueda, búsqueda secundaria, y vemos que no se hizo masivamente más pequeño cuando hicimos eso A pesar de que va a tomar un poco recorrerlos y eliminarlos todos, lo cual es un poco problemático. Así que podría ser más fácil eliminar completamente toda la VBox. Bien, así que intentemos simplemente eliminar todo el VBox en su lugar y crear uno nuevo cuando lo necesitemos, así que diremos, obtendremos nuestro contenedor VBox u tres Y luego solo agregaremos otro. S V NubX es igual a contenedor VBox, NuGet nuestro contenedor de resultados, agrega Neubox hijo, agrega Neubox hijo Entonces ya veremos cómo funciona eso. Eso ojalá sea mucho más rápido ya que no estamos pasando por potencialmente 1,000 resultados ahora. Entonces lo mismo ataque Titán buscar Todo bien. Teníamos una opción de valor nulo, así que entramos decimos lo que ha pasado justo aquí. Contenedor de resultados, y solo diremos obtener niño Niño cero BrvBx Bien, intentemos eso. Bien, entonces resolvemos el problema cambiando en lugar de obtener el VBox directamente, ya que siempre está cambiando y está teniendo un nombre diferente Por supuesto, podríamos haberle dado el nombre de nuestra nueva caja aquí, y eso probablemente también la habría resuelto. Pero en cambio, simplemente lo cambiaremos a aún Niño cero. Y lo hacemos también aquí arriba cuando nos ponemos libres. Y como parece que estamos tratando hacer las dos cosas al mismo tiempo, quitar y agregar, simplemente seguí adelante y llamé y espero 0.1 segundos, lo cual está bien. Es una décima de segundo. No te va a matar. Entonces, si seguimos adelante y lo ejecutamos ahora, podemos seguir adelante y hacer ataque de búsqueda en búsqueda de Titán. Dale un segundo. Ahí vas. Vemos lo grande que es nuestro bar aquí al costado. Cuando escribimos en secundaria o cualquier animes que se presente con eso, y buscamos, notamos que la barra se hace más pequeña porque va a ser más resultados Y notamos que todo el asunto sólo va a flashear, lo que simplemente está completamente despejado. Ahí vas. Y ya ves que tenemos esta pequeña ganga. Y luego para mostrarles que no se trata de apilar resultados, podemos volver a ese ataque apretado ahora deberíamos conseguir nuestra ganga más grande. Ahí vas. Bien, entonces en el siguiente video, vamos a seguir adelante y veamos Miniaturas haremos nuestras miniaturas y nuestra información aquí Entonces los títulos y los géneros. Vamos a llenar esa información a continuación. 71. Miniaturas, títulos y géneros: Bien, sigamos adelante y llenemos esas miniaturas, títulos y géneros Solo ve al espacio esto un poco, para hacer las cosas un poco más agradables para ver aquí Vamos. ¿Bien? Entonces esto obviamente va a estar dentro de nuestro anime aquí. Entonces vamos a agregar está bien. Y vamos a ver. Tenemos que conseguir nuestro así que sigamos adelante y empezamos con echamos un vistazo a nuestro resultado. Mira, tenemos que bajar a animar Info y luego al título del anime Entonces vamos a decir RI y podemos decir get child, get node. Bien. Vamos a simplemente usar get node aquí. Y a partir de aquí, podemos ver que bajamos a animar Info. Mi caso, y luego dentro de ahí, podemos obtener el texto del título del anime. Y podemos ponerle eso al anime. Creo que se llama título en nuestros resultados. Entérate muy rápido, ya que acabo de probar nuestra escena principal y realizar una tachueta de búsqueda en Titan, busca Y no es una función inexistente, se está anulando. Me equivoco, Typo, Bien, así que ahora tenemos todos nuestros títulos instalados aquí. Entonces ahora la pregunta es, ¿dónde están ubicados estos géneros? Y para eso, honestamente no lo sé de la parte superior de mi cabeza aquí. Pero lo que voy a hacer es que voy a imprimir JSON, estringificar, animes y obtener nuestro Me gustaría que esto fuera más fácil de ver. Entonces voy a agregar un espacio aquí como mi segundo resultado a cadena de Pi, y solo voy a ejecutar eso otra vez. Y eso va a ser mucho más limpio para mirar aquí abajo. Sinopsis del ranking de estado. En verdad, el género no es nada. No tiene ninguno. Eso es bastante interesante. Sí, parece que solo se le llama géneros. Tan parecido al título. Vamos a obtener nuestro nodo y obtener esa propiedad de texto del mismo. Y a éste se le llamó géneros de anime. ¿Y eso es igual a los géneros de anime? Sí. Todo bien. Entonces, si echamos un vistazo a eso ahora, veamos etiqueta en Titan SERT Y no. ¿Invalt? Sí. Oh, porque se ha conseguido array como resultado. Bien, entonces tendremos que convertir esto en una cuerda. Echemos un vistazo. Entonces, si vamos a buscar ayuda y vamos a array, ¿echamos un vistazo? A ver. ¿La matriz tiene dos cadenas? Yo no lo creo. No, no parece que lo haga. Entonces eso está bien. Podemos simplemente convertirlo en una cadena y pinchar STR y envolverlo con un par de paréntesis así Sin embargo, sin embargo, creo que aquí no vamos a obtener el resultado deseado. Entonces, si seguimos adelante y completamos esta búsqueda, se puede ver que estamos obteniendo estos corchetes y eso sigue involucrado. Entonces, lo que debemos hacer en cambio es ejecutar un bucle aquí. Diré cuatro géneros en géneros de anime. Entonces decir texto más igual género más voy a poner una coma con el espacio. ¿Sabes qué? Creo que lo haremos por separado solo para evitar cualquier problema. Entonces aquí vamos a tener dos líneas. Entonces, si ahí tenemos más géneros, entonces agregaremos una coma con el espacio, y luego agregaremos el género De esa manera no terminamos con un espacio de coma al final de nuestra lista Ahora solo estamos agregando géneros cuando si tenemos géneros que agregar. Entonces nuestro primer resultado no va a ser sólo un par de corchetes. Va a estar vacío. Oh, bueno, en este caso, va a ser completamente tener lo nuestro predeterminado ahí dentro, pero podemos ver drama de acción, ganador de premios de acción, tambor, suspenso, tambor de acción, suspenso Mucho drama de acción. Algunos de estos, ahí vamos. Aventura comedia fantasía. Nuestro impuesto por incumplimiento necesita salir de ahí. Estoy así que está bien. sólo podemos aclarar eso aquí, ¿verdad? O simplemente podemos seguir adelante y limpiarlo aquí. De cualquier manera está perfectamente bien. Y creo que voy a limpiar el mío ahí mismo. No hay problema. Entonces, si lo ejecutamos ahora, deberíamos estar bien para irnos. Y ahí Aunque tenemos el com al principio, poco desafortunado. Debería ser una solución fácil. Debería ser una solución rápida. No hay problema. Una vez que hayamos terminado con todo eso, debería poder simplemente llamar Ups En realidad, sí, texto punteado. Todo bien. Así que acabamos de recortar el prefijo de la misma. Entonces, fuera de nuestro bucle de proa cuando terminamos, agarramos nuestra propiedad de texto, y la colocamos igual a lo que sea que nuestro texto esté en nuestra estela de género Y llamamos prefijo de recorte, y solo estamos recortando ese espacio de coma Todo bien. Entonces ahí tienes. Eso debería arreglar completamente eso. Entonces, si seguimos adelante y formamos una búsqueda ahora, hacemos tack en apretar la búsqueda. Aquí vamos. Vemos todo apareciendo Justin debería. Es genial. Entonces ahora tenemos que mirar nuestra imagen. ¿Cómo obtenemos esa imagen para cada una de nuestras cosas? Bueno, vamos a necesitar otro HTTP aquí. Y vamos a llamar a esta búsqueda de imagen. Y lo adivinaste, vamos a conectarle la señal de solicitud completada a nuestro guión principal aquí Y voy a subir eso. Y creo que lo voy a poner aquí con el resto de nuestras cosas y espaciarlas. Bien. Entonces ahora cuando tengamos esto, tenemos lo que tendríamos nuestras imágenes aquí. Por lo que tendríamos que formar nuestra búsqueda aquí. Estamos recibiendo mucho de eso. Entonces en nuestra solicitud de búsqueda de anime, por encima de nuestro bucle for, queremos hacerlo arriba Veamos. Hagámoslo aquí arriba. Una vez que tengamos nuestros datos de anime, entonces haremos nuestra solicitud. Dirán imagen, punto de búsqueda. Búsqueda. Y colocaremos nuestra URL, que va a ser animes. Y creo que solo se llama Imagen Y para comprobarlo, podemos seguir adelante y sólo vamos a imprimir Gotcha, claro Y no necesitamos nuestro hecho de JC cinco, en realidad podemos verificarlo aquí antes de comenzar a imprimirlo Sí, la imagen es exactamente lo que necesitamos. Perfecto. Ver, ahora hacemos una búsqueda. Oh, no válido Obtener imagen en matriz base. Esa es una pequeña ciudad, ¿verdad? ¿Cómo es en una matriz Bs? A ver. Bien, entonces seguiremos adelante y solicitaremos imagen de animes. Y luego dentro de nuestro bucle de proa aquí. No, aquí abajo donde obtenemos nuestra solicitud. Podemos hacer podemos crear nuestra tecnología, guardar nuestra imagen imagen nueva. Y vamos a que podamos igualar aquí dependiendo de qué tipo de extensión sea. Por lo que vamos a hacer coincidir EXT con la extensión. ¿Eso va a deshacernos de nuestro error por ahora? Bien. Así que tendremos que conseguir nuestra extensión aquí antes de que podamos hacer cualquier cosa. Entonces digamos, XT justo antes de que hagamos nuestro resultado. EXT equivale al Simage de Anime. Sin embargo, extensión. Y eso nos va a dar el fin de URL, nos va a dar PNG, JPEG, web P, TGA Y de esa manera, cuando coincidimos con la extensión, podemos igualar EG. Podemos hacer coincidir JPEG o JPEG. Podríamos hacer coincidir la P web, o podríamos coincidir con TGA Y como es normal, ninguno de estos coincide, vamos a seguir adelante tirar en un comodín y sólo imprimir sistemas diciendo, no se puede imagen Y dentro de todos estos, vamos a seguir adelante. Haremos image, load, y vamos a estar cargando desde buffer, así que cargaremos E y G desde buffer. Y este va a ser nuestro cuerpo. Este es nuestro cuerpo, y estamos haciendo lo mismo en Ali, solo de diferentes tipos. Carga desde JPEG desde búfer, carga P desde búfer y carga TGA desde búfer Todo bien. Entonces eso nos va a dar nuestra imagen. Podemos seguir adelante y después de esto es que sí quiero hacer Du. Todo bien. Entonces seguiremos adelante y obtendremos una nueva variable, textura Imagen, textura nueva. Hacemos conjunto de puntos de textura Imagen. Y pasamos en Qué haces Oh, porque todavía estamos dentro de la Batería. Este turno y tabulador. Sí. Así que establece la imagen, y lo que vamos a poner ahí va a ser nuestra imagen variable. Y luego vamos a devolvernos la textura. De esa manera podemos usarlo en otro lugar, que significa que cuando hacemos nuestra solicitud aquí, digamos, nuestra miniatura es igual a nuestro valor de retorno de nuestra solicitud aquí Puedo deletrear correctamente. Ahora mismo dentro de aquí, por supuesto, antes de terminar, necesitamos realmente obtener nuestra miniatura aquí, que es nuestra imagen de anime Punto obtener nodo, Anime. ¿Vamos a agregar Manfo No. Nosotros no. Todo bien. Entonces, qué cosas. Aquí hay alguna imagen de anime que es con api, creo. Imagen de anime. Hacer. La textura es igual a la textura. En realidad, miniatura. ¿Cómo está aquí? Bien, y parece que estoy señalando un vacío aquí, así que tenemos que terminar de arreglar eso Tal vez regrese de nuevo en textura de imagen. Y eso es sólo si tienes las flechas apuntando, ¿verdad? Entonces, si tienes estas flechas aquí, apuntando a void, diciendo que return void en tu solicitud HTTP para la solicitud de imagen, tienes que ir por ahí y cambiarla a textura de imagen. W señalarlo porque ahí es donde estás girando aquí, el final. Y te mostraría esto funcionando ahora, pero de hecho uso todas mis solicitudes por día. Entonces voy a tener que poner esto en pausa y o tirarlo justo al final de este video o volver a él la próxima vez y mostrarte que funciona. Supongo que eso lo hará por ahora ya que ya no tengo más solicitudes de EPI He alcanzado mi límite diario. Entonces eso lo hará aquí y nos vemos en la siguiente sección. Bien, así que no necesitaba hacer un pequeño cambiador. Moví la información que teníamos en la parte superior de nuestra solicitud de búsqueda Animate completa Tengo estos he movido esas tres líneas hacia abajo y agregado en espera. Entonces estamos asignando nuestra extensión justo después de los cuatro bucles para, por supuesto, animar y luego image dote extension, para que sepamos qué tipo de imagen es Entonces obtenemos nuestra solicitud de imagen y realizamos la solicitud de URL, ¿verdad? Imagen de anime. Y probablemente deberíamos estar pasando en nuestras cabeceras también ahí. Entonces esperamos. Y esta vez en el pasado, siempre hemos creado un temporizador para esperar una cantidad de tiempo establecida. Esta vez, estamos usando una espera para esperar nuestra solicitud de imagen, solicitar señal completada, así que estamos esperando hasta que ya hayamos obtenido la información que necesitamos. Y luego estamos configurando la textura de nuestra imagen de anime a nuestra textura variable, y aquí es donde he hecho un ligero retoque. He cambiado la textura para ser solo una variable global aquí. Bueno, global en forma de estar en la cima de nuestro guión. Y si me desplazo hacia abajo, dónde está aquí, seguí adelante y aquí estamos haciendo lo mismo. Simplemente no estamos devolviendo textura. Acabo de crear la textura como una variable externa, lo que significa que tuve que volver aquí y pegar de una textura perdida de nuevo a vacío. Ahora la razón por la que hice eso es porque por cualquier razón esto estaba regresando como un entero en lugar de los datos. Así que simplemente lo cambié esta manera para que estemos configurando los datos aquí, aquí, pero la variable existe fuera de esa función. Entonces por eso no tenemos que regresar. Y también para evitar problemas, yo realmente problemas, pero API limita aquí. Seguí adelante y cambié mi talla a tres para que solo obtuviera tres resultados porque estamos haciendo una llamada API por cada resultado que obtenemos, ¿verdad? O no realmente una llamada API, pero estamos haciendo una llamada UR, por lo que no necesitamos los encabezados aquí. ¿En qué estoy pensando? No para la imagen? Entonces, si quisieras mantener eso más alto, podrías. No va a doler nada. Es sólo tres va a ser mucho más rápido. Si entramos en el default, que es 100 y tomamos abierto eso ya está capturado y ya decimos ataque Titán, ex SERT Esto es lo que deberíamos estar viendo aquí. Y vemos que tenemos nuestro nombre, tenemos nuestro anime, y tenemos todos nuestros géneros que por debajo. ¿Correcto? Entonces ahí tienes. , bla, bla, Sam, y nosotros SERT, boom. Ahí vamos. Vemos que todo funciona perfectamente bien. Y si quisieras, si estuvieras haciendo mil, como lo que yo tenía ahí arriba, solo tardará un poco más. No sé por qué pensé que iba a usar mis llamadas API adicionales ahí, pero una ligera pérdida de pensamiento, supongo. Podemos entrar y puedes ver que llegamos algún lugar que creo que la secundaria tuvo aún más resultados, ¿verdad? Entramos, vamos así, y ya puedes ver, mira ese bar. Simplemente sigue yendo muy pequeño, sigue yendo, sigue yendo porque tenemos que conseguir que todas esas imágenes se vayan, y finalmente se detuvo. Y se puede ver que tenemos todas las imágenes, todas estas. No falta nada. Pero ahí tienes. Así que eso funciona. Solo teníamos que mover básicamente nuestra variable de textura a estar en la parte superior de nuestro guión en lugar de devolverla. Y puedo descomentar esos que podemos tomar nuestros géneros ahora. Y básicamente movió nuestra extensión y solicitud de imagen hacia abajo después nuestra Esos son los únicos cambios que hice ahí, ¿verdad? Antes me inclino y agrego demasiado mucho porque creo que solo voy a agregar esto al video anterior. Bien, ahí tienes. Por lo que funciona perfectamente bien. Y a continuación, echaremos un vistazo a abrir nuestra página con la sinopsis de la historia y nuestra cualquier otra información como el enlace externo y todo eso 72. AnimePage: Todo bien. Así que sigamos adelante y mostremos nuestro panel que va a aparecer con los detalles de nuestro programa, como nuestra sinopsis y tendremos una vista clara de nuestra miniatura Y si queremos, podemos seguir adelante y poner el título y las etiquetas ahí también si quisiéramos. Ahora, lo que he hecho es que he seguido adelante con mis resultados, y he agregado en solo un botón que dice vista. Ahora, hay una variedad de formas en las que puedes hacer esto, pero solo tengo una que dice vista. Y en mi escena principal, he añadido una ventana. Yo solo tengo un texto directo dentro. Y ten en cuenta que no puedes mover la ventana en sí porque no puedes agarrarla. Entonces tendrás que ir al inspector e ir al layout y transformarte. Ahí está en la ventana y posición. Y luego cuando quieras mover las cosas dentro que son hijos de ella, como mi miniatura aquí, que es solo una textura, ¿verdad Tengo que bajar a maquetar Transformar y jugar con mis números aquí para poder mover las cosas. Por ejemplo, la posición aquí, si quiero moverla, tengo que ir así para colocarla. Pero estoy teniendo en cuenta en el lado izquierdo ahí para mi miniatura También voy a añadir una etiqueta, y este va a ser mi fin de título. Voy a poner algunas palabras aquí solo para que pueda tener una idea de dónde se coloca esta etiqueta. Voy a ir a maquetación Transformar, y voy a encontrar un buen lugar para posicionarlo, digamos, ¿Y si vamos 300 por encima? Eso podría ser un poco demasiado excesivo, 203 20. Oh, eso es correcto. Estamos en el centro. Yo sí creo. A ver. Lo puse en 200, lo que sería muy por aquí, en realidad. Eso es interesante. Así que me gustaría tal vez respaldarlo un poco más, bajar 50. Bien, voy a ir con 160 y quizá bajarlo por diez. Para que pueda sacarlo del borde ahí. Entonces ese va a ser nuestro título. Y voy a seguir adelante y duplicar esto solo con el título de Anime selectic D. Llama a esto nuestras etiquetas de anime, ¿verdad Y aquí donde vamos a tener drama, acción, fantasía, etcétera Entonces esto va a ser bajo. Nuestro título. Así que ven aquí abajo, diseñamos, transformamos, y bajaremos RY a 30, 30 podría ser más o menos correcto. Tal vez 40. Sólo para aclararlo un poco. Y ahora necesitamos algo para el texto. Entonces, ¿qué queremos poner ahí? Podríamos hacer etiqueta se pone un poco verdosa. Podríamos hacer una etiqueta de texto enriquecido. Bueno, creo que eso es lo que vamos a hacer. Tenía una etiqueta de texto escrito, tal como se ve aquí, lado Ahora bien, la desventaja es que realmente no podemos ver nada. Solo voy a seguir adelante y poner un montón de texto aquí solo para que podamos tener una buena idea de nuestro tamaño para simplemente enviar spam un poco ahí dentro, ir a nuestro diseño, transformar. Tamaño. Eso son 100. Creo que 300 es probablemente bueno ahí. Tal vez 400 ahí. Y veamos sobre esa posición. Ahora bien, ¿dónde exactamente voy a querer esto? Lo queremos directamente a continuación. Podría ser la mejor opción para eso. En cuyo caso, ¿cuáles son las X para estos? 179. Tienes alguna Ups Ese es el tamaño. Posición W 160. Y luego lo voy a bajar por unos 100, y esta será nuestra historia. Donde va una sinopsis. Entonces diremos sinopsis del anime Bien, así es como va a quedar mi ventana. Podría necesitar ajustar esto después de ver que la miniatura se pone en Pero por ahora, voy a estar contento con eso. Y voy a volver a mi resultado de anime. Voy a agregar un guión a mi resultado de anime, y voy a conectar la señal presionada. Voy a reconectar eso aquí. Desconecta solo conéctalo de nuevo. Todo bien. Y vamos a necesitar algunas cosas personalizadas en la parte superior. Entonces vamos a tener una señal personalizada aquí y va a ser mostrar detalles. Y vamos a tener una variable personalizada aquí llamada sinopsis, que solo va a ser una cadena Y aquí tendremos nuestra función lista. Y en nuestra lista cuando este objeto se cargue en nuestra escena, vamos a seguir adelante y conectarlo con nuestra señal personalizada a nuestro nodo principal aquí con su script en él. Así que vamos a hacer self dot connect, y seguiremos adelante y mostraremos detalles llamables y recordaremos que el primer argumento es a lo que quieres conectarlo, así que queremos ir a tres padres arriba, digamos get node, digamos get node, y hacer dot dot slash dot slash dot slash dot slash dot slash Eso nos llevará a tres padres arriba. Y el segundo argumento va a ser el nombre de la función. Entonces lo voy a llamar Show Window. Y lo coloco en el interior del nodo G en lugar del exterior. Aquí vamos. Y voy a seguir adelante y hacer esa función antes de que me olvide en mi ventana principal de show de guiones. Ahora, cuando se presione nuestro botón, vamos a emitir la señal, emitir nuestra señal personalizada, mostrar detalles. Y vamos a hacer una coma porque vamos a pasar algunos detalles adicionales o información adicional con ella, ¿verdad Entonces vamos a pasar una textura, así que voy a crear una nueva ordenación de variables. Entonces miniatura, eso va a igualar nuestra textura de imagen de anime Así que esa será cualquier miniatura que sea para este objeto específico Y estamos tomando esa textura y la vamos a enviar con nuestras señales. Vamos a enviar esos datos, y también vamos a necesitar enviar nuestra sinopsis Nuestro título y géneros. Eso es mucha información aquí. Y vamos a tener que hacer esto también. Entonces vamos a ver. Aquí abajo, veamos nuestro título es igual. Y lo conseguimos del título de Anime aquí. Título de anime. Y esto es todo lo que ya hemos puesto texto. Y nos va a decir que los géneros no están definidos. Géneros iguales Anime géneros texto. Y la sinopsis ya está definida en la parte superior. Impresionante. Todo bien. Así que ahora estamos enviando toda nuestra información. Ahora, sólo voy a copiar todos estos argumentos para que los obtenga en el orden correcto. Regresa a mi script principal, mi función show window, y voy a pegar mis argumentos en. Entonces, lo que vamos a hacer con esto es, bueno, antes que nada, tenemos que mostrar realmente nuestra ventana. Entonces voy a poner mi ventana ahí abajo, y voy a llamar a Pop up centrado para que aparezca justo en la pantalla central. Entonces voy a obtener mi miniatura aquí, la textura destrozada dentro de la ventana y establecer su textura en miniatura, los datos que enviamos Tenemos que establecer el título del anime. texto del título del anime es igual al título, los libros de anime, las etiquetas, el texto es igual a géneros, y luego necesitamos una sinopsis Anime sinopsis hacer. Texto. Agrega texto con una etiqueta de texto enriquecido, agrega texto y sinopsis Ahora, por el momento, no hemos pasado ninguna sinopsis a nuestros objetos Entonces vamos a necesitar echar un vistazo y ver cómo se estructura eso. Entonces voy a descomentar mi archivo Stringify JCN aquí. De esa manera, puedo echarle un vistazo a cuál es el nombre de la sinopsis Estoy bastante seguro de que solo se llama sinopsis, pero quiero asegurarme Yo sólo voy a seguir adelante y ejecutar esto y realizar una búsqueda. Estos atacan nuevamente a Titán. Y sí, sí, sí, está bien. Eso no tiene por qué estar ahí. Ustedes no deberían tener eso ahí dentro. Se me olvidó borrar eso antes. Pero conseguimos la salida, y eso es lo principal que estaba buscando. Y sí, solo se llama sinops. Todo bien. Entonces vamos a ver. Cuando ponemos en, hacemos a nuestros géneros un texto en la extensión y miniatura Establecemos la textura, establecemos el texto. Y justo antes de agregarlo, agregamos nuestro objeto, derecho, nuestra instancia de resultado, vamos a seguir adelante y necesitamos establecer la sinopsis Entonces punteo Sinopsis. Claro que lo deletreé bien. Sí, sí, todas las minúsculas equivalen a sinopsis de anime. Bien. Voy a seguir adelante y ejecutar eso otra vez. Diga ataque a Titán búsqueda. Voy a correr a través. No tenemos problemas. Fantástico. Ahora nuestra vista está algo por todas partes, lo cual es un poco desafortunado. Pero estoy seguro que podemos arreglarlo con solo establecer manualmente el tamaño. Pero voy a seguir adelante y simplemente haga clic en ver, así que deberíamos obtener esta miniatura Bueno, vamos a conseguir uno que tenga dos etiquetas con él y géneros. Y como pueden ver, necesito cambiar todo a la derecha. Y para eso es esta prueba, ¿verdad? Entonces vamos a ver inspector de títulos, así que sólo voy a dejarlo funcionando aquí. Y probemos 2025250 se ve mejor. Y haré lo mismo con nuestras etiquetas, 250, y nuestra sinopsis 250, ¿verdad Así que todo ha sido cambiado. Y veamos, podemos desplazarnos hacia abajo por nuestra sinopsis si es necesario Todo bien. El reg. Tenemos esa puesta en marcha. Ahora, en realidad no podemos cerrar nuestra ventana, así que tenemos que arreglarlo por nosotros mismos aquí. Entonces seguiremos adelante y cerraremos eso. Y para eso, vamos a tener que ir a nuestra ventana y conectar la señal cerrada solicitada. Nos conectaremos a nuestro principal, y sólo voy a seguir adelante y moverlo hacia arriba. Vamos. Entonces cuando tengamos una solicitud para cerrar, eso va a ser cada vez que hagamos clic en esa X en la esquina. Todo lo que vamos a hacer es esconder la ventana. Así que vamos a conseguir nuestra ventana, y vamos a llamar a Hide. Tan simple como eso. Y vamos a ver. ¿Qué podemos hacer con nuestra caja aquí? Bueno, podríamos hacerlo más amplio. ¿Qué pasa con nuestro título de anime? Creo que solo podemos configurarlo para que haga clic. Todo bien. Ahora bien, ¿cuáles son estos modos de envoltura automática específicamente? Debido a que estas no eran fuerza de hierba, digamos, arbitrarias envuelve texto dentro del rectángulo delimitador de la nariz, permitiendo romper líneas. Sí. Bien ese suena bien. Rotura suave, no. Bien, así que voy a usar Word Smart Oh. A lo mejor no vamos a usar eso. Eso lo rompió por completo ahí. Arbitraria. No. La palabra podría ir con palabra, pero eso simplemente no es ir ahí. Entonces, bien, lo que voy a hacer es que solo voy a presionar Clip text. No me gusta que eso fue un poco Ese tamaño solo fue a uno. No eres así. Entonces, ¿qué podemos hacer aquí? Entonces, qué voy a hacer para arreglar eso solo quiero que mi botón esté dentro de mi cuadro de información animado aquí De esa manera, es justo en línea con nuestro género de título y luego nuestro botón. Y he puesto mi botón a No soy un botón. Aquí configuré mi caja de información de anime. Pongo la horizontal para llenar y giro para ampliar. Y ahora lo que voy a hacer es que voy a establecer el título del anime, la alineación horizontal para que esté en el centro y en el centro vertical. Y voy a hacer lo mismo con los géneros aquí, centro centro. Y luego para el texto del botón, el texto del botón debería estar centrado, aunque eso debería ser bueno. Entonces sigamos adelante y abramos esto, a ver cómo se ve ahora. Digamos, ataque a Pitón Bien, así que ahí vamos. Así que se extiende todo el camino a través. Oh, esa ha ido un poco demasiado lejos. Eso podría ser un problema de mí, sin embargo. Podría poner algo, jodiendo. Eso pudo haber sido ahí. Intentemos eso de nuevo y asegurémonos de que eso fue algo que dejé en Bien, así que eso es simplemente estirarse por todo el camino porque tenemos un título o algo que está a lo largo. Todo bien. Bueno, ya puedes ver, solo es cuestión de jugar con estas cosas ahora y conseguir algo que te guste. Entonces tal vez solo vuelva a mi información de anime, y tal vez simplemente apague eso. A lo mejor sólo apague a Phil. Yo solo tabulé hacia atrás y le echo un vistazo. Mira que se ve bien ahora. Nuevamente, nuestros botones simplemente no son del mismo tamaño, así que es solo cuestión de jugar con él y encontrar algo que te guste visualmente después de eso. Pero lo importante es que podemos bajar y podemos escoger uno, boom, y ahí vamos, desafortunadamente, elegimos uno sin etiquetas en la SEC. A pesar de que ya hemos seleccionado uno, podemos seleccionar otro, y no afecta nada. Todavía tenemos las etiquetas de título, y puedo ver todo ese texto predeterminado ahí. Tenemos que aclarar eso. Entonces vamos a ver. Va a estar en nuestro guión principal. Veamos antes de poner ese texto. ¿Dónde está? Bueno, si borro eso por culpa, todavía vamos a tener? Esa es la pregunta. A ver. Sinopsis, borre todo eso Y veamos si eso funciona, o si todavía tenemos una sinopsis vieja ahí dentro Bien y vamos con eso otra vez. Bastante gracioso, en realidad nunca lo he visto. Entonces vamos a ver. En su primer día de secundaria. En su primer día de Junior. Bien, entonces, sí, todavía tenemos texto viejo ahí dentro. Así que tenemos que asegurarnos de borrar eso cuando establecemos la sinopsis del título ahí mismo un texto Entonces, antes de hacer eso, sigamos adelante y consigamos nuestro punto de sinopsis de anime La etiqueta de texto grande tiene una función clara. Y yo debería resolver eso. Ahora, echamos un vistazo. El primero en el primer día de secundaria, el segundo, Gabby Braun y Falko El siguiente, Aaron Yeager. Probablemente pronunció ese mal. Centursgo Van tipo matanza. No te amenacen por los Titanes. Ahí vas. Entonces ya lo tenemos completamente actualizado y está recibiendo el texto correcto ahí dentro. Todo bien. Entonces depende de ti cómo quieres que esto se vea visualmente. Pero eso es con lo que vamos. Así es como lo estamos haciendo, y con lo que hemos ido. Alternativamente, si quisieras. Te voy a mostrar una forma alternativa de que podamos hacer esto si no quieres ir con un botón ahí. Y para mantener eso en lugar de usar un naufragio de texturas aquí, podríamos entrar y solo voy a hacer clic derecho y presionar Cambiar tipo y cambiarlo a un botón de textura Y entonces sólo puedo arrastrar eso para normal. Y ahora tenemos ese botón. A ver si necesitamos retocar algún texto. No creo que lo haríamos, pero en realidad podríamos el texto, tal vez tengamos que especificar que va a la normalidad. Vamos con Narrato esta vez. Y si, bien. Entonces eso lo rompería. Entonces tendríamos que precisar específicamente que era esa la normal. Voy a echar un vistazo aquí. Información de Anime. Eso. Y va a ser textura, subrayado, normal. Bien. Entonces eso solo sería una edad pequeña. Entonces donde establecemos nuestra textura de imagen animada, hacemos textura de punto, subrayado, normal, así Y ese debería ser solo un cambio de línea. Y eso funciona correctamente, ¿verdad? Tenemos nuestras miniaturas ahí y se veía exactamente igual Y como este es ahora un botón que tiene nuestra textura, podríamos configurarlo, para que cuando hagamos clic en eso en lugar de hacer clic en ese botón de vista, ¿verdad? Para que ahí podamos tomar la imagen animada. Voy a copiar el mismo ejemplar. Entonces en nuestra imagen animada, voy a hacer clic en Prensa, y voy a ir para asegurarme de que vayan a la misma función Y ahora verás que W entramos? Puedo dar click en la miniatura, obtener nuestro Windows y subrayado normal Cambio. Pero esas son dos líneas de textura que tuvimos que cambiar. Si quisieras ir por esta ruta, el botón, entonces podemos dar click en eso, ahí vamos. Y eso podría ser un poco más natural o un poco mejor para ti, y luego simplemente puedes quitar completamente este botón juntos. Así que solo voy a ocultarlo de vista solo para que puedas verlo de esta manera. Y entonces puedes tener ahí. Entonces ahí tienes. Aquí te explicamos cómo puedes hacerlo teniendo nuestros botones ahí dentro. Y luego, si querías deshacerte de eso, solo haz clic en la miniatura real para que aparezca nuestra Eso es todo lo que tienes que hacer. Conecte una señal de prensa, cambie esto de una rec de textura a un botón de textura, y luego cambie toda nuestra textura de punto de imagen animada para animar la textura de punto de imagen subrayado Y ahí lo tienes. Entonces tenemos todo esto arreglado, solo voy a comentar que está imprimiendo aquí abajo otra vez. Una vez más, ya no lo necesitamos. Aquí vamos. Así que ahora podemos buscar animes, obtener una sinopsis, ver las etiquetas, obtener títulos, y podemos desplazarnos por una gran lista antigua de 1,000 o 2000 o por muchas que queramos ir Y será una llamada API por búsqueda. Um, en realidad, van a ser dos API fue inicialmente, porque tenemos que sumar nuestros géneros ahí dentro. Simplemente voy a descomentar eso. Vuelve a poner eso ahí. Ustedes no deberían haber comentado eso. Acabo de apagar eso solo para ahorrar en algunas llamadas API mientras estaba probando algunas cosas, ¿verdad? Entonces ahora podemos entrar y podemos hacer, como, una búsqueda sobrenatural y congelada. No congelado. Está helando lo que estaba buscando. Congelación. No busquen nada sobrenatural. ¿Qué tal la fantasía? Interesante. Entonces no vamos a conseguir nada ahí. Si vamos a Sin género, hay breezing. Ciencia Ficción. Eso es lo que pudo haber sido el que estaba buscando. Acción Di Pi. Vibración de breezing Yo lo haría. Así que estaba completamente fuera mi secreto solo para asegurarme de que eso funcione, ¿verdad? Iremos a búsqueda de acciones. Y ahí tienes. Sólo conseguimos una acción. Entonces, si tenemos todos esos, si vamos al drama, tendremos aún menos. Podemos ver que podemos filtrarlo cada vez más si queremos usar los géneros. Tenemos que rellenar una búsqueda, pero los géneros son subastados. Bien, así que ahí tienes. Ahí lo tienes. Tenemos nuestros pequeños pop ups. Tenemos nuestra información. Tenemos nuestras búsquedas. Entonces ahí tienes. Ahora tienes una aplicación de escritorio que puedes usar para tal vez encontrarte samatam Tal vez encuentre algo que ver cuando te aburras. Y te animaría a que sigas adelante y agregaras más características a esto. Tal vez agregue una lista de favoritos si lo desea, o una lista de vigilancia o algo así. De esa manera tienes algo de lo que puedas kear rastrear. Bien. Eso es todo para esta sección. Y vamos a seguir adelante y pasar a nuestra próxima semana donde vamos a hablar de algunas de las personalizaciones más avanzadas para realmente hacer que tus programas se vean más únicos y de aspecto más profesional 73. Fuentes: Bien, entonces ¿una de las cosas que podemos hacer para que nuestra aplicación o juegos destaquen y sean más únicos o sean más profesionales? Bueno, una de esas cosas son las fuentes. Ahora, las fuentes pueden ser examinadas mucho, especialmente por los desarrolladores más nuevos, pero las fuentes pueden cambiar todo el campo de tu juego o tu software. Y es como cuando tienes una fuente para decir, un restaurante, ¿verdad? Si tienes una fuente que acaba de decir un poco de inclinación hacia la derecha y sus personajes, entonces nos da la impresión, nos demos cuenta o no que es algo gordo, ¿verdad Tenemos ese sentido de que esas letras se mueven rápidamente con ellas inclinadas así, sobre todo si se inclinan hacia la derecha Entonces con esa impresión, internamente podemos hacer la suposición de que este es un lugar de comida rápida. Y tenemos todo eso sin siquiera saber el nombre del lugar o qué tipo de lugar es, qué tan grande es, qué tipo de comida sirve. No sabemos nada excepto que las letras en su letrero están inclinadas. Así de poderosas pueden ser las fuentes. Piensa si estabas jugando a decir muerto así que Oh, no almas muertas. Almas Oscuras. Dead Souls es algo completamente diferente, pero imagina que estabas jugando a Dark Souls y teníamos esta fuente burbujeante. Ahí está por todas partes. No encajaría porque no tendría ese mismo tipo de vibra para. ¿Verdad? Me sentiría fuera de lugar Te distraería de la sensación del juego, o te quitaría la seriedad del juego y esos tonos serios que desprende Así que las fuentes pueden ser muy potentes cuando se usan. Por lo que es importante no pasar por alto estas cosas. Entonces voy a repasar a nuestros resultados de anime, y voy a usar nuestro título aquí para que podamos tener una buena vista sobre él. Ahora, sin tocar ninguna personalización real, solo voy a entrar e ir a la sección de themoide dentro del inspector con mi título seleccionado Y ya puedes ver que tenemos colores para la fuente, la sombra y el contorno. Entonces, si pongo la fuente en blanco, tal vez ponga la sombra en un poco más transparente. ¿Bien? Tenemos algo que hacer aquí. Podemos bajar a la siguiente sección, que son constantes. Podemos darle un offset a la sombra. Bien. Entonces ahora tenemos texto levantándose de la página. Podemos darle a esto un tamaño de contorno que realmente pueda hacer que nuestro texto sea mucho más visible. Sombra al contorno. Nosotros también podríamos hacer eso. Eso realmente va a mejorar nuestras sombras allá abajo. Y podríamos agregar un interlineado. Podemos bajar a tamaños de fuente, y podríamos, vamos a subir a 23. Y en este caso, son todas las opciones que realmente tenemos aquí, pero sigamos adelante y aumentemos el desplazamiento aquí de esto un poco más, y tal vez cambiemos la sombra para sea un poco más purpuramente Bien, que podamos tener más de esos tonos fríos ahí dentro Y ahora sigamos adelante y si corremos nuestra escena principal, voy a seguir adelante. Haremos nuestro ataque habitual a HTONFmerSearch. Y ya se puede ver que a pesar no hemos hecho mucho, de hecho, solo hecho de agregar ese esquema a este texto predeterminado aquí ya ha hecho que ese texto se destaque y te salte mucho más. Y apenas hemos hecho nada. Para que puedas ver lo importante que pueden ser incluso pequeños ajustes a tus fuentes Ahora, estás pegado a estas fuentes predeterminadas, por supuesto. Porque en realidad podemos usar algunas fuentes personalizadas por completo. Sólo tienes que seguir adelante y apagar todos estos. Si nos dirigimos a la sección de fuentes, podemos usar una fuente personalizada aquí. No quiere apagarse ahí. Eso está bien. Sólo voy a abrir el menú desplegable aquí y seleccionar un nuevo archivo de fuente. Todo bien. Y voy a abrir eso sin poder previsualizar la fuente. ¡Vaya! Bien. Aparece en cuatro puntos. No necesitamos seleccionar ninguna opción como solíamos hacerlo en tres puntos X. Así que acabo de descargar un archivo de fuente aquí. Está en formato TTF, y yo sólo voy a seguir adelante y arrastrarlo a la sección de fuentes, y se puede ver, así como así, tenemos una nueva fuente Ahora bien, no tenemos un montón de opciones establecidas ahí, pero como pueden ver, todavía podemos volver aquí y retocar nuestros lados y todo lo que está afuera aquí y aún así tener esos mismos controles que teníamos antes Y como ya dije, solo ponerle un esquema. Eso. Incluso poner un esquema realmente hará que eso destaque. Simplemente agregándole ese pequeño factor. Todo bien. Ahora, en Goto cuatro aquí, parece que podemos agregar variaciones completas Para que podamos tener nuestro vínculo base. Puedes establecer algunos bonos de reserva por si acaso. Y se pueden establecer diferentes características forro, figuras de estilo antiguo, conjuntos estilísticos, alternativas Así que realmente puedes entrar aquí y empezar a personalizar muy específicos en tus fuentes Para que puedas ir casi tan detallado como quieras ir. Pero lo genial es el hecho de que podemos controlar el tamaño de la fuente, aunque no tengamos una fuente personalizada en bind en este momento. Esto nos permite al menos tener un poco más de control sobre cómo queremos que se vea en general, y siempre podemos decidir sobre una fuente más adelante, lo que de nuevo, es genial para la creación de prototipos, por lo que podemos sacar algo rápidamente Pero ahí vamos. Si podemos usar fuentes personalizadas y verás si reinicié esto, Oh, la fuente desapareció. Aquí vamos. Ahí lo ves. Puedes tener fuentes completamente nuevas con solo arrastrar nuestro archivo en él usa TTF, y creo que también puedes usarlo archivo OTF Pero es tan sencillo como eso como arrastrar el archivo a la sección de fuentes de los thmovides Y podemos ver si nos dirigimos de nuevo, y otra vez, vamos a seguir adelante y ejecutar esto muy rápido de nuevo y vamos a decir en apretar la búsqueda. Y ahí se le echa un vistazo a eso. Hermoso. Ahora bien, esto obviamente es un poco demasiado grande para algunos de nuestros títulos aquí, pero entiendes la idea. Ahora, tendrías que entrar y cambiar cada pieza de tu interfaz de usuario, y eso puede llegar a ser extremadamente molesto o llevar mucho tiempo terminar haciéndolo. Y hay un rápido , habría una manera más rápida de seguir adelante y hacer algo así. Y para ello nos llevaría al siguiente video donde empezamos a hablar de temas. H. 74. Temas personalizados: Bien. Ahora, te dije que habría una manera más fácil aplicar tu fuente a todo, y esa manera más fácil que va a ser a través de lo que llamamos fuentes o temas, más bien. Así que podemos entrar y solo voy a seguir adelante y acercar aquí, y un tema se aplicará a los nodos en, así como a todo lo que tenga un hijo de él. Entonces si lo pegamos aquí en nuestro nodo principal, entonces todo en nuestra escena va a tener ese tema aplicado a él. Entonces así es como harías un tema oscuro y un tema claro. Para dos ejemplos, simplemente cambiarías el archivo de tema y todo cambiará. Entonces, si solo venimos por aquí con nuestro nodo principal seleccionado, que es nuestro nodo de control de nuestra escena, dirígete a nuestro inspector, baja al tema, y solo ve al menú desplegable y selecciona nuevo tema. Y te darás cuenta abajo en la parte inferior, tenemos esta pestaña de tema ahora, y la tiramos hacia arriba, podemos ver todas nuestras opciones. Y estas son nuestras vistas previas para todos nuestros botones, deslizadores, como ves aquí Entonces podemos jugar y básicamente podemos ver cómo va a quedar todo, aunque no tengamos cosas en escena. Bien, así que ese adelanto es fantástico para nosotros aquí. Ahora, tenemos un nuevo tema, y podemos traer nuestra fuente. Yo sólo voy a agarrar nuestra fuente, y como ves en el lado derecho, lado del aquí, tenemos una fuente por defecto. Si lo acabo de arrastrar, ahora todo comparte esa fuente así de rápido. Todo comparte. Lo cual es fantástico, claro. Pero, ¿qué pasa con todo lo demás, verdad? ¿Y si queremos hacer las cosas más únicas, de aspecto más especial? Bueno, podemos seguir adelante y subir para administrar Artículos. Y con eso, eso abrirá una nueva escena que ojalá capture aquí. Eso no captó. Un momento. Prueba Ventana siete. Ahí vamos. Bien, entonces tenemos a nuestro gerente aquí, y yo sólo voy a ir a Importar artículos. Y desde el tema Editor, solo voy a presionar Seleccionar todo abajo en la parte inferior. Importar seleccionada. Y ahí vamos. Puedo seguir adelante y volver a salir de aquí una vez que esté todo hecho. Y ahora tengo todos mis artículos. Ahora, puedo controlar todo desde el inspector aquí. Puedes ver todas las cosas diferentes, todo desde caja de giro, barras de progreso, todos mis pop-ups, paneles, el botón de opción, botones de menú, etiquetas, ediciones de líneas, derecha, mis deslizadores, contenedores, y toneladas y toneladas de cosas que no hemos usado nuestra casilla de verificación colillas Todo se puede modificar aquí mismo en el lado derecho, ¿verdad? Entonces podemos entrar en nuestros colores de nuestros botones aquí, ¿verdad? Y vemos que un color de fuente es el blanco, y se puede ver que ha cambiado a blanco en nuestra escena, así como en nuestra vista previa. Podemos decir foco de fuente o color de hover de fuente, ¿verdad? A lo mejor es más rojo. Entonces algo así. Impresionante. Ahora cuando coloco el cursor sobre el botón, pueden ver, ahora podemos decir visualmente cuándo nuestro mouse se cierne sobre él De nuestro avance porque obviamente, no podemos hacerlo aquí porque no se está ejecutando, pero podemos probarlo en nuestro avance aquí. Y como dije, si no quieres pasar por todo en el inspector, en realidad puedes hacerlo aquí mismo dentro sección del administrador de temas aquí ellos pestaña. Entonces estamos editando nuestro botón, así que solo voy a abrir eso, y verás una enorme lista aquí. Y dame un momento para eso. Te voy a mostrar eso. Bien. Entonces como estaba diciendo, todo lo que veas de lado aquí se mostrará cuando abramos esto, para que puedas ver todo aquí, todas las partes que hemos agregado para editar. Entonces estábamos editando el botón. Entonces, si abro eso, podemos ver todas las mismas propiedades están aquí, pero no solo eso, también están organizadas a como te imaginas que son. Y también puedes entrar aquí y podrías cambiarles el nombre. Si no te gusta el tamaño del contorno, puedes cambiarle el nombre que quieras. Aquí están todos nuestros colores. Por lo que es muy fácil para nosotros ir por ahí. Entramos en fuente. No, tengo ese tamaño de contorno, tamaño de fuente, eso. Entonces echemos un vistazo aquí, estos pequeños no temas, sino el estilo. Entonces vamos a la normalidad, una normal pero aquí. Voy a hacer un estilo de caja plana. Sólo dale un segundo a eso. Los temas parecen tener este pequeño hipo leve en ellos . Pero eso está bien. Abre eso. Y ves que se abre aquí en el inspector, así que quizá solo quieras usar al inspector de todos modos, pero no tienes que hacerlo. Y ya ves ahora entra puedo agregar fronteras aquí. Entonces podemos agregar este ancho de borde en nuestros botones, así como, por supuesto, seleccionar el color de nuestras fronteras. Podemos ir en verde brillante y apenas empezar a agregarlos. Para que podamos hacer algo así si quisiéramos. Pero lo que podemos hacer es que podemos entrar aquí y sólo podemos sumar esquinas. Podemos redondear nuestras esquinas. Y ahora, sin tener que hacer nada complicado, tenemos estos bonitos botones redondeados, y porque cosas como el botón de opción vienen todas del botón base, eso también está siendo redondeado. Y si quisieras llegar mucho más extremo, por ejemplo, eso como eso. Estamos cada vez más cerca de crear un botón más redondo y redondo aquí y cada vez más cerca de crear un botón circular Verás, sólo nos va a dejar ir tan lejos en estos botones reales, así que solo tenlo en cuenta. Pero aún así, tenemos un hermoso al menos, en mi opinión, botones que se ven más bonitos que esos rectángulos cuadrados puntiagudos. Las esquinas redondeadas simplemente siempre me parecen más agradables. A lo mejor prefieres los puntos, pero yo siempre prefiero veeven solo una ligera esquina redondeada a ellos, ¿verdad Entonces, aunque solo entremos con, como, un tres, ¿verdad? En nuestras esquinas, para mí, eso todavía se vería al menos un poco más agradable que tener esos puntos Pero puedes entrar aquí y puedes cambiarlos por completo tanto como quieras. Y luego, cada vez que estés satisfecho con modificar todos tus diferentes aspectos de tu tema, puedes ir al menú desplegable aquí y guardar tu tema. Y puedes hacerlo varias veces y cuando estés listo para cuando quieras tener la opción de cambiar diferentes temas, todo lo que tienes que hacer es simplemente cargar tu tema y ponerlo en la propiedad theme aquí. Y puedes hacerlo en código, ¿verdad? Simplemente acceda a la propiedad del tema y cargue su archivo de tema en ella. Y ahí tienes. Has aplicado tu tema. Tienes diferentes opciones temáticas puestas. Bien, así que si quieres una vez que tengas algunos temas establecidos, ahora obviamente puedes configurarlo con un botón de alternar claro y oscuro Entonces, si volviera a Hootie aquí por un segundo. Si seguimos adelante y ponemos esto a un veamos. No es un botón de alternar. Es un botón de verificación de botón de solo entrar y buscar. Así es como se les llama aquí. Voy a seguir adelante y solo traerme esto. En realidad no va a importar. Y el estilo es la razón por la que tenemos ese trasfondo. Eso está bien por ahora. Entonces digamos que tenemos este botón de verificación. Voy a seguir adelante y golpear la señal de pulsación conmutada, adjuntarla a mi guión principal Y todo lo que voy a hacer porque este tipo de se levantó porque no sé, los temas parecen gustarles hacer que las cosas se detengan al menos de mi lado todo el tiempo. Entonces si solo vengo aquí y basado en si está presionado o no, bien, podemos cargar diferentes temas. Entonces voy a decir si botón pulsado porque ese es el argumento que se está pasando, justo cuando lo alternamos, si pulsamos botón. Entonces, si es cierto, si está encendido, entonces lo pondremos en tema dos. De lo contrario, entraremos y lo pondremos en el tema uno, salvo eso. Y todo lo que estamos haciendo es conseguir el nodo en el que está, ¿verdad? Así que no tenemos que escribir self, pero me gusta hacerlo de todos modos, obteniendo la propiedad theme, y solo estamos cargando nuestro archivo de tema. Es todo lo que estamos haciendo. Ahora es cuando dirijo esto. Simplemente puedo hacer clic en esta alternancia. Y así, podemos intercambiar entre un modo claro y otro oscuro. Entonces es tan simple como eso cuando tienes si quieres intercambiar temas, solo va a llevar mucho tiempo construir y crear todos los diferentes temas que quieras tener. Aunque el lado positivo es, es si solo quieres tener un tema claro y oscuro , y por supuesto, pasando por, si también quieres crear un montón de otros temas, puedes quedarte con estos archivos ya que los guardamos como tema, ¿verdad? Puedes tomarlos, y puedes llevarlos a otros proyectos en el futuro, y solo puedes postularlos, y ahora solo tienes un tema claro y otro oscuro listo para todo, ¿verdad? Todos tus proyectos futuros. Pero es tan sencillo como eso. Es una línea de código para cambiar el tema. Es tan simple como eso. Establezca la propiedad del tema igual para cargar su archivo de tema. Todo bien. Entonces los temas son poderosos. Pueden ser incluso si solo quieres establecer tu fuente para todos tus diferentes tipos de nodos. En lugar de perder el tiempo, solo creas un tema, arrojas tu fuente ahí y estás listo para comenzar. Bien. Ahora, voy a hacer una nota más aquí si quisieras quitar algo de tu tema. Dale este momento porque obviamente esto va a encerrar por un segundo porque temas por cualquier razón, ¿verdad? Entonces digamos que queremos eliminar algo de nuestro tema porque tal vez no lo necesitamos o no afecta a nuestro proyecto, lo que sea. Todo bien. Podemos simplemente ir al botón Administrar artículos aquí y simplemente abrir esto, gorra a esto otra vez, ¿verdad? Sólo podemos ir a editar elementos. Podemos encontrar algo como editor, editor troll pop up, preajuste de color pero, editor el cinturón, hijos correctos ahí, la ayuda en el Entonces todas estas cosas que están aquí arriba no importan. No nos afectan, así podemos entrar aquí y podemos simplemente Bueno, solo podemos empezar a borrar todas estas cosas que no importan. De esa manera, también, empieza a verse un poco más limpio. Por supuesto, no tenías que traer esto en estos para empezar. Solo puedes traer artículos selectos si quisieras. Pero si vas a hacer un tema, me parece mejor si solo lo haces para todos ellos de todos modos. De esa manera puedes, como dije, solo llevar el tema a cualquier proyecto y simplemente ser bueno para salir enseguida. Ahí vas. Así es como puedes eliminar cosas que quizás ya no quieras que formen parte de tu tema. Ahí vas. Temas muy potentes, muy útiles, le dan a tu programa un aspecto más profesional, hacen que parezca menos impago, sobre todo entre otros desarrolladores de Goto y te permiten tener más personalización para tus usuarios, clientes, clientes, etcétera Ahora, obviamente, esto va a volar un poco más o es el lado del software de lo que lo hará en el lado deb del juego, pero tal vez se te ocurra algo único que puedas hacer en el lado del juego Bien, eso lo hará por éste. A continuación, vamos a hablar de hacer que nuestras ventanas realmente salgan y sean parte de las controladas por el sistema operativo. Y lo que quiero decir con eso es cuando entramos, sé que esto es difícil de ver para nosotros ahora porque nos metemos con temas. Voy a deshacerme de esos el defecto esto, aquí mismo. Esta ventana que tenemos todo tipo de mal estado en estos momentos No podemos moverlo, ¿verdad? Al igual que, va a quedar atascado dentro de esta ventana. Entonces vamos a hacer eso en su propia ventana y ser controlados por el sistema operativo. 75. Varias ventanas: Bien, hablemos de tener ventanas controladas por el SO Y lo que quiero decir con eso es que ves como esta ventana aquí es su propia ventana controlada por el sistema operativo. No podemos movernos No necesariamente lo movemos a ningún lado. Es sólo que ahí. Aguanta. Esto será mucho más fácil. Un momento. Bien, si acabo de llegar al modo de visualización aquí y echamos un vistazo Podemos ver que esta es su propia ventana de pie libre que se puede mover alrededor de cualquier punto. No está atrapado dentro del editor principal aquí, ¿verdad? Sin embargo, Oh, eso es un poco demasiado grande. No obstante, si tuviéramos que entrar y, de nuevo, realizar nuestra búsqueda digamos que Titán. Eso ha sido cosa a tiempo. Bien, baja, cada vez que encontremos un espectáculo, da clic en él. Y ahora nuestras ventanas se puede ver como está pegada aquí, ¿verdad? No es gratis. Y la razón es porque está incrustado dentro de nuestra ventana principal aquí. Entonces no va a ser no es gratis, ¿verdad? No está controlado por nuestro sistema operativo. Entonces eso es lo que voy a mostrarte cómo hacer. De esa manera podrás tener tu propia ventana. Entonces, por ejemplo, abres una ventana de configuración, un panel de configuración, un panel de preferencias cuando estás haciendo la creación de software. Puedes tomar eso y puedes mover esa ventana alrededor. No tiene que estar atascado dentro de cualquier aplicación. Corriendo. Y eso es más o menos una cosa estándar. Entonces, sería bueno para nosotros saber cómo hacer eso. Entonces, si simplemente apagamos esto muy rápido, simplemente salta a nuestro script, y podemos arreglarlo con una línea de código, y eso es todo. Entonces obtenemos una ventana gráfica, y eso va a obtener la ventana gráfica de nuestra ventana actual, La ventana principal de nuestro programa. Y todo lo que vamos a hacer es Goey incrustar sub ventanas y establecer esa propiedad en box Eso es. Ahora bien, si ejecutamos eso, podemos ver que esto sigue funcionando exactamente igual en todos los tiempos. Y si seguimos adelante y hacemos nuestra búsqueda. Titán de ataque plástico, lo que sea, nos desplazamos por nuestros resultados. No importa. Bla. ¿Vamos a escoger esto? Ahora es su propia ventana. Podemos moverlo, tener su propio título de ventana, y es creado y administrado por el propio sistema operativo. Tres tamaños y podemos hacer todo lo que podamos al igual que nuestras otras ventanas. Entonces es tan sencillo como eso agregar esa pequeña característica ahí dentro. Sería muy útil. Otra instancia de esto es si quisieras tener decir una pestaña como esta, para poder despuntar tal como puedes hacer aquí Simplemente lo sacamos. Todo bien. Aquí vamos. Entonces abrimos el escenario aquí, y solo podemos decir hacer flotar. Y ahora es su propia ventana, ¿verdad? Y es manejado por el operativo. Entonces, ¿esto está funcionando de la misma manera de lo que acabamos de hacer con los sub vientos Dewey embed Lo que tenemos que hacer, cerrarlo y eso puede empujar de nuevo ahí dentro. Y puedes hacer esto con cualquiera de aquí. Entonces, por ejemplo, puedes hacerlo con el guión aquí. Simplemente puede hacer clic en este botón aquí, y ahora la ventana de script es lo suyo. Y si tienes dos monitores, ahora puedes simplemente pegar esto en el segundo monitor por sí solo, y puedes enfocarte en la escena real en una pantalla y tu código en el. Entonces puedes ver cómo hacer ventanas flotantes como esta sería útil solo a través desarrollo y dependiendo de tu aplicación, sería más productivo para el usuario final, lo que, por supuesto, significa que a tu producto le va a gustar más, se va a disfrutar más, y se va a convertir en una preferencia, y esa pequeña característica, esa línea de código podría la base de usuarios de su programa, su aplicación. Por supuesto, tu programa tiene que ser bueno para empezar, pero sí. Ahí tienes, sin embargo. Eso es todo lo que tenemos que hacer para crear estas ventanas flotantes y tener nuestras ventanas controladas por nuestro sistema operativo en lugar de quedarnos atascados dentro de nuestro principal. 76. Barras de menú: Entonces sigamos adelante y hablemos de cómo podemos hacer una barra de menú. Ahora, por barras de menú, me refiero a lo que ves en la parte superior de la mayoría de las aplicaciones con cosas como archivo, edición, vista, tal vez efectos de capa, y así sucesivamente. Todo bien. Ahora bien, ¿cómo podemos seguir adelante y hacer esto? Bueno, tengo una nueva escena aquí está usando una barra de menú como mi nodo raíz aquí. Y yo solo coloco un rect de color en el fondo porque sin él, realmente no tienes nada ahí atrás, y realmente no puedes decirlo ni diferenciarlo del resto de tu programa Ahora, dependiendo de tu diseño y cómo quieras que se vean tus cosas , es posible que quieras eso. Otras veces, es posible que desee algo para diferenciar, incluso si es solo un tono ligeramente diferente del fondo estándar de lo que está trabajando. Entonces para mi, solo quiero con este rojo oscuro, algo de color maroonish yendo. Y si tienes curiosidad, el color el color hexadecimal es 391715 Bien. Ahora, ¿qué podemos hacer? ¿Cómo podemos agregar barras y aretes? Si seguimos adelante y jugamos esto, y voy a tener que capturar eso para ti aquí en un momento. Oh, no, eso captura automáticamente. Fantástico. Es un poco grande. Entonces lo voy a bajar un poco. Pero como pueden ver, por supuesto, no hay nada en lo que hacer clic. Es sólo un bar. No pasa nada. Entonces no es muy interesante. Entonces, ¿cómo podemos realmente agregar elementos a estas barras de menú, por supuesto, podemos hacerlo a través del código. Pero en realidad podemos evitarnos algo de esto usando otro nodo. Y si realmente quieres si solo tienes elementos de menú simples, esta sería la forma más rápida de hacerlo, también Bien, entonces vamos a entrar en la barra de menús, y si solo buscamos menú dentro del crear nuevo nodo, que por si ha pasado un tiempo, y no lo has visto por cualquier razón, sigue adelante y vuelve a aparecer eso, ahí mismo adelante y busquemos menú, y obtuvimos la barra de menús, pero lo que queremos es el botón de menú en este punto. Y ahora con ese botón de menú, podemos seguir adelante y podemos llamarlo el botón Bo, por ejemplo, darle un buen nombre así. El texto, por supuesto, sería Archivo, Bio no Bilk. Bien, ahí vamos. Y yo sólo voy a asegurarme de que es de buen tamaño ahí, rellena. Y este es el punto en el que ahora podemos entrar, abrir nuestra escena y ejecutarla. Y verás si hacemos click en él. que conseguimos este pequeño pop aquí, pero no hay nada adentro. Ahora, la forma más fácil de agregar cosas en él sería dentro de nuestro botón de menú. Tenemos esta sección llamada artículos. Podemos decir Agregar elemento, ¿verdad? Entonces podemos decir como nuevo archivo, agregar elemento abierto, agregar nuevo. A lo mejor tenemos ahorrado, y agreguemos uno más para rápido. Y está bien ahí en el inspector. Entonces, si eso es todo lo que necesitas para cada uno de tus botones de menú, boom, ahí tienes. Ya lo tienes. Ahora puedes hacer click en él, y solo tienes que proporcionar un poco de código para hacer estos. Por supuesto, eso también significa que podríamos simplemente duplicar nuestro botón, deslizarlo sobre, claro, cambiar las opciones que quieras ahí dentro y tenemos un segundo botón de menú. Ahora, sólo voy a tener uno de ellos instalado aquí solo para mostrártelo. Pero si solo necesitas menús sencillos como ese, eso es todo lo que tienes que hacer. Ahora bien, si quieres tener un menú que sobresalga un poco en términos de si pasas el cursor sobre él, derecha, y luego abre otro menú, si quieres hacer algo así, entonces vamos a tener que entrar en el código para acceder a eso Ahora, tengo mi guión justo sentado en mi barra de menú. Podrías ponerlos en los botones de tu menú si quieres. De esa manera, cada botón puede controlarse a sí mismo, que probablemente sería la mejor y más inteligente manera lo que probablemente sería la mejor y más inteligente manera de hacerlo si estás creando un producto real. Entonces para mí, ya que aquí solo tengo el único botón de menú, no es tan grande como un problema. Pero de nuevo, si tuvieras, tal vez cinco botones diferentes ahí, tal vez algunos de ellos tenían múltiples menús diferentes, entonces probablemente vas a querer al menos dividirlo en cada botón de esa manera. Bien. Entonces lo primero que voy a hacer es bien, voy a mostrarte cómo podemos agregar estos botones en. Con este botón de mi menú, voy a eliminar nuevo archivo, abrir, guardar y salir. Entonces no tengo artículos aquí en el inspector, y voy a mostrarles cómo podemos agregarlos a través de Code. Bien, así que voy a crear una variable. Ya lo haremos listo. Bar, llamémoslo, botón Bile. Y ese será, por supuesto, nuestro botón de archivo. La clase que podemos emitir como es un botón de menú. Todo bien. Entonces tenemos un acuerdo de eso Ahora podemos ir a punto de flebuton. Y solo decimos agregar ítem, creo que es para nosotros aquí. Oh, no, mi error. En realidad tenemos que ponernos en contacto el pop up porque es un menú pop up que se muestra a sí mismo Así que queremos que se haga pop up. Ahora podemos crear una variable aquí, por ejemplo, podemos decir archivo podemos llamarlo el menú Archivo, que es, por supuesto, un menú emergente. Ahí vamos. Ahora podemos configurarlo igual a file button dot Get pop up. Y todo lo que tenemos que hacer ahora es bilemnu punto, y podemos ir a agregar IM Y podemos ver el elemento del icono del anuncio, lo que significa que podemos tener una imagen mostrada ahí. Entonces, si quieres tener, como, un pequeño disquete que se muestra junto a tu botón Guardar, puedes hacerlo También tenemos artículos de cheques. Entonces, si quieres ser algo que solo puedas marcar de vez en cuando, puedes hacerlo de esa manera. El control de radio, que es solo el botón circular. Y luego tenemos el de nuevo, check item y radio check y todo eso sin los íconos, y sub menú entraremos en un momento. ¿Y qué es este artículo multiestatal? Bueno, vamos a echarle un vistazo. Voy a mantener pulsada Control. Y agrega un nuevo elemento multiestado con etiqueta de texto. La etiqueta es una cadena, luego maxmun de estado, el estado predeterminado, ND, Excel, veamos Contrariamente a los elementos binarios normales, los multistatoms pueden tener más de dos estados según lo definido por Cada pulsación activa el ítem, pero aumenta el estado en uno. El valor predeterminado se define por estados predeterminados. Entonces parece que obtenemos un aumento o podemos tener múltiples estados. Entonces cada vez que hacemos clic en el botón, tal vez cambie de modo. Echemos un vistazo a eso. Cambiemos para establecer el estado en modo, y estableceremos el máximo de estados en tres. Bien, así que sigamos adelante y ejecutemos eso. Echemos un vistazo a este multi estado. ¿Hacemos clic en él? Bueno, podemos dar click en él, y no vemos que pase nada. Pero si tuviéramos que echar un vistazo, si tuviéramos que echar un vistazo a esto, podríamos tener a los estados consiguiendo que el estado afecte lo que está pasando en nuestro proyecto ahora, como ves de nosotros aquí, en realidad no va a hacer nada por sí mismo, ¿verdad? Es algo que va a requerir cosas adicionales adicionales para ayudarnos. Mientras que algo así como un artículo de cheque, ¿verdad? Las llamadas me revisan. Y si tuviéramos que ejecutar eso, aunque no tenemos nada aquí, podemos ir a eso y hacer clic en él, y puedes ver que tenemos esta pequeña casilla de verificación, y tendríamos que configurar la toma de ese artículo y establecer la capacidad de cheque en él o en la propiedad check Bien, entonces, ¿cómo podemos hacerlo? Echemos un vistazo a cómo podemos volver a agregar nuestros artículos. Podemos simplemente decir agregar ítem, y de esta manera podemos ponerlo en una cadena y podemos hacer nuestro nuevo archivo, creo, es como lo llamamos. Y en este punto, podemos seguir adelante y podríamos simplemente copiar, pegar estos en. Entonces podemos decir nuevo archivo abierto. Creo que aquí habíamos ahorrado, y luego habíamos renunciado. Todo bien. Entonces, si tuviéramos que ejecutar esto y echar un vistazo a nuestro menú, verías que todas estas opciones están ahora aquí, tal como lo hicimos cuando lo hicimos a través del inspector. Entonces, si prefieres hacerlo en código, podrías. Pero si solo necesitas un menú sencillo como ese, pasar por el inspector sería la forma más fácil o rápida de agregar nuevos elementos a tu menú Ahora, sí dije que podríamos tener nuevos o archivos que se abrirían a otros menús. Y para hacerlo, es un poco más complicado. En ese caso, en realidad necesitamos crearnos un nuevo menú emergente para esto. Así que voy a guardar New pop. Y eso va a ser un menú emergente que será igual a un nuevo menú emergente menú pop up punto nuevo. Y yo sólo voy a seguir adelante y bajar esto un poco. Menú emergente punto nuevo. Entonces entonces tenemos que ir a podemos agregar un nuevo elemento en él solo para que podamos verlo realmente. Entonces diremos newpop dot add item. Diremos que este es mi nuevo artículo. Bien. Y ahora, para crear esto o agregar esto su propio pequeño menú que está dentro de nuestro pop up original, simplemente seguimos adelante y obtenemos nuestro obtenemos ese menú de archivos. Y agregamos el elemento del submenú. Ahora, lo primero va a ser una cuerda. Así que sigamos adelante y echemos un vistazo. A esto lo llamaremos mi elemento del submenú. ¿Y qué sigue? El siguiente va a ser el submenú real. Este va a ser el nuevo menú pop up que creamos, que llamo nuevo Pop. Y eso es todo lo que tenemos que poner. No tenemos que poner no tenemos que poner una identificación. Se va a agregar automáticamente al final de nuestra lista al igual que estos van. Entonces, si quisiera, podríamos seguir adelante y establecer eso. Oh, eso es correcto. Se supone que esto es una cadena, que debería llamarse menú emergente, pero voy a seguir adelante y solo asegurarme de que no nos encontremos con ningún problema en el futuro con esto. Seguiríamos adelante y haríamos pop up dot name, y le daríamos un nombre, ¿verdad? Cambiar esta propiedad. Entonces llamaremos a este nuevo nombre pop. Vaya, eso debería ser una cuerda. Ahí vamos. Y cambiamos esto a la variante de cadena. Ahí vamos. Eso es lo que va a estar buscando. Así que ahora si fuéramos a ejecutarlo ¿Cuándo llegamos aquí? Como nombre de índice en la cadena de tipo. ¿A qué se refiere aquí? A ver. Bien, vea el número. Así es. Y el nombre GB Script tiene una minúscula. Hace poco estuve trabajando con C Sharp, así que se mezcló ese poco ahí arriba. Y el otro tema es que en realidad necesitamos poner esto como un niño de nuestro menú. Entonces vamos al menú de archivos, agregamos Child, y agregaríamos nuestro nuevo menú emergente. Ahí vamos. Entonces ahora cuando lo ejecutamos, ya ves, tenemos nuestro archivo, lo abrimos. Y ahora tenemos este ítem llamado ítem de submenú, y tiene una flecha apuntando a la derecha, indicando que se abre, y ahí está nuestro nuevo ítem . Este es mi nuevo artículo. Adelante, llamemos a todo eso nuestra configuración. Y entremos en nuestro Es nuestro menú final, creo, ¿verdad? Y podemos conectarnos. Y podemos conectar una señal. ¿Qué señal? Bueno, eso no está claro. Entonces echemos un vistazo al menú emergente. Métodos. No estamos mirando esas propiedades del tema, constantes, fuentes, tamaños de fuente, iconos, estilos, señales Aquí vamos. Enfoque de ID, prensa de ID, prensa de índice y cambio de menú. Estas son todas las señales a las que podemos echar un vistazo, y con solo pensarlo de inmediato, me imagino que vamos a mirar la prensa de identificación o la prensa de índices. Emite cuando se presiona un elemento de algún índice o se activa su acelerador. El acelerador tiene que ver con el multi, el multi estado. Y echemos un vistazo a la prensa de identificación, emitida cuando se presiona un elemento de alguna ID o se encuentra aceleradorsted No, I ID es negativo, ya sea explícitamente o por desbordamiento, esto volverá al índice correspondiente en su lugar. Entonces la pregunta es, ¿ cuál queremos ver? Bueno, creo que voy a ir con el índice para esto. Entonces voy a conectar mi prensa indexada. Entra, conecta prensa de índice. Va a ser un pllable conectado en Self. Y vamos a decir, vamos a llamar a este ítem. Lo llamaré ítem seleccionado, y crearé una nueva función para ello. Bueno, supongo que esto es prensa indexada, vamos a conseguir un índice aquí. Esta es mi suposición, así que voy a averiguarlo. Voy a seguir adelante e imprimir el índice, y ya veremos si eso funciona. Si no, entonces tendremos que volver atrás, volver a echar un vistazo a la señal. Expediente. Si hago clic, salgo, obtuve Índice tres, archivo nuevo, índice cero. Bien, entonces esto está funcionando exactamente como yo pensaría. Y claro, si entro en el nuevo menú, este es mi nuevo ítem aquí, da clic en eso. No voy a conseguir nada porque eso va a tener su propia señal que tendrías que conectarte. Tenemos el índice funcionando. Impresionante. ¿Qué podemos hacer ahora? Bueno, podemos echar un vistazo a nuestro menú bio y ver cuáles son nuestras opciones. Oh, espero que eso no se haya mostrado todo el tiempo. Así que los elementos seleccionados índice, y nuestro elemento sólo va a ser archivo menú punto obtener el texto del elemento, pasar en el índice. Y entonces sólo vamos a hacer una declaración de coincidencia aquí. Así que coincide item, y vamos a hacer coincidir este texto si es igual a nuevo archivo, abrir, guardar salir, y vamos a hacer el bloque de código correspondiente. Ahora para dejar de fumar, solo vamos a hacer Get tree dot quit. Entonces, si tuviéramos que ejecutar eso y seleccionar salir de nuestro menú, nuestro programa debería cerrar. Y lo hace. Entonces así es como lo configurarías para hacer lo que sea que necesites hacer. Obviamente, tus opciones van a ser diferentes y va a variar en función de tu aplicación. Pero así es como vas adelante y configuras esos artículos para que esos funcionen. Entonces tienes que conectar una señal. En mi caso, estoy usando la señal de prensa de índice en lugar de una identificación. Y luego solo estoy pasando el índice para que pueda obtener el texto de los ítems. Y luego solo hago coincidir el texto y realizo la sección apropiada de código. Bien. Ojala que eso quede claro. Ojalá, no bloqueé nada que fuera demasiado importante a medida que pasamos por eso. Pero así es como sigues adelante y creas algunos menús para tus aplicaciones si vas por la ruta del software. Por supuesto, no todos los programas necesitan de las barras de menú, sino de las que sí, va a ser agradable saber cómo hacerlo. 77. Qué son las partículas: Bien, todos, bienvenidos de nuevo. Y hoy vamos a seguir adelante y hablar de partículas. Ahora, las partículas son todo un mundo fascinante rodea las partículas y los sistemas de partículas y su papel crucial en el desarrollo de juegos. Los sistemas de partículas son una poderosa herramienta que nos permite crear fascinantes efectos visuales añadiendo un toque de magia y realismo a nuestros juegos ¿Qué son exactamente los sistemas de partículas? Bueno, imagina pequeñas entidades dinámicas que podrían engendrar, moverse e interactuar con el mundo de manera caótica pero controlada. Los sistemas de partículas son una colección de estas pequeñas entidades conocidas como partículas, y todas se unen para formar efectos impresionantes como humo, fuego, chispas, hechizos mágicos, e incluso cosas que no pensarías como tal vez murciélagos volando rápidamente fuera de una cueva al entrar en ella Esas podrían ser partículas. La magia de los sistemas de partículas radica en su capacidad para crear la ilusión de fenómenos complejos utilizando elementos individuales simples, ya sea creando un cielo nocturno estrellado o una poderosa explosión Los sistemas de partículas nos dan la flexibilidad de crear experimentos de curación visual e inmersos para nuestros jugadores. Ahora, se puede hacer esto ya sea en dos D o tres D. Y los sistemas, su mayor parte, van a funcionar igual. Podría haber algunas pequeñas diferencias. Una de estas, por supuesto, esa dimensión extra de la que tenemos que preocuparnos, que es simplemente natural al pasar de dos D a rojo. Y es lo fácil que es crear partículas en el motor Gatto aquí Como ven aquí, acabo de agregar algunas partículas de GPU a mi escena. Solo estoy usando el icono como mi textura. Todo lo que voy a hacer es ir a procesar material, y voy a seleccionar material de proceso de partículas. Y así, se puede ver que ya tenemos partículas trabajando en el motor. Ahora solo se trata de modificar y cambiar un montón de valores diferentes para que las cosas sucedan Eale solo aumentaría la vida útil de esto. Y mira eso. Eso es aumentar estos tal vez 50 sobre la cantidad. Y ahí lo tienes. Tenemos esto simple, pero técnicamente, es un sistema de partículas de solo el icono. Y cuando te metes en cosas como tres D, puedes usar estos sistemas de partículas para crear cosas adicionales como efectos climáticos como lluvia y nieve. Todo bien. Ojalá esto te hiciera saber exactamente qué son las partículas, diferentes formas en que se pueden usar, y ojalá te entusiasme un poco por empezar a jugar con el sistema de partículas tú mismo. 78. Creación de un fuego en 2D: Todo bien. Todo lo que tengo aquí son mis partículas GPU dos D agregadas a una escena. Y a partir de aquí, vamos a seguir adelante y vamos a crear un efecto de fuego dos D. Ahora, puedes seguir adelante y por supuesto, experimentar más, aumentar tu fuego, convertirlo en algo un poco más único para ti mismo. Si quisieras, um, sigamos adelante y saltemos. Ahora, voy a estar usando un humo. ¿Qué es? Textura de humo. Y los puedes encontrar en todo Internet. Este es específicamente proviene de Kenny Particle Pack o Keny's Particle Pack. Y puedes encontrar creo que está en Kenny punto NL. Ahí tiene muchos activos gratuitos para que juegues. Y así sólo voy a tomar ese humo y llevarlo a mi textura. Por mis partículas aquí. Y ahora voy a ir a procesar material aquí, y voy a dar click en la flecha aquí, y sólo voy a seleccionar nuevo material de proceso de partículas. Todo bien. Y eso es lo que obtuve. Ahora bien, esto es bastante grande. Entonces lo primero que quiero hacer es que quiero ajustar esta escala. Y voy a bajar a la sección de escala aquí dentro de mi material. Ir a la curva de escala y seleccionar una nueva textura de curva, abrirla hacia arriba, abrir mi curva. Y sólo porque ya sé lo que voy a poner aquí, voy a bajar a cerca de 0.34 para el lado izquierdo y el lado derecho va a venir punto todo el camino hacia abajo Y eso es con lo que voy a trabajar. Ahora, podría volver y ajustar esto más tarde, pero eso es lo que estoy empezando Bien, así que comencemos por la parte superior, aleatoriedad de tiempo, está bien Fecha. Podemos hacer un punto. En ciertas situaciones, usa una esfera y podrías jugar alrededor de eso, pero solo voy a usar un punto. Banderas de partículas. No necesitamos ninguno de esos. Dirección. Bueno, no queremos ir a ninguna parte de la X, pero sí queremos ir a algún lado de la Y. Ahora queremos ir negativo, dirección en la Y porque queremos subir. Gravedad, sólo podemos eliminar si queremos. Y la velocidad inicial, voy a seguir adelante y decir 32. Quiero echarle un vistazo. Eso realmente no va a ninguna parte. Nosotros incrementamos eso jugando con eso un poco, para que podamos ver que se está moviendo hacia arriba. ¿Y qué pasa si solo aumento mi vida útil a 2 segundos? Entonces podemos ver que está empezando a tomar forma. Así que sólo voy a seguir adelante y jugar con algunos de estos aquí. Voy a bajar mi spread tal vez hasta 16. Ahora, no tenemos un montón de partículas. Sólo estamos trabajando con ocho, así que por eso se ve como es. Pero, ¿y si subimos a la cantidad en la parte superior aquí y tal vez vamos a 50 incluso? Bien, entonces eso es mirar un poco más cerca hacia un fuego. Y si cambio mi vida nuevo a una, ¿cómo se ve eso? Eso se ve bien. Creo que voy a retocar dentro de mi escala aquí un poco al principio Ahora mismo, estoy sentado en 0.19 para el inicio. Ya veremos cómo va eso. Y claro, con fuego, vamos a necesitar algo de color. Hacer dentro de la sección de color, voy a ir a mi rampa de color. Y desde el menú desplegable, es como una nueva textura de degradado. ¿A dónde fue eso? Ahí está. Así que voy a hacer clic en mi rampa de color ahora, clic en mi textura de degradado. Y ahora voy a dar click en la sección negra. Voy a convertir eso en amarillo. Haré clic en mi sección blanca, jalaré tal vez a mitad de camino, y voy a convertir eso en rojo o naranja Solo voy a hacer clic en mi textura en una posición aleatoria para agregar otra ranura. Y con eso, sólo voy a bajar la opacidad hasta el final sobre ella. Ahora como que tenemos ese desvanecimiento que estás viendo aquí en la parte superior. Y sólo voy a tirar de eso en un poco. Ahora, veamos. ¿Se puede notar la diferencia si vamos así? No podemos. Bien, entonces te mostraré ese pequeño truco después. Bien. Entonces tenemos nuestro amarillo, nuestro naranja, y una sección transparente dentro de mi rampa de color. Ahora bien, para que esto se parezca más al fuego y no a esta nube que estamos viendo, voy a desplazarme hasta el material debajo del elemento Canvas. Voy a hacer clic en el menú desplegable. Es como material de artículo de lona. Y para el modo blend, sólo voy a configurar eso para agregar. Todo bien. Entonces ahora con ese cambio opson, ya tenemos algo que se parece mucho más a un incendio Ahora bien, si quieres tener ese centro blanco en tu fuego, entonces todo lo que tienes que hacer es simplemente tomar tu color y ver como tengo Oh, no puedes ver ahí. Todo bien. Un momento. Todo bien. Voy a abrir esa captura de pantalla para ti ahí. ¿Verías como tengo mi color aquí mismo en el borde? Bueno, si quieres ese centro blanco, el centro blanco caliente, todo lo que tienes que hacer es simplemente alejarte un poco del borde, y ves el cierre más lo tiras, grande va a ser esa zona blanca caliente así que hay un pequeño consejo para ti que puedes hacer por tu color original ahí. Sólo voy a sacarlo un poquito, tal vez ir un poco más cerca de la naranja. No queremos ir hasta el naranja, bien, porque no queremos que el naranja entre en naranja. Voy a ir un bonito naranja amarillo, un naranja dorado y alejarme del centro de bit así consigo ese bonito centro caliente blanco. Todo bien. Y con eso, básicamente tenemos a nosotros mismos un incendio todo instalado aquí. Ahora, dependiendo de lo que estés buscando, la cantidad, derecho, puede variar. Entonces, si vamos a 12, podemos conseguir algo así, que perdemos ese centro blanco caliente, pero esto puede ser algo más cercano a lo que estás buscando. Ocho fue el predeterminado. Entonces, dependiendo del visual artístico que estés buscando, puedes ajustar la cantidad aquí a lo que sea que te vaya a quedar y qué es lo que quieres Y es por eso que cuando estás viendo un incendio, por ejemplo, en un juego, si tienes una máquina de especificaciones más bajas, podrías perder un montón de marcos al mirar el fuego. Y luego cuando miras hacia otro lado, tus marcos se disparan de nuevo hacia arriba porque un fuego puede tener una tonelada de partículas en él. Sobre todo si estamos hablando más en tres D. supongo, pero por eso causaría que las partículas puedan tener, digamos, mil partes para ellas, y entonces cada una de esas partes va a tener su propia textura. Entonces es casi como agregar 1,000 sprites a tu pantalla, ¿verdad? De repente. Bueno, con eso, tenemos a nosotros mismos un fuego. Voy a volver a bajar el mío a 50 porque realmente no siento que necesitemos 100. Y podríamos entrar y jugar con algo así como variación de tonalidad aquí, que va a retocar el matiz, que va a parecerse al color Entonces, si dijéramos, subir el mínimo a tal vez 0.2 y luego cambiar el máximo hasta 0.6, o, ¿sabes qué? Vamos a subir el máximo hasta el final. Y mira eso. Ahora tenemos como este fuego mágico en su lugar. Eso nos viene. Ahora bien, podríamos usar esto ya que está en forma vertical, podríamos usar esto para algo así como una fogata Ahora bien, si esto fuera a D, obviamente, probablemente tuitearíamos la escala y haríamos las cosas aún más pequeñas, incluso más pequeñas que esto. Pero claro, eso va a depender del tamaño de textura que estés usando para empezar. Para que veas con eso, podemos tener estas dos variaciones y tener más de esta mirada mágica. Y al igual que otras secciones, podemos agregar una curva si queremos hacer eso para nuestra variación. Y podemos jugar con esos, y afectaría base off de Aunque, mío no está cambiando. Eso es un poco interesante. El valor mínimo es cero que teníamos ahí. Bastante interesante. No está afectando. A lo mejor es un poco de un bicho con esa curva o algo así en este momento. No lo sé. Pero puedes ver cómo la variación de tonalidad puede agregarle instantáneamente esa sensación mágica con todos esos colores. Si quieres, tal vez podrías ajustar angular o velocidad si quisieras, eso va a tener que ver con girar, ¿verdad Tu Texas girando en eso, así ves si volteamos eso todo el camino hacia arriba, eso realmente está girando en más de una pelota. Sólo voy a bajar eso de nuevo. Orbital va a ser como ves, todo va a estar yendo en órbita alrededor de tu punto aquí en el medio. Ahora con eso ahí arriba, obviamente, eso no va a marcar la diferencia, pero aquí tienes para que veas algún tiroteo. Ahora, para que puedas obtener dif estos diferentes tipos de efectos, y son todos estos pequeños efectos los que tomamos y juntamos para crear estos increíbles efectos visuales dentro de los juegos. Pero creo que eso es todo lo que necesitamos cubrir aquí, ¿ darle una buena una buena base para salir? Toda la vida obviamente va con cuánto tiempo va a durar ese fuego. Ya ves la razón por la que ahí conseguimos una bocanada. Y hay porque los otros incendios siguen existiendo. Y le dijimos que tantos, 50 pueden existir a la vez. Duran 200 segundos, así que van a vivir bastante tiempo. Pero ya ves 1 segundo, obviamente, mueren rápido, así que van a seguir reapareándose. Un disparo significa que va a ir solo una vez, solo un puf rápido Entonces eso es algo que usarías para algo así como una explosión. Corriente que emite de nuevo aquí arriba en la parte superior. Y esto lo podemos adaptar fácilmente. Entonces si decimos cero en la dirección ahí y puedes ver uno en la X ahí y puedes ver si lo hicimos más largo en la vida o algo así, puedes ver de inmediato cómo podemos pasar de una fogata Y luego con algunos ligeros ajustes, ahora podemos modificar eso en tal vez un ataque lanzallamas o aliento de fuego consistente para un dragón o Y todo lo que tenemos que hacer es simplemente hacer tal vez tres retoques muy pequeños Pero claro, voy a evitar que divague. Voy a seguir adelante y dejar eso ahí. Ahí vas. Hemos seguido adelante y hemos creado un fuego de dos D para nuestro mundo. Entonces, si quisieras agregar algo como humo, solo agregarías eso como una partícula secundaria, ¿verdad? Entonces, como espectáculo rápido, solo tenemos otra partícula. Queremos que la partícula esté detrás de nuestro fuego. Voy a volver a meter mi textura de humo. En un material de proceso de partículas, cambiar mi escala con una nueva curva. Y todo lo que estamos haciendo es repasar esos mismos pasos que hicimos anteriormente. Como hicimos antes. Pero fuimos con ahí. Voy a ir con color en vez de rampa. Sólo voy a ir con un gris oscuro en mi color aquí. Vamos a establecer nuestra dirección. Negativo uno en la Y. Danos algo de velocidad inicial. Gravedad ajustada a cero. Mi propagación para ser similar al humo. Voy a agregar un material a esto, también. Un artículo de Canvas solo para que pueda agregarlo a aditivo. Obtenemos algo un poco más humo como se ve ahí. Y como ves, con solo hacer estos pocos retoques, casi tenemos el aspecto que vamos a buscar La cantidad aquí y ocho tal vez agreguemos un par por 12, y todo lo que tenemos es que no dure tanto tiempo. Voy a seguir adelante y la velocidad sube un poco. Ahí vamos. Voy a mover eso de nuevo. Ya pueden ver que tenemos este humo saliendo de nuestro fuego. Derecha. Entonces ahí tienes. Voy a tirar eso hacia abajo, aumentar mi humo un poco más. Pero tienen justamente así simple y esos pocos twits van desde un principio Y ya ves que hemos añadido un humo a nuestro fuego. Bien. Entonces con eso, tenemos un incendio. Tenemos humo con él. Eso lo hará por éste. Y a continuación, seguiremos adelante y echaremos un vistazo a cómo crear un fuego usando partículas en tres D. De esta manera, podrás tener una idea de cuán similares y diferentes son dos D y tres D al crear partículas y cuánto de tus conocimientos se transferirán de una a otra. 79. Creación de un fuego en 3D: Bien, todos, vamos a seguir adelante y volver a crear un efecto de fuego, pero esta vez en tres D. Así que solo tengo una escena de tres D aquí, y voy a seguir adelante y solo agregar un grito Simplemente agregue partículas GP tres D en nuestra escena de tres D. Ahora, al principio, puede que estés un poco confundido porque de todos modos no ves una textura en ningún lado. Bueno, para crear este fuego, lo que tenemos que hacer, ya que estamos usando dos sprites D vamos a ir a nuestros pases de caída. Ir a pasar uno. Y desde tu menú desplegable, solo tienes que seguir adelante y seleccionar una malla lisa. Abre eso. Ahora, ya ves que está apuntado. Obviamente, eso no va a funcionar porque vamos a estar mirándolo, ya sabes, desde un lado así, ¿verdad? Entonces lo necesitamos para enfrentarnos en lugar de mirar hacia el cielo. Entonces dentro de nuestro pase uno, dentro de nuestra malla de avión, miramos hacia abajo. Vemos orientación, y podemos ir y cambiar eso a estas diferentes direcciones. Y si ves fijarlo para enfrentar X, podemos ver que va a estar enfrentándonos, lo cual es genial. Ahora bien, el otro tema que tenemos es, obviamente, si nos damos la vuelta, el fuego, bien, el avión desaparece porque la parte posterior no está renderizada. Miramos desde un lado, realmente no podemos verlo, así que solo podemos verlo de un lado. Eso no es genial. Tenemos que hacer lo que se llama una cartelera. Pero agrego agregarnos esta cartelera para que siempre podamos estar mirándola. Vamos a seguir adelante y agregar material aquí justo debajo nuestra orientación y solo agregaremos un material estándar. Y dentro de ahí, si entramos y nos desplazamos hacia abajo, veremos una sección llamada Billboard. Ahora bien, si abrimos eso y configuramos el molde para habilitarlo. Bueno, parece que acaba de desaparecer de nosotros. Entonces probemos por qué cartelera. Bueno, eso tampoco está funcionando. ¿Qué tal cartelera de partículas? Ahora tal vez se esté preguntando por qué ninguna de estas opciones funciona bajo cartelera. Y para nosotros, porque estamos usando partículas que aquí, en realidad tenemos que establecer esto de una manera diferente. Entonces ninguna de estas opciones de cartelera en realidad va a funcionar para nosotros. Entonces para cartelera esto correctamente, en realidad tenemos que llegar a nuestro material de proceso y, por supuesto, agregar ese proceso de partículas. Y luego bajo dibujo, ves, sigue siendo de la misma manera, nada ha cambiado. Vamos a la línea del transformador y la enviamos a Z o Z, cartelera, y bien, ahí no funciona nada. Pasemos al siguiente, ancho a velocidad. Echa un vistazo. Bien. Bien, parece que nada está funcionando realmente aquí. Bueno, eso es interesante. Ahora, puede que estés un poco confundido. ¿Por qué no pasa nada? ¿Cómo es que no pasa nada? Y por eso es importante que también quisiera repasar esta sección de tres D en lugar de simplemente llamarla partículas y decir, Oye, tu transferencia de conocimientos de dos D ha terminado, porque tres D puede ser un poco confuso así cuando no has trabajado en ella. Entonces con las líneas transformadoras ajustadas a la cartelera Z o Z, tenemos que bajar también a nuestra orientación, y cambiamos eso a cara Z o cara Z. Y ahora podemos verlo. Y a medida que giramos, siempre podemos verlo. Siempre va a hacer frente a la cámara. Bien, así que eso es increíble. Así que ahora realmente podemos empezar a trabajar en la creación de este comprador para nosotros. Bueno, vamos a ir dentro de nuestro material en nuestro avión, ¿verdad? Así que los pases de caída pasan uno, nuestro avión, dentro de ahí, material leído bajo orientación. Y dentro de Albedo, igual que en tres D regulares, todo se ve igual Vamos a ir en textura, y yo sólo voy a traer mi humo. Y verás que tiene un fondo negro. Bueno, eso no es agradable. Eso no es realmente lo que habíamos planeado. Pensé, bueno, lo que esperábamos. Entonces, lo que hacemos para eso es que realmente llegamos a la sección de transparencia y lo pondremos en Alpha. Y tienes otras opciones aquí Tijera Alpha, hash Alpha y pre pass de profundidad Ahora, dependiendo de lo que estés haciendo, eso puede tener diferentes efectos. Pero para nosotros, lo único que queremos específicamente es Alpha aquí. Y para el modo blend, vamos a configurarlo para que agregue, tal como hicimos en dos D, cuando agregamos ese elemento canvas, material. Bien, entonces ahora estamos acercando algo a lo que estamos acostumbrados . Llamar realmente no importa. Podemos dejarlo atrás solo para que no renderice el otro lado ya que nunca vemos el otro lado de todos modos. Y eso es lo que significa llamar. Entonces, si ponemos el frente, sigue ahí, pero no está renderizando el frente. Está renderizando la parte de atrás, pero como el frente siempre está de frente nosotros, nunca lo vamos a ver. Entonces vamos a configurarlo o dejarlo en el default de back porque nunca vemos la parte de atrás. Sólo vemos el frente. Y esto es algo que también ayudará en el rendimiento de tus juegos, si estás haciendo algo en tres D. De esa manera, básicamente no estás renderizando lo que no puedes ver. Ahora, por sombreado, si damos vueltas, verás que aquí oscurece Y obviamente, si es un fuego, tiene su propia luz, así que eso realmente no tiene sentido que el fuego sea oscuro por un lado y brillante por el otro. Entonces vamos a entrar en la sección de sombreado de nuestro material, y desde por píxel, vamos a establecer eso en unshaded Ahora bien, lo último que tenemos que hacer dentro de este material es bajo el sombreador de vértices, activar el uso como Y si no usamos eso, no podremos usar el color en nuestra partícula o la variación de tonalidad o la rampa de color. No vamos a poder usar nada de eso. Simplemente se quedará de color blanco liso con eso apagado. Tenemos que usar el color aquí en Albedo, y eso es todo. Ahora, obviamente, no queremos eso. Queremos realmente usar la rampa de color en eso, así que por eso vamos a usar este albedo y encenderlo bajo el color del vértice Bien, así que dibuja pase. Podemos minimizar completamente esa sección, y ya terminamos. Solo podemos entrar específicamente en el material de proceso o nuestras partículas. Ahora, como antes, tenemos nuestro tiempo, nuestra forma de emisión y todo. Ahora, ya que estamos en tres D, en realidad voy a cambiar nuestra forma de emisión en una esfera, y voy a poner mi rtus en 0.4 Ahora, básicamente, esto nos va a dar un poco de ifier de profundidad para que no se vea tan plano Artículo banderas, no necesitamos preocuparnos por esa dirección. Bueno, queremos ir en la otra dirección, ¿no? Entonces tenemos nuestro set Y, ¿es negativo Y aquí? Bueno, tenemos la gravedad tirando de nosotros hacia abajo. Y si abajo es negativo, entonces queremos ir positivos. Entonces solo diré gravedad a cero y pondré nuestra Y en una positiva con una dirección. Velocidad inicial, la pondré en cuatro. Y la razón por la que voy tan bajo, como pueden ver que cuatro es en realidad un número muy alto, mientras que en dos D, cuando estamos mirando píxeles, es un número muy, muy pequeño. Ahora, podemos verlo saliendo en esta enorme área direccional, y eso es porque nuestro spread es 45, así que vamos a bajar eso a algo así como 12. Ahora podemos tener algo que sea un poco más razonable para un incendio. Vamos. E incluso entonces, tal vez quieras bajarlo aún más que eso. 12 parece que sería bastante bueno para fumar, aunque. Y voy a entrar y al igual que hicimos antes, añadir una nueva textura curva a mi escala. Y voy a reducir eso para empezar y luego encogerlo hacia el final y simplemente encontrar algo aquí que funcione para mí. Y si, creo que solo pasar de uno abajo a cero así con el tiempo, creo que va a estar bien. Mi color, voy a usar una rampa de color, una nueva textura de degradado. Y igual que antes, voy a ir con algún tipo de amarillo aquí al inicio. Voy a tirar naranja en algún lugar de ahí. Hacia el final, seremos transparentes. Si solo muevo eso, consigue algo así, y creo que voy a lanzar un poco más taco naranja al otro lado. Sólo para realmente, realmente afectar mucho ahí. Yo no tiro negro en el frijol. Sólo para obtener más de un gradiente de fuego, aunque, como veis, aquí está perfectamente bien. Yo sólo voy a lanzar otro negro de este lado. Todo bien. Así que así, estamos recibiendo un buen fuego aquí. Y claro, dependiendo de la cantidad de partículas que quieras poner aquí, tal vez 200, como veas, eso va a marcar una gran diferencia el aspecto visual de la misma. Entonces ocho obviamente no es el número al que queremos ir con esto. 50 que estábamos usando en dos D es bastante decente. Así que probablemente podrías salirte con la tuya con 50 por rendimiento en lugar de algo así como 200, pero siempre podrías ir con 200 si quisieras. Pero en su mayor parte, hemos seguido adelante y tenemos nuestros dos D fuego re creados aquí en rojo. Y, por supuesto, podemos entrar y podemos jugar con la Q para que podamos tener un fuego mágico, crearnos, nuestra variación Que Ahora, sigamos adelante y podríamos mirar la radio lineal de velocidad angular. Puedes jugar con todas esas cosas si quisieras. Ángulo es el ángulo en el que va a aparecer la textura Entonces, si quisieras jugar con eso, podría. Entonces si me subo, diga hasta 45 grados, así que eso le va a dar un poco más de variación y ojalá que se vea menos copiar y pegar, hacer que se vea un poco más agradable Pero en general, eso es todo. Todo lo demás va a ser exactamente igual que dos D aquí. Pequeña configuración segura que tuvimos que hacer al principio. Y verás esa esfera, si cambias ese radio de lanza Cuanto más grande hagamos eso básicamente, más grande va a ser el fuego. Sólo voy a poner eso atrás. D 0.4, sólo puramente para buscar. Sí, ahí tienes. Eso lo tenemos. Entonces algo que voy a mencionar aquí es que ya que estás en tres D, vas a tener un ambiente mundial, claro, y si quieres agregar un humo, va a ser exactamente lo mismo que hicimos en dos D, justo sin humo, haz la configuración como lo hicimos en tres D aquí y solo una especie de meterla dentro del fuego. Pero vas a tener un ambiente mundial en tres D en algún momento. Si estás haciendo un juego casi cualquiera de tres D, especialmente si quieres tener algún tipo de post procesamiento. Entonces con el ambiente mundial aquí, acabo de agregar uno a la escena. Y voy a ir a un nuevo entorno, y aquí es donde, claro, entras tú, y creo que pasé por esto en un momento dado. Vamos a entrar y crear un cielo. Eso viene en el cielo, crea un nuevo cielo. Yo digo cielo seural así. Y podemos tener nuestros cielos preparados para un juego de tres D. Pero lo que también puedes hacer en este entorno mundial es si bajamos a brillar, encendemos eso. Mira nuestro fuego tiene este pequeño resplandor naranja alrededor y para qué sirve especialmente con fuego aquí, modo blend, si lo configuramos aditivo, échale un vistazo a eso. Ahora tenemos esa mirada ardiente saliendo de ella, como floración, ¿verdad? Y podemos retocar floración aquí. Si quisiéramos, puedo volverme realmente enloquecido muy rápido. Ahí es donde estaría tu opción de floración si quisieras tener eso. Y tu umbral HDR, realmente puedes entrar y ajustar todas estas cosas, y puedes ver exactamente cómo afectaría algo como nuestro fuego aquí Verás, incluso tenemos ese parpadeo dando vueltas. Solo quería mostrarte cómo tus tres partículas D pueden verse afectadas por el entorno mundial, por opciones como tu floración, tu modo de fusión, tener habilitado el brillo y cosas así. Pero ahora mismo lo haré aquí por tres partículas D. 80. Cómo codificar cualquier mecanismo: Bien, así que echemos un vistazo a cómo podemos codificar prácticamente cualquier mecánico que se nos ocurra Entonces para este ejemplo, vamos a seguir adelante y crear un doble salto para nuestra pequeña plataforma o personaje de conjeturas. Y si lo pensamos, tenemos que saber que vamos a saltar del suelo y saltar una vez en el aire. Ahora, para hacer un seguimiento de eso solo esas dos veces, necesitamos saber cuántas veces hemos saltado para que sepamos si podemos o no. Entonces para esto, voy a torcerme en las variables aquí para hacer un seguimiento de eso, ¿verdad conteo de saltos por defecto es cero. Todo bien. Y cuando saltamos del suelo, obviamente, nuestro conteo de saltos tiene que subir en uno más igual a uno. Fresco. Ahora bien, ¿qué pasa cuando no estamos en el piso? Pero cuando no estamos en el piso, podemos hacer lo mismo que estamos haciendo aquí donde comprobamos si presionamos nuestro botón de salto, y esto donde podemos decir, y conteo de saltos es menor que dos. Bien, entonces esto significa que podemos saltar cuando tenemos cero y podemos saltar cuando tenemos uno en nuestro mostrador. Eso nos da dos saltos, ¿verdad? Cero y uno. Y todo lo que vamos a hacer aquí es lo mismo que hacemos cuando normalmente saltamos, ¿verdad? Subimos y sumamos a nuestro conteo de saltos. Ahora, vas a notar un problema aquí. Vamos a saltar una vez en el suelo, una vez en el aire, ¿verdad? Tenemos nuestro doble salto. Pero si lo intentamos de nuevo, no funciona. Volvemos a un solo salto. Ahora bien, ¿por qué crees que es eso? Bueno, es porque nuestro conteo nunca se restablece en ningún momento, ¿verdad? Empieza en cero, ¿verdad? Echemos un vistazo a esto. Empezamos en cero, y saltamos. Eso es uno, dos, tres, cuatro, cinco, seis. Entonces después de dar ese doble salto inicial, ya estamos en dos o más. Por lo que esta afirmación nunca será cierta, así que nunca podremos volver a conseguir ese salto en el aire. Lo que significa que tenemos que restablecer este conteo de saltos en algún momento. Entonces, ¿cuándo restablecemos este conteo? ¿Cuándo dejamos que el jugador tenga su doble salto hacia atrás? Bueno, normalmente, les dejas tener su doble salto hacia atrás después que aterrizan de nuevo en el suelo. ¿Bien? Bueno, ¿cómo sabemos cuando estamos en el suelo? Bueno, ya tenemos ese cheque, si estamos en el piso. Entonces, si estamos en el piso, el conteo de saltos es igual a cero, ¿verdad? Simplemente lo reiniciamos. Y ahora tenemos ese doble salto. Aquí vamos. Entonces todo lo que tienes que hacer es reducir la velocidad, pensar en el problema y qué es lo que estás tratando de hacer. Piénsalo lógicamente y divídalo en cada paso Y si haces eso, prácticamente puedes trabajar tu camino a través creación de cualquier mecánico que se te ocurra Bien. Entonces así es como puedes crear bastante bien cualquier mecánica en la que puedas pensar para tus juegos. Y esto también puede funcionar de la misma manera con la creación de tu software. Simplemente, por supuesto, no ir con saltos, sino tal vez implementar una función o implementar una herramienta o una acción o algo así. 81. Gravedad y salto: Bien, entonces aquí vamos a hablar de cómo podemos sumar gravedad y crear un salto en nuestro juego Y estoy haciendo esto aquí en su sección de bonos porque realmente no encaja con roger, per se. Aunque podrías volver a entrar si quieres, podrías intentar agregar esto en la versión tres D. Pero Madness, porque si estás haciendo dos juegos D o tres juegos D, probablemente vas a necesitar poder saltar o trabajar con la gravedad en algún momento. Así que voy a tirar esto aquí de todos modos. Entonces, lo que primero tenemos aquí, voy a explicar son los tres tipos de cuerpos físicos. El cuerpo estático, que está aquí abajo en el fondo, está funcionando como nuestro piso, y el cuerpo estático es algo que no se mueve sin importar lo que le pase. Entonces puedes pensar en esto como el suelo, un árbol, un edificio, ¿verdad? Es algo que no se va a mover, y no va a tener ningún impacto. El cuerpo rígido dos D aquí, que está en el lado derecho, en nuestra imagen ya está por defecto. Configurar para que se le aplique la física. Entonces esto es algo con lo que solo se va a interactuar, patear por algo como tal vez una pelota en el fútbol, ¿verdad Corriendo por el campo, pateándolo. O si has jugado Sky Rim, todo el desorden, la comida, las ruedas de queso que van volando por todas partes cuando corres o usas alboroto ro Da, ¿ Todos estos son cuerpos rígidos. Es algo que actúa cuando algo interactúa con él o se le aplica fuerza Ahora bien, si tuviéramos que correr esto, vas a ver que el cuerpo rígido cae recto hacia abajo debido a esa física natural, y el cuerpo estático no se mueve, así que por eso lo usamos como piso. Y claro, otras cosas como edificios y eso. Ahora, no importa qué tipo de cuerpo físico usemos aquí, tienes una forma de colisión, y eso define la forma para ese cuerpo físico específico. Y todos estos tienen sprites solo para que podamos ver visualmente lo que está pasando aquí Y nuestro cuerpo de personaje, como sabéis, de Froger es lo que usamos cuando el jugador va a tener el control del personaje conjunto y va a tomar entradas Ahora bien, hay raras ocasiones en las que podrías usar un cuerpo rígido, pero eso va a ser muy nicho y especializado en ese momento. Sigamos adelante y miremos nuestro cuerpo de personaje. Aquí tengo dos variables, una para nuestra gravedad, otra para nuestra altura. Todo bien. Y dentro de nuestro proceso aquí. Ahora bien, de nuevo, esto probablemente debería estar bajo proceso de física solo porque está relacionado con nuestros cuerpos físicos que se mueven alrededor. Pero para este ejemplo, está bien. Ahora, para usar estos en lugar de movimiento, vamos a usar velocidad, y un cuerpo de personaje tiene una propiedad de velocidad ya por defecto como un X de cuatro puntos Así que para usar esta propiedad de velocidad, tenemos que usar move y slide o move y colisionar Voy a usar mover y deslizar aquí. Ahora, pensemos en esto. ¿Cuándo queremos que se aplique la gravedad? Bueno, sólo queremos que se aplique cuando nuestro personaje está arriba en el aire para que puedan ser traídos de vuelta a la tierra, derecho, de vuelta al suelo. Bien, bueno, ¿cómo podemos decir si el personaje no está en el suelo, luego agregarle gravedad Bueno, podemos hacerlo justamente eso. Goto tiene una función incorporada llamada es en el piso, lo que realiza esa comprobación para nosotros para ver si estamos en el piso, que por defecto, la dirección de arriba es en la dirección Y negativa, así que eso significa positivo Y. Cuando choquemos con algo debajo de nosotros, eso va a ser considerado el Entonces podemos decir si y dijimos que no está en piso. Y tenemos que agregarle nuestra gravedad, ¿verdad? Entonces, entonces tomamos nuestra velocidad, y estamos en dos D y será lo mismo en tres D. Accedemos a nuestro eje Y. Y lo fijamos con nuestra gravedad. Ahora bien, no ponemos eso igual a nuestra gravedad porque queremos nuestra gravedad nos tire hacia abajo, ¿verdad? Y a medida que te caes, ganas impulso y te mueves cada vez más rápido. Así funcionan las cosas, y si lo positivo está bajando, necesitamos sumar más es igual a la gravedad. ¿Todo bien? Entonces, si seguimos adelante y jugamos esto, veremos ahora que nuestro cuerpo de personaje cae igual que nuestro cuerpo rígido. Juega eso otra vez. ¿Correcto? Entonces nuestro cuerpo de personaje podría caer un poco más rápido que nuestro cuerpo helado, pero ves que funcionan igual Entonces así es como aplicarías gravedad a un personaje a un cuerpo físico de algún tipo. Bien. Entonces, ¿y ahora qué hay de saltar? Bueno, ahí tengo una parte superior variable para mi altura de salto, y esto va a representar la velocidad que tenemos subiendo en el aire Bueno, ¿cuándo podemos saltar? Bueno, sólo podemos saltar cuando estamos en el suelo, ¿verdad? Entonces, en vez de verificar cuando no estamos en el piso, queremos verificar que estamos en el piso. Yo estoy en piso. Y podemos agregar esto como un segundo argumento y solo decir, y presionamos nuestro botón de salto, o podemos tenerlo como una sangría separada aquí, si eso tiene sentido para usted, cualquiera que sea más fácil para usted seguir Sería más limpio solo tener las dos declaraciones en una línea aquí. Pero otra vez, depende de ti. Solo quieres intentar evitar tener demasiadas declaraciones anidadas siempre que puedas Entonces diremos si input es acción y no queremos decir presionado porque vamos a estar ahí sentados rebotando como un conejito Entonces quieres decir simplemente presionado o recién liberado. Así que cada vez que nuestro dedo baja o cuando nuestro dedo sube, ahí es cuando vamos a dar un salto. Y eso es preferencia personal. Prefiero presionarme, y voy a poner esto a mi upkey mi jo y ¿cómo subimos? Bueno, hacemos lo contrario de la gravedad, ¿verdad? Si la gravedad nos está tirando hacia abajo, hacemos lo contrario para subir. Entonces, pongamos nuestra velocidad en nuestro eje Y. Y si positivo nos tira hacia abajo, vamos a subir negativo, así menos es igual a nuestra altura de salto. Ya ves que estamos en el suelo y podemos seguir adelante y podemos saltar. Así que así, ya hemos creado una simple mecánica de saltos para nosotros. Y notarás que no podemos saltar cuando estamos en el aire. Si spa el botón, sólo podremos saltar una vez que golpeemos el suelo. Y si quisieras tener movimiento, estás de izquierda a derecha en el trabajo con tu velocidad como en la mayoría de los juegos, lo harás. Va a funcionar de la misma manera que nuestro salto aquí. Entonces, si seguimos adelante y comprobamos, así que me voy a dar marcha atrás de mi si, así que voy a asegurarme de que todavía estemos en el piso. Voy a decir que entrada es acción. Y aquí donde voy a decir descanso siempre y cuando estemos sosteniendo a la izquierda o a la derecha, queremos movernos. Voy a decir bien. Entonces vamos a comprobar nuestra velocidad, y esta vez vamos a ir en el eje X porque nos movemos a la izquierda y a la derecha. Ahora bien, si estás en tres D, vas a estar trabajando con el eje X y el eje Z, y esto va a ser obviamente tener más dependencia. Pero para nosotros, sólo voy a ir aquí. Solo necesitamos punto de velocidad X para este ejemplo. Y si vamos a la derecha, eso va a ser positivo. Y podemos seguir adelante y poner esto en algo así como diez, y voy a copiar esto para el otro lado o a la izquierda, y si nos quedamos, eso significa que es menos iguales. Voy a hacer esto más si. Entonces si presionamos hacia arriba, saltamos, y luego tenemos un segundo si cadena por separado aquí. Si presionamos a la derecha, vamos positivo X, lo contrario si presionamos a la izquierda, vamos negativo X. Si echamos un vistazo, ahí vamos. Oh, ahí vamos. Deslizamiento hacia adelante y hacia atrás. Entonces, si no quieres ganar esa velocidad ahí, puedes simplemente establecerla a una velocidad de X igual, y eso solo te hará ir tan rápido de inmediato. Ahora, como pueden ver, aquí vamos un poco despacio. Entonces veamos qué pasa si lo movemos hasta 100. Bien, así que ahí tienes. Y todavía podemos saltar todo este tiempo. Ahora, tenemos un problema aquí, en este caso, ver si dejo de presionar a la izquierda o a la derecha, M E va a seguir en esa dirección porque esto nunca se establece. Y por eso esto si la cadena tiene que ser un bloque separado. Entonces llegamos si presionamos a la derecha, se si presionamos a la izquierda, y podemos terminar esta cadena con una s de Velocidad X igual a cero. Y eso es todo lo que tenemos que hacer. Y ahora dejará de moverse cuando dejemos de presionar nuestro botón. Y ahí está nuestro salto. Aquí vamos. Bien, así que ahí tienes. Así es como podemos trabajar para crear un salto, así como trabajar la gravedad en tus juegos. Y supongo que un rápido escaparate de cómo usarías la velocidad en lugar de la posición o algo así. Todo bien. Así que eso lo hará para este escaparate rápido de nuevo, solo mostrarte cómo usar la gravedad y crear un salto porque es algo que probablemente vas a necesitar saber cuando estés creando algunos trabajos para ti mismo 82. Guarda y carga archivos: Bien hablemos de cómo podemos guardar los archivos y los diferentes tipos de archivos. Entonces vamos a comenzar con el archivo de texto, archivo texto clásico aquí. Así que sigamos adelante y podemos crear nuestra función guardar aquí. Tengo una escena aleatoria aquí. Ese guión en él. No es gran cosa. Realmente no importa, está guardado solo para que pueda ejecutarlo. Y voy a crear mi función, guardar texto. Todo bien. Entonces, ¿qué es lo que tenemos que hacer? Bueno, piensa en esto lógicamente. Tenemos que abrir un archivo en alguna parte. Necesitamos tener los permisos de escritura, ¿verdad? Porque queremos escribir un archivo, guardarlo. Y queremos poder modificar el contenido de ese archivo. Entonces línea Goto cuatro con D descript dos aquí, realidad podemos hacer la mayor parte de eso en una Entonces voy a guardar var F para que sea mi archivo aquí. Y podemos hacer esto limpiamente solo porque sólo va a ser usado aquí en esta única función No es algo que vaya a ser usado en todas partes. Entonces solo va a tener un uso de tal vez una o dos líneas, ¿verdad? Entonces vamos a obtener la clase de acceso a archivos, y esto es lo que llamamos abierto. Ahora bien, aunque el archivo no exista, aún tenemos que abrirlo en esa ubicación. Como cuerda, voy a pasar en Rs. Agrupando slosh, deberíamos ponerlo en nuestro lado de nuestra carpeta de proyectos aquí Y voy a seguir adelante y darle un nombre y decir que voy a llamarlo prueba de texto punto TXT. Entonces el segundo argumento va a ser el modo que le demos. Lo cual depende de lo que estemos haciendo. Ahora, estamos guardando un trozo de texto. Entonces como dije, queremos escribir a ese archivo. Entonces vamos a usar punto de acceso a archivos. Y en este punto, tenemos un expediente. Tenemos un archivo que se ha abierto o mi directorio específico con permisos para escribir para ese archivo. Todo bien. Entonces, ¿qué es lo que tenemos que hacer a continuación? Bueno, tenemos que en realidad necesitamos almacenar una pieza de información. Bueno, para hacer eso, tenemos que tener una pieza de información para almacenar. Así que tengo una entrega en el downp A MipSum con texto que usamos Entonces solo voy a crear mi variable aquí en la parte superior y llamarla no texto. No quiero confundir. Llamemos a esto tal vez una historia, ¿verdad? A lo mejor tenemos aplicación de historia o aplicación de escritura tenemos todo esto todo este texto aquí que vamos a almacenar. Ahora bien, en realidad no importa lo que sea, pero vamos a hacer eso, así podemos ir a F dot Store. Y lo que podemos hacer es que podemos decir cadena de tienda, tienda R, línea de tienda. Todas estas diferentes opciones aquí. Ahora mismo, sólo voy a seguir adelante y decir línea de tienda, y voy a almacenar historia. Todo el texto que está en la historia. Pero mi función lista, voy a seguir adelante y simplemente llamar a esta función guardar Pet. Y cuando ejecuto esto, mira, inicial, parece que no pasó nada. Vamos a cerrar y echar un vistazo a nuestros archivos. Vemos pruebas de texto, TXT aquí mismo, y ahí está todo el contenido dentro. Bien. Entonces, ¿cómo podemos realmente cargar esa información? Voy a seguir adelante y borrar todo ahí dentro. Entonces podemos ver que la historia es una D. ¿Cuándo empezamos esto? Y echemos un vistazo a cómo cargaríamos un trozo de texto o cargaríamos información de este archivo de texto. Cargar texto. Ahora, comenzando lo mismo, tenemos que abrir nuestro archivo. Sólo que esta vez, queremos tener los permisos de lectura porque queremos leer los contenidos que hay en él. Entonces lee en lugar de escribir. Y si usamos cadena de tienda, ahora podemos obtener como texto es lo que podemos llamar en nuestro archivo. Ahora, en nuestro caso, podemos seguir adelante y asignaríamos una historia para igualar lo que sea este texto en esta situación. Entonces si cargamos texto, entonces podemos enganchar auto rellenado ahí, imprimir historia. Yo echamos un vistazo a la salida. Podemos ver que nuestra historia sí se imprimió, pero nuestra historia comenzó como vacía. Obviamente, se cargó bien, y sacamos todos nuestros datos de él. Entonces esa parte es fantástica. Bien, así que voy a seguir adelante y mostrarte la tienda VR, si quieres elegir eso en lugar de tienda line Tienes que almacenar tus variables individualmente una por una, así. Y si después tuviéramos que echar un vistazo al archivo, vemos que realmente no podemos ver nada. Realmente no podemos ver la información que hay aquí. Y puede haber bueno o malo dependiendo de ti mismo, supongo. Pero luego para cargar esta información, tenemos que usar Get Navar, y tenemos que hacerlo continuamente para tantas variables como almacenemos ahí, y van a volver en el mismo orden en que se guardaron Así que tendrías que asegurarte de que los estás cargando exactamente en el mismo orden para guardarlos. Así que cada vez que guardes el archivo, vas a tener que entrar en tu función de carga también, y editarla cada vez. Entonces podrías hacerlo de esta manera, y hay algunas personas que lo hacen personalmente. Esto no me gusta. Si quiero almacenar múltiples piezas de código como esta, o múltiples piezas de datos, debería decir. Hay mejores formas, en mi opinión. Y uno de esos solo sería un archivo JSON. Y, claro, con eso, solo lo guardamos y lo cargamos. No importa si le agregamos datos más adelante en el futuro o no. Entonces, sigamos adelante y echemos un vistazo a esto. Yo sólo voy a seguir adelante y empujar todo eso ahí abajo. Y vamos a crear una función aquí, ¿verdad? Entonces vamos a decir funk, salva a Jason. ¿Y cómo guardaríamos el archivo JCN? Bueno, al igual que hicimos anteriormente. Necesitamos tener un archivo con permisos de escritura. Obviamente, no va a ser un texto. Va a ser un JSON. Y todo lo que tenemos que hacer todo lo que podemos hacer es que podamos almacenar línea aquí también. Entonces podemos decir r no Var línea de tienda FDA. Y la forma en que almacenamos esto sería json dot springify y pasar en el diccionario de información Entonces voy a seguir adelante y crear ese diccionario con los mismos tres datos aquí. Bien, así que hemos seguido adelante y empezamos con eso. Tenemos configurado ese ahorro, ¿verdad? Almacenar línea, estringificar y comprar datos, que por supuesto es nuestro diccionario que tenemos aquí Y llamamos a nuestra función Save Jason, así que vamos a ejecutar esto. Bien. Eso debería ser lo suficientemente largo, cerrarlo, y echamos un vistazo en nuestros archivos, y tenemos a JCNFle Ahí vas. Entonces así es como se vería ahora nuestro JSON cinco. Y ahora podemos pasar y podemos asignar piezas individuales de información, así podemos decir que la experiencia es igual, y luego simplemente sacar la experiencia de esto, por ejemplo, o simplemente podemos ir por todo y decir que mis datos son iguales a nuestros datos temporales una vez que realmente los hemos cargado. Entonces puedes ver cómo esto funcionaría mucho mejor, e incluso hay, por supuesto, el bar de la tienda, ¿verdad? incluso si almacenamos VR, tendríamos múltiples conjuntos de diccionarios, ¿verdad? Entonces tenemos múltiples JC Bilis o JSON Mentiras ahí dentro. Pero echemos un vistazo a cómo cargaríamos esta información. Entonces voy a seguir adelante y borrar todo de mis datos. Por el momento. En realidad, no lo abrace. Sólo voy a comentarlo para que no exista. Entonces es lo mismo que si se tratara un diccionario vacío en este punto. Y echemos un vistazo a cómo cargar un archivo JSN. Creamos una función, cargamos Jason y al igual que todo lo anterior, necesitamos tener un archivo abierto con los permisos correctos. Entonces vamos a leer en lugar de escribir. Entonces, ¿qué hacemos que sea diferente? Bueno, para esto, en realidad vamos a necesitar un objeto JSON porque no podemos llamar a la función que necesitamos sin crear una instancia real de la misma. Entonces voy a decir var J es igual a JSON. Nuevo. Todo bien. Y queremos analizarlo o verificar si hay algún error al analizarlo, así que vamos a decir, el error de análisis es igual Va a ser J punto pars donde pasemos en nuestro texto Val, ¿verdad Punto F como texto. Y ahora podemos comprobarlo. Entonces vamos a decir que pars error. Es igual a cero, ¿verdad? Entonces el doble es igual aquí. Y si es cero, eso solo significa que no tuvimos problemas a la hora de analizar nuestra información Lo que significa que es seguro para nosotros usar esos datos. Como tal, podemos seguir adelante y firmar mis datos. Es igual a J porque recuerda, analizamos para que la información se almacene dentro de este objeto JSON Datos JG. Y si fuéramos a subir aquí, podemos seguir adelante e incluso podemos hacer todo antes, ¿verdad? Entonces imprimimos, por datos, vemos que está vacío. Adelante, cargue nuestro archivo JCN, vuelva a imprimir sus datos después. Mira esa carrera. Verás teníamos un diccionario vacío, y luego teníamos todo cargado después. Entonces ahí lo tienes. Y no importa en qué orden estén estas cosas ya que son pares de valores clave. Podría ser un orden alfabético, podría ser un orden aleatorio. Mientras la clave y el valor sigan coincidiendo, no haría ninguna diferencia. Pero ahí tienes. Así harías algo por los archivos JSON. Y en lo personal, solía odiarlos absolutamente y evitarlos a toda costa. Estaba siendo terco en ese momento, y preferiría mucho en ese momento, hubiera preferido usar como diez archivos de texto aleatorios en lugar de solo un archivo JSON Era un hábito muy malo en su momento, pero ahora uso Archivos JSON, y esa es una que es mi forma preferida de almacenar todas mis variables personalmente, al menos. Entonces, si tienes múltiples variables que quieres almacenar, ahí tienes. Puedes seguir adelante y establecer eso. E incluso si quisieras aunque solo crees un diccionario temporal, solo para almacenar todo. Pero ese no es el único dato que podemos hacer. Hay más datos. Y lo que es más importante, el que realmente va a ser importante para los desarrolladores de software aquí, especialmente para los desarrolladores de juegos donde quieres organizar cosas como tus opciones de audio y opciones de visualización, vamos a usar lo que se llama un archivo de configuración. Ahora, un archivo de configuración tiene un aspecto muy profesional. Y si tienes moded sky room, toca el archivo INI, sabrás exactamente cómo va a ser esto. Parecen. Estos archivos de configuración o archivos de I&I son archivos de configuración. Y nos permiten mantener toda nuestra información aún más limpia e incluso más organizada que algo así como un archivo JSON, por ejemplo. Muy bien, así que voy a empujarlos a un lado, y vamos a decir funk, guardar configuración Y a diferencia de JSNFles, esto se va a salvar de manera bastante Y vamos a necesitar un diccionario para esto, también. Sólo éste, voy a llamar a esto mi configuración. Entonces entramos, y tendríamos, digamos la configuración de la pantalla aquí, ¿verdad? Y eso se establecería como su propio diccionario. Voy a seguir adelante y eliminarlos. Dentro de esta exhibición, no lo sé, lo mejor tenemos como gráfica. Bueno, obviamente, va a ser agarrado tenemos preestablecido. A lo mejor el usuario tiene medio por defecto. Y otra vez, a lo mejor ese es el índice de opciones dos, ya sabes, lo que sea que vayas a almacenar el Bien, bajamos Podemos hacer otra opción, diremos que hay un lucian y voy a seguir adelante y simplemente llenar completamente el jabón para nosotros con alguna información de ejemplo ¿Verdad? Entonces solo tengo un ejemplo de algunas configuraciones aquí de alguna pantalla, algo de audio, y por supuesto puedes seguir adelante, agregar tantas piezas de información ahí como quieras, agregar tantas lo que estas van a ser categorías, diríamos. Entonces este es el diccionario que vamos a usar al guardar y cargar para config. Lo primero que tenemos que hacer en nuestra función de guardar es que necesitamos tener una configuración, así que voy a crear un nuevo objeto de archivo de configuración. Archivo de configuración. Nuevo. Y ahora usamos algunos cuatro bucles. Diré cuatro secciones en ajustes, ajustes teclas teclas de punto. Bien. Entonces para todas nuestras secciones, así que va a ser display y audio. Entonces tenemos dos secciones aquí. Entonces para cada uno de esos, y luego para P en la sección de ajustes, vamos a ir a decir dentro pantalla y vamos a decir, para cada una de estas preestablecidas resolución HDR, hacer este siguiente bloque de código. Entonces dentro del audio, vamos a hacer este mismo bloque de código a esta siguiente colección de claves dentro de esa sección. Y lo que vamos a hacer aquí es que vamos a establecer algunos valores. C dot set value, y set value toma algunos argumentos. Va a tomar nuestra sección, siga nuestra clave. Y luego configuración sección y clave. Tengo un error tipográfico en alguna parte, ¿no? Sí, estoy usando todas las minúsculas. Deben estar en mayúsculas. Aquí vamos. Bien, entonces establecemos algunos valores dentro de este archivo de conflicto. Y nota, aún no hemos abierto nuestro expediente ni nada. Entonces fuera de este doble bucle de cuatro, justo ahora llamamos C punto guardar Y la ubicación que queremos guardar. Entonces en nuestro caso, res, collash para esto. Entonces quiero señalar aquí que la ubicación de guardado en todos los dispositivos va a ser la ubicación del usuario, y esa va a ser diferente en función de cada plataforma, ¿verdad? Entonces Mac va a ser diferente a Windows, que es diferente a Linux, va a ser diferente de Android. Pero cada ubicación va a tener una ubicación de usuario usuario. Así que solo estoy usando bred solo para que podamos verlo fácilmente en el sistema de archivos sin tener que tener un montón de capturas y tratando de averiguarlo. Y solo voy a guardar esto como mi archivo INI de punto de configuración. Entonces si guardo esta configuración ahora y la ejecutamos, ya es tiempo suficiente. Echamos un vistazo a nuestros sistemas de archivos, y pueden ver aquí, tengo un archivo INI de configuración. Si abro eso, puedes ver cómo todo está muy bien organizado en categorías para todo. Para que puedas ver como los archivos confit pueden verse tanto muy profesionales, como muy organizativos Y aún así solo usando un diccionario. Técnicamente, estamos usando diccionarios y lado de diccionarios para lograr esto. Y las configuraciones serían mi mayor preferencia, como dije ahí, cualquier cosa relacionada con configuraciones o preferencias en un juego o aplicación Todo bien. Entonces, ¿cómo salvaríamos, no salvaríamos? ¿Cómo cargaríamos el CiFo? Bueno, echemos un vistazo a cargar una configuración. Cargar configuración. Y por supuesto, vamos a necesitar un nuevo objeto config para usar. Y vamos a comprobar si hay algún error como lo primero que hagamos. Así que vamos a guardar error c dot load, y vamos a buscar esa configuración s file. Probablemente va a estar abajo cerca del fondo, amigos. Sólo voy a golpear en mi teclado. Ahí está T y ahí está mi configuración yo y yo . Bien. Entonces ahora sabremos si tenemos algún error cargando eso. Entonces podemos decir, si Ups. Error, no igual. Bien. Entonces si tenemos un error cargando por cualquier razón, podemos seguir adelante y, podemos simplemente imprimir algo más carga fallida, y en realidad tenemos un código de error, esto también. Entonces podemos decir código de error y hacer nuestros porcentuales. Sólo podemos entrar en eso con el error. Ahora si tuviera que mantener el control y dar clic en Bien, pueden ver esto nos lleva a esta sección aquí. Bien es cero. Pero si tuviera que desplazarme hacia abajo, podemos ver todos los diferentes códigos de error aquí. No se puede escribir, no se puede abrir, ya en uso, sin permiso, ruta incorrecta, no encontrada, corrupta, no se puede crear, tiempo de espera no se puede conectar, método no encontrado, enlace no encontrado, error de análisis Para que puedas ver todos nuestros códigos de error aquí. Entonces, si alguna vez te dieran un código de error, todo lo que tienes que hacer es entrar aquí y buscarlo y podrás ver exactamente cuál era el problema. Bien, así que ahora asumiendo que no tuvimos un error, podemos seguir adelante y comenzar a ejecutar nuestros cuatro bucles, y sólo voy a copiar los mismos dos desde arriba Entonces tenemos una sección de cuatro en teclas de configuración, cuatro teclas y sección de configuración. Y dentro del bucle esta vez, simplemente seguimos adelante y lo vemos. Nosotros configuramos nuestra sección de ajustes Kos puedo escribir eso propiamente dicho. Establecemos esto igual a la información que obtenemos del valor conf C punto t Y literalmente va a ser lo mismo aquí, configurando sección. Se va a escribir un poco diferente. Simplemente pasamos en la sección E. Y luego nuestro último argumento, solo lo ponemos en nulo, que debería ser el predeterminado. Pero solo pon eso de todos modos. Y ahora te das cuenta si nos acercamos. Observe cómo nuestro maestro es pluma aquí, ¿verdad? Para audio. Y vamos a saber que esto funciona. Entonces voy a perturbar esto. Voy a entrar en mi configuración en INI y cambiar Master 10-100, guardarlo. Ahora ejecutaremos la configuración de carga. Veré un juego de diez impresos aquí para el Maestro. Vamos a conseguir el centenar después de cargar. Echa un vistazo, y Audiosecon Master 100, para que sepamos que se cargó con éxito. Ahí vas. Así es como podemos guardar y cargar archivos de configuración, archivos JSON y archivos de texto. Ahora, depende de usted determinar qué tipo de archivo va a ser mejor para su situación. Pero ahí está cómo puedes hacer las tres. 83. Gatillos y pedales: Bien, entonces hablemos de tener soporte para los disparadores en un controlador, como, ya sabes, gatillo izquierdo, gatillo derecho, L dos, R dos, ¿qué es? ZL o ZL, y Z Z, ZR. Realmente no le echo un vistazo a los botones de Nintendo, pero creo que esos son los botones. Ahora, desafortunadamente el switch switch controller para eso son simplemente clicky así que no son realmente disparadores No tienen ese tiempo de viaje, ese camino de viaje. O están presionados o no lo están. Entonces desafortunadamente, para mí, no puedo usar esos para mostrarte eso aquí. Entonces lo que voy a usar es mi stick analógico para simular eso para ti. Pero puedes usar esto para esos disparadores. Puedes usar esto para un stick analógico, por ejemplo, cuando avanzas, caminas, y cuando lo presionas todo el camino, tu personaje está corriendo, ese sería otro uso para lo que te voy a mostrar aquí. Y otro uso, que creo que es genial es que puedes usar este concepto para apoyar volantes y pedales si vas a hacerlo si estás creando un juego de carreras, por ejemplo Porque tienes ese tiempo de viaje que va a funcionar para que se gire el volante, qué tan lejos está girado a la izquierda y a la derecha, cuánto se presiona tu pedal del acelerador, cuánto se presiona el embrague, cuánto se presiona tu freno. Por lo que puedes usar esto para una amplia variedad de controladores, como puedes ver. Y se puede pensar en tantos usos diferentes para esto. Uno de los usos antiguos es que presionas el botón disparar hacia abajo en parte del camino, ellos apuntan, lo presionas todo el camino y disparan. Entonces, lo que he hecho es que he creado un botón de disparo en la configuración de mi proyecto. Y como dije, solo voy a usar mi stick analógico para simular esto porque mis disparadores son clicky No funcionan así. Este es un Tengo un mando super Nintendo que se ha modernizado, así que no tengo el tipo de disparadores adecuados para mostrarte eso Así que de nuevo, sólo voy a usar mi stick analógico para emular de alguna manera lo que se puede esperar Entonces aquí en la función de proceso, voy a seguir adelante e imprimirla para nosotros. Sólo para que puedas ver, y esto será punto de entrada. Y vamos a decir conseguir fuerza de acción. Ahora, ves fuerza y fuerza en bruto, y tal vez te preguntes cuál es la diferencia. La fuerza bruta va a ignorar la zona muerta de tu controlador. Obtener fuerza de acción va a tomar en consideración la zona muerta, ¿verdad? Entonces solo voy a usar la fuerza, y voy a usar el rodaje para mostrarte esto. Entonces, si seguimos adelante y ejecutamos esto, puedes ignorarlo. Nada de eso importa. Y podemos simplemente mirar aquí abajo en la salida, y verás como empiezo a moverme me quedo a la derecha, lo que puedes imaginar de nuevo, se está moviendo para bloquear alrededor o son disparadores. Como ve, estoy en mi zona muerta. Y al salir de la zona muerta, ahí van ustedes. Así se puede ver hasta qué punto mi palo está siendo presionado aquí todo el camino hasta que lleguemos todo el camino, que en mi caso es de aproximadamente 0.98 Y puedes usar esto como yo estaba situando o sugiriendo o tus diferentes situaciones Así que ahora puedo seguir adelante y mostrar esto. Y a veces usando mi stick analógico, voy a usar esto como caminar y correr. Entonces diríamos, si la entrada Dot obtiene Ax y fuerza, dice disparar, que se puede imaginar simplemente caminar o adelante o lo que sea. Si la fuerza de acción es mayor que, digamos, 0.9, vamos a imprimir corriendo o disparando y entonces podremos tener otra si o de lo contrario si alguno va a funcionar aquí. Y aquí vamos a tener casi la misma situación si entrada, conseguir fuerza de acción, disparar. Es mayor que, y vamos a decir 0.01. Así que de esta manera, básicamente, estamos en la zona muerta y sabemos que nos estamos moviendo. Todo lo que vamos a hacer es que vamos a imprimir, y vamos a decir caminar o apuntar Bien. Así que ahora verás justo aquí abajo. A medida que avanzamos, si tenemos nuestro sprigger presionado parte o nuestra pila analógica solo se mueve a la parte, estamos caminando o apuntando con Y una vez que vayamos todo el camino y lo sostengamos ahí, estaremos corriendo o nuestros gatillos presionados todo el camino, vamos a estar tomando el tiro. Bam. Ahí vas. Para que puedas ver lo útil que es esto. Entonces puedes llevar esto a una serie con en cuanto a un pedal de acelerador, ¿verdad? Qué tan rápido o a qué velocidad va a estar, ¿verdad? Entonces vas a tener, tal vez tu velocidad multiplicada por tu fuerza de acción, y eso demostrará lo rápido que vas y lo mismo con parar, ¿verdad? Si estás golpeando el pedal del freno, tienes lo rápido que vas a reducir la velocidad. Vas a tomar eso y multiplicarlo por la fuerza del pedal del freno. Y ahora, cuanto más fuerte lo presiones , más rápido vas a parar. Todo bien. Entonces así es como puedes usar algo como fuerza de acción, que es algo que es algo que es algo exclusivo de los controladores. También puedes usarlo en PC. El problema está con cosas como teclados y que normalmente se va a presionar un botón o un mocos, así que o va a ser cero o uno, razón por la cual en los juegos de PC, solemos tener un botón alternativo, Tienes un botón de caminar o un interruptor de caminata que usarías, mientras que en el controlador, solo mueves el stick analógico a parte versus todo el camino 84. Vibración del controlador: Todo bien. Entonces aquí, te voy a mostrar cómo puedes agregar vibración a tu juego. Y estamos hablando de cosas como tus controladores. Ahora, no tengo un controlador que admita vibración, así que no puedo el controlador en el micrófono o en el escritorio ni nada y dejar que oigas. Así que voy a tener que tomar mi palabra para ello en eso. Y si no lo crees, puedes seguir adelante y leer documentación, buscarla, buscarla, y encontrarás que solo vas a obtener la misma respuesta de lo que te voy a decir aquí. Entonces siempre que quieras crear vibración, ahora, por ejemplo, podría poner esto aquí, ¿verdad? Puedo ponerlo aquí o aquí arriba, ya sabes, donde quiera que se produzca esta vibración. Y normalmente tendrás esto en un ataque fuerte o cuando el jugador sea golpeado, por ejemplo, siempre que sea que quieras que se produzca esta vibración. Entonces para que esto suceda, solo vamos obtenemos nuestra clase de entrada, entonces input dot start Joy vibration. Y para ello se necesitan cuatro argumentos. Primero está el dispositivo, y este es el ID del dispositivo aquí. Y para el primer jugador, tu primer controlador, este suele ser el dispositivo cero. Todo bien. A continuación, vamos a tener la magnitud de nuestros motores débiles. Ahora bien, los motores débiles generalmente se ubican hacia la parte superior del controlador, y obviamente no son tan fuertes como el fondo porque solo quieren que se sacuden, algunos traqueteo ahí arriba Y la razón por la que están más débiles arriba es porque tienes un agarre más firme en la parte inferior del controlador que en la parte superior, ¿verdad Ellos sólo quieren sacudirlo. No quieren que sea difícil golpear los botones o hacerte perder. Entonces podemos decir 0.5 cadena. tercer argumento va a ser lo mismo, pero nuestros motores fuertes. Los motores fuertes se encuentran en la parte inferior del controlador. Por lo general, puedes encontrar esto prácticamente donde están las palmas de tus manos. Así que va a ser agradable y bien envuelto ahí. Y tenga en cuenta que estas magnitudes van en una escala de cero a uno. Entonces podemos decir 0.5 aquí también. Entonces en este punto, todo el controlador está temblando a la mitad de su fuerza, tanto la mitad superior superior como la mitad inferior. Y lo último aquí es la duración, y esta es la cantidad de tiempo en segundos de cuánto tiempo va a vibrar si ponemos cinco, va a vibrar por 5 Entonces, si tienes este avión con una animación o un ataque y sabes cuánto tiempo va a durar, puedes seguir adelante y poner eso ahí. Y como tengo esto en la función lista, si tuviera que jugar esto y tuviera un controlador que soportara vibración, entonces mi mando comenzaría a vibrar inmediatamente durante 5 segundos tan pronto como mi juego Bien, es tan sencillo como eso agregar vibración a tu juego Tomas esa línea de código y la colocas donde quieras para que tenga vibración.