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.