Transcripciones
1. Introducción a Skillshare: Bien, a lo largo de este
curso, vamos a seguir adelante y vamos
a aprender a hacer fácil creando un
juego clásico de 1979, los asteroides Ahora con asteroides, obtienes aquí
esta pequeña nave que puede disparar pequeños proyectiles y volar por la pantalla Y lo que pasa es que disparas a estos asteroides que están flotando alrededor de ese desove
al azar Los grandes engendran medianos,
destruyes los medianos,
ellos engendran los más pequeños, los más
pequeños se mueven más rápido
que los más grandes Y cada uno que destruyas te
gana algunos puntos hacia tu
puntaje total. Todo bien. Este es un juego simple, pero es importante tanto para la
historia de los juegos como un pequeño y agradable proyecto para principiantes
donde puedes rehacer un juego real con el que puedes divertirte y siempre agregar y hacer
el tuyo propio Bien, comencemos.
2. Qué son los asteroides: Todo bien. El día de hoy vamos
a seguir adelante y estaremos creando los asteroides clásicos del
juego, como están viendo
aquí en la pantalla aquí en este video de YouTube Lo que podemos ver de
esto es que los asteroides, además de ser un juego realmente
antiguo y clásico Debería ser bastante
sencillo para nosotros, pero otro paso adelante porque ahora tenemos
movimiento de jugador pasando, como puedes ver con nuestro pequeño
jugador aquí en el medio. Está rotando, se
mueve, está disparando. Tenemos estos asteroides
flotando alrededor, y cada vez que
les disparan, se rompen en pedazos adicionales Y podemos ver que tenemos
este pequeño brill alienígena ese tipo de engendros de
vez en Y en cuanto a UI, tenemos puntos y
salud aquí arriba en la parte superior. Y efectivamente, este
juego solo continúa hasta que tú o bien, yo no diría hasta que tú tampoco. Continúa hasta que
pierdes toda la vida. Y sea cual sea la puntuación que tengas,
esa es tu puntuación más alta. Y como puedes ver ahí, el
asteroide se salió de la pantalla, y luego volvió a aparecer del otro lado y continuó yendo en la misma
dirección en la que se estaba moviendo Pero en definitiva, eso son asteroides. Eso es lo que vamos
a estar creando aquí. Entonces, en la siguiente sección, seguiremos adelante y
empezaremos a montar un proyecto, que no debería ser demasiado
para que podamos ponernos en marcha
3. Configuración del proyecto: Sigamos adelante y
montemos nuestro proyecto. Podemos bajar. Si estás creando esto por
separado en su propio proyecto, claro, adelante
y crea un nuevo proyecto, nombra asteroides Si estás creando dentro
de un proyecto existente, entonces solo entra en
tu sistema de archivos, haz clic
derecho, crea una
nueva, crea una carpeta y nombra asteroides, y podemos seguir adelante y
hacer una escena Toti Voy a renombrar el
mío para decir Principal. Vamos a agregar una capa de
lona para nuestro Guy,
que yo, por supuesto,
renombraré para que sea Guy. Y lo que vamos a necesitar es una etiqueta para la parte superior de aquí, y esta va a ser nuestra
representación de nuestra partitura. Voy a cambiar el nombre de esto para
decir etiqueta de puntuación. Todo bien. Y
seguiré adelante y guardaré esto en mi
carpeta de asteroides y guardaré Y realmente,
eso es todo lo que realmente necesitamos para
poner en marcha nuestro proyecto. La mayor parte del trabajo va a ser dentro del jugador
y los asteroides
4. Crear el reproductor: Así que vamos a seguir adelante y crear nuestro jugador y
configurar el movimiento. Así que solo vas
a entrar en la parte superior, hacer clic en una nueva pestaña para crear
una nueva escena, golpear otro nodo. Busca un
cuerpo de carácter dos D y selecciónalo. Ahora, ya tengo esta
configuración justo por aquí. Eso es solo un
cuerpo de personaje dos D.
Voy a renombrarlo jugador, y voy a golpear Control S, y voy a guardarlo
dentro de mi carpeta de asteroides Ahora de aquí, ya que no
tengo ningún sprites que darte
para esto, lo que vamos a
hacer es que vamos a crear nuestro sprite de jugador ya que de
todos modos es tan sencillo para nosotros, y vamos a crear
eso con una línea dos D, ya que en su mayoría es
solo un triángulo con una pequeña muesca
sacada de Muy bien. Entonces los números que
voy a usar para esto. Ahora bien, si querías conectarte a
Internet y mirar a tu alrededor, estoy seguro que puedes
encontrar los sprites, si quisieras hacerlo
de esa manera Voy a ir a la
Línea dos D y propiedades. Voy a marcar
cerrado, enciéndalo. Y voy a
abrir los puntos haciendo clic en
vector empaquetado dos array. Y voy a añadir hasta que
tengamos una talla de cinco. Mi primer punto va
a ser a las diez y cero. Mi segundo punto
va a estar en negativo cinco y negativo seis. índice dos va a ser cero sobre la X, negativo dos para la Y. El tres va a ser cero en la X y dos positivos en la Y. Y nuestro cuarto índice
aquí va a ser cinco
negativo en la
X y seis en la Y. Ahora bien, eso no se parece
al sprite que vimos antes Eso es porque el
ancho es demasiado grande. Ahora, porque estoy usando el tamaño predeterminado que
he estado usando en esto, nuevamente, lo
abriré y te mostraré aquí. Ah, ¿dónde está esto? Ventana de visualización
que es 335 por 255. Ahora bien, si quieres
usar un
tamaño auténtico para esto, creo, creo que es 640 por 800 es
el tamaño auténtico para esto. En cuyo caso,
podrás
salirte con la tuya haciendo tu nave
un poco más grande, ¿verdad? Entonces, por ejemplo, podrías sacar la XL tal vez a 20
en vez de diez. Y de nuevo, se puede simplemente
un poco aumentar sólido el. Entonces, en vez de cinco negativos,
puedes hacer diez negativos. Para que puedas jugar
con esos, y puedes lidiar con una línea más amplia. Pero como estoy usando
esta pantalla más pequeña, voy a cambiar
mi ancho de mi línea hacia abajo a una, y
podemos verla aquí. Ahora, tal vez te preguntes,
¿qué pasa con dos? Bueno, podríamos hacer dos,
pero vamos a tener un espacio vacío más pequeño en el medio. Y tal vez
eso es algo que te gusta. Ve a seguir adelante y
jugar eso. Realmente no lo podemos ver aquí
en este momento. Voy a seguir adelante
y simplemente arrastrarlo a la vista y jugarlo y puedes verlo ahí,
cómo se ve en la pantalla. Entonces tal vez te guste así. Pero voy a seguir adelante
y cambiar mi ancho a uno. Prefiero más
así. A mí me parece
un poco más auténtico, pero eso depende de ti. Y nuevamente, siempre se pueden
cambiar esos puntos. Si quieres hacerlo más grande, entonces puedes tener un ancho de líneas
más amplio, o siempre puedes conectarte a
Internet y buscar en Google, y estoy seguro de que
encontrarás los sprites en algún lugar
para que te pongas en contacto. Muy bien. Ahora podrías notar que aquí
estamos recibiendo una
pequeña advertencia, y eso es porque sí necesitamos una forma de colisión para nosotros mismos
que está pidiendo. Así podemos seguir adelante y
podemos hacer una colisión de forma. Podemos entrar, podemos escoger
una forma. Podemos hacer un círculo. Podemos hacer un rectángulo. hacer una de las formas poligonales. En serio, no
importa mucho. Y si quieres
ser aún más exactos, que probablemente
sería un poco menos auténtico es un polígono de
colisión Y luego es la misma configuración aquí donde
solo puedes establecer los puntos. Entonces simplemente
los pondrías igual que lo hiciste con los jugadores,
por ejemplo, diez, aquí,
cinco negativos, seis negativos, y puedes ver que
empieza a alinearse. Con nuestra configuración. Entonces solo necesito
agregar un par más aquí. Y sería
cero, negativo dos, y uno es cero positivo dos, luego negativo cinco y seis. Y entonces tendríamos toda nuestra
forma configurada para nosotros. Bien, así que si querías
ir por esa ruta, puedes, y siempre puedes entrar y jugar con
tus puntos aquí No crear, pero si
quieres golpear, haz clic en Editar puntos,
y luego puedes simplemente hacer clic en él
y arrastrarlo alrededor. Entonces, si quisieras
editarlo de esa manera. Además, si no querías
escribir los puntos,
haces clic en el botón más
o en el botón Agregar puntos aquí
arriba en la parte superior. Y, solo puedes entrar
y crear puntos así. Entonces, sí tienes opciones. Acabo de ir con
el interior del inspector porque me parece más fácil
porque
solo puedes traducir tus
puntos directamente por encima. Y nuevamente, si quisieras ir por esta ruta, sin duda
puedes. Es un poco más un
poco más exacto. Sin embargo, menos voy
a arrastrar hacia abajo un
poco menos probablemente
menos preciso a lo real en el
gran esquema de la misma. Todo bien. Entonces, como quiera que quieras
ir sobre eso, va a ser tu decisión,
ya sea que quieras usar un polígono o una forma Entremos en el movimiento
real de nuestro jugador. Entonces,
sigamos adelante. Haz clic en el reproductor, presiona AdScript, agrégalo y
asegúrate de agregarlo a nuestra carpeta de asteroides Y vamos a crear
un proceso de física. Y aquí vamos a tener un
par de variables para nosotros. Vamos a tener una
variable de velocidad para lo
rápido que nos movemos. Vamos a tener
una velocidad de rotación para lo rápido que hacemos bien, rotar y luego nuestra dirección de
rotación. Y antes de
saltar a esta siguiente pieza, asegúrate de subir
a la configuración del proyecto, ingresar el mapa y
configurar tus controles. Sólo voy a usar lo que
he usado en el último año. Solo voy a
usar el arriba abajo izquierda y derecha ya que ya
tengo esa configuración para WASD Esos son los
que voy a usar. Bien, así que sigamos
adelante y diremos que dirección de
rotación
es igual al punto de entrada del eje G. Ahora, tenemos que poner en
la acción negativa, y luego la acción positiva. Estos van a ser en
forma de los nombres de cadena. Entonces esto se va a dejar. Y luego a la derecha. Porque la izquierda nos va a dar nuestra
dirección negativa y derecha, nos
va a dar nuestra dirección positiva
para la rotación. Y entonces
vamos a cambiar la velocidad para que sea igual para transformar punto X veces entonces
exactamente lo que acabamos de hacer aquí, punto de
entrada, eje, y lo mismo. Vamos a poner nuestro
negativo y positivo, así que va a estar
abajo, seguido por arriba. Y entonces vamos a multiplicar
eso por nuestra velocidad. Ahora, ya casi estamos establecidos aquí. Tenemos que hacer rotación. Plus es igual a la dirección de rotación multiplicados por la
velocidad de rotación por Delta. Todo bien. Y en este punto, deberías estar acostumbrado a la idea. Tenemos que usar ya sea
colisionar en movimiento o deslizamiento móvil. Voy a usar mover
y deslizar en este caso. Y si seguimos adelante y
corremos esto, ahora deberíamos poder
mover a nuestro jugador alrededor. Entonces, si solo sostengo W,
va a seguir adelante. Si sostengo S,
va a ir hacia atrás. Yo sostengo A,
va a girar a la izquierda. Yo sostengo D, va a girar a derecha y ahora tenemos algo
que es muy parecido, mucho más parecido a lo que
vimos dentro de asteroides Ahora, puedes seguir adelante y
puedes retocar esos números. Así que puedes ajustar la
velocidad si quieres que tu nave se mueva más rápido
o más lento que esto Estoy usando 100 por defecto. La velocidad de rotación está usando 1.5. Podría
aumentarlo para rotar más rápido o disminuirlo para rotar más lento. Eso va a ser
completamente de ti. Pero independientemente de lo que
elijas hacer, esa es solo una de las pequeñas
cosas que vas a
decidir para que tu juego se sienta más solo un poco
personalizado para ti. ¿Correcto? Y para un jugador, eso es realmente todo lo que necesitamos para
levantarnos e ir por eso hasta que tengamos
que empezar a disparar. Muy bien. Entonces
te veremos en la siguiente parte.
5. Crear el proyectil: Bien, así que sigamos adelante y creamos nuestro proyectil
para nuestro jugador Entonces en mi escena de jugador aquí, he seguido adelante y
agregué un Marcador dos D, y esto es solo para
que tengamos una ubicación específica en la que vamos a generar nuestro proyectil que va a estar un
poco frente a nuestra nave Y lo único que hace Marker
two D es darnos una posición
en algún lugar del mundo. Ese es todo su propósito. Bien, para que puedas
seguir adelante, subir y crear una nueva escena, golpear otro nodo, y seleccionar el área
dos D. Y golpear Crear, ese va a ser
nuestro proyectil Y aquí, he creado
una forma de colisión, que es solo un
rectángulo y un sprite dos D. Para la textura, he ido adelante y
desde el menú desplegable, usa nueva textura de degradado dos
D. Y cuando hagas eso, abrirás lo primero hacia arriba Verás esta gran sección. Encontrarás gradiente
en el inspector, ábrelo y
tendrás dos puntos como este. Un punto será
negro por defecto. Entonces se verá algo
así. Sólo tienes que seguir adelante y click
derecho sobre el punto que está en el negro
para deshacerte de él, y ahora es simplemente todo blanco. Derecha. Entonces eso es todo lo
que tienes que hacer, y luego tendrás un
proyectil. Yo lo instalaré. Adelante y guarda esa escena como propia para que podamos usarla. Y adelante y
dale al área dos D. He nombrado un guión a mi
proyectil Y aquí vamos a tener una dos funciones y una variable. Todo bien. La primera
variable que vamos a tener aquí es que vamos a
crear una velocidad para esto. Es un vector dos,
y por supuesto, se va a establecer en
vector 20 por defecto. Vamos a crear
una función para esto llamada set velocity. Va a tener un
argumento de un vector dos. No devuelve nada, así que evita. Y todo lo que estamos haciendo
es que la
velocidad sea igual a V, ¿verdad? El argumento que pasamos. Y luego último, necesitamos que
el movimiento real suceda
para nuestro proyectil Entonces, en nuestro proceso de física, seguiremos adelante y
haremos posición más igual a nuestros tiempos de velocidad Delta. Y nuestro proyectil
en sí está hecho. Ahora tenemos que
dirigirnos al jugador. Y si aún no tienes una configuración de mapeo de
entrada, sube a nuestro mapa de entrada de
configuración del proyecto y crea un botón
para que puedas disparar. Yo mismo, tengo mi configuración de barra
espaciadora. Y antes de continuar,
lo primero que voy a hacer es crear una nueva variable
llamada proyectil Entonces será una escena repleta
que podamos traer. Y de esta manera, podemos
cargarlo en cuando
lo necesitemos o crear una instancia de la misma cuando la
necesitemos, debería decir. Y eso será igual a cargar y solo encontrar esa
escena y arrastrarla. Ahí vamos. Entonces
vamos a cargar esa escena. Se cargará como una escena de paquete y se almacenará en la variable
llamada proyectil Todo bien. Así que sigamos
adelante y creamos la función de entrada.
Para nuestro jugador. Esto es solo entrada de
subrayado funk. Esto tiene un argumento
llamado evento. Es un tipo de evento de entrada. No devuelve nada tan vacío. Y sólo vamos a comprobar si entrada es acción solo pulsamos, así que ya no podemos sostener el botón. Tenemos que presionarlo
cada vez que queramos. Y la acción que
buscamos es disparar. Entonces cada vez que pulsamos
el botón disparar, ¿qué vamos a hacer? Bueno, vamos a crear una instancia
de nuestro proyectil Entonces PI para instancia de proyectil, es un área dos D. Eso igual al
punto de proyectil instanciado Ahora necesitamos usar ese
Marcador dos D para nosotros aquí. Entonces PI La posición global es igual al signo de dólar Marcador
dos D. Así que solo estamos obteniendo ese Marcador
dos D no que
agregamos a nuestra posición global de
puntos de jugador. Entonces estamos configurando
eso. Y si solo echamos un vistazo a
eso como es, si damos la vuelta y disparamos. Ahora bien, tal vez realmente no
podamos verlo, pero si nos damos la vuelta y nos
alejamos, bueno, podemos ver que
en realidad no estamos obteniendo
nada. ¿Por qué es eso? Porque aún no
lo hemos agregado a la escena. Sin embargo, sí existe y lo comprobaremos
en solo un segundo. Lo que voy a hacer
es que voy a establecer la rotación, configuro la rotación ahora basada en
nuestra nave. Entonces, la rotación de puntos PI
es igual a la rotación. Y voy a usar
Get parent Ad child PI. Entonces estoy usando Get parent. De esa manera, el
proyectil no se nos
pega porque si solo
usamos AdCilD, se nos va a pegar, y si
seguimos girando nuestra nave, entonces va a Esto Esto sería útil para algo así
como un rayo láser, pero no para un proyectil Entonces estamos usando get parent
para que podamos pegarlo
al juego y no al
jugador en sí. ¿Verdad? Entonces, si entramos y disparamos, puedes ver que ahora está
engendrado en el juego, simplemente no
se mueve a ningún lado Y esto sucederá cada
vez que presionemos nuestro botón de disparar. Entonces, si tienes que pasar esto,
enhorabuena. Tu proyectil está funcionando. Solo tenemos que conseguir que
en realidad se mueva por nosotros ahora. Todo bien. Así que comprueba si se o
para que se mueva, vamos a ejecutar un
rápido lo reviso aquí. Vamos a decir, I PI
tiene métodos establecidos velocidad, y podríamos asumir esto con seguridad. Pero vamos a
asegurarnos de que sí tenga esta función solo para estar seguros. Y vamos a
salvar nuestra dirección. Pero estamos creando una
nueva dirección aquí. Es igual al vector de
dos puntos a la derecha, punto girado y pasar
en la rotación. Entonces esto nos va
a llevar sea cual sea la dirección correcta, que estaría en la X
positiva basada en cuánto se rota
efectivamente, ¿verdad? Así que de esta manera siempre tenemos una dirección específica
que se está moviendo. ¡Vaya! Vaya, gritos, gritos.
Ahí vamos. Vamos a darle unas velocidades
una velocidad var igual a 200. Siempre puedes ajustar esto
más tarde si lo deseas. Y ahora tenemos que hacer es llamar a esa función que
comprobamos aquí. Así que el punto pi establece la velocidad,
dirección tiempos velocidad. Y con eso, nuestro proyectil ahora se mueve en cualquier
dirección que estemos disparando ¿Tan solo así? Aunque
dejemos de movernos por completo. Genial. Ahora tenemos nuestro proyectil
trabajando con nuestra nave. Ahora solo necesitamos
algunos asteroides para disparar y algunos puntos para reunir Bien.
Los veré en la siguiente.
6. Creación de asteroides: Así que sigamos adelante y
creamos nuestros tres asteroides. Vamos a crear una grande, una mediana y una pequeña. Todos estos van a
ser creados de la misma manera. La única diferencia
va a ser el tamaño de la forma de colisión y los números de puntos reales
porque obviamente, van a empezar
grandes y
van a hacerse cada vez más
pequeños. Ahora, todos estos
se crean a través de un cuerpo de personaje dos D, una línea dos D y
una forma de colisión. Así que solo
te voy a dar los puntos para la línea dos D. Así que
adelante y pausa y cuando
tengas esa configuración, entonces podemos seguir
adelante y avanzar. Voy a seguir adelante
y empezar ahora
leyendo los puntos para la línea dos D en el asteroide grande, recuerda guardar tus escenas Cerrado, deberíamos ponernos en. Y el ancho que estoy
usando en estos es dos. Todos estos tienen ocho puntos. Y estos van a comenzar con el asteroide grande aquí, 40, cero, 30, negativo 25, diez negativo 35, negativo 15, negativo 30, negativo 35, negativo diez, negativo 30, 20, negativo diez,
35, 25 y 30 Pasando a la
mastoides mediática. Tengo otra vez, ocho
puntos bajando por la lista, 25, cero, 20, negativo 15, cinco negativo 22, negativo diez, negativo 18, negativo 20, negativo cinco, negativo 18, 12, negativo cinco, 22, 15, 18. Pasando a los puntos
para el asteroide pequeño, 15, cero, 12, ocho negativo, tres, negativo 13,
negativo siete, negativo diez, negativo 13, negativo dos, negativo 12, siete, negativo
tres, 13 y 1010 Esos son los puntos que
estamos usando para todos estos. Y una vez que tengas los
tres configurados, asegúrate de haber guardado
las tres escenas y tendrás tus asteroides
configurados y listos para funcionar Y lo único que les va a
faltar es su rotación. Por supuesto, necesitan
ser engendrados
y
desovar y
desovar asteroide más pequeño
cuando sean Entonces los grandes
engendrarán los medianos,
y los medianos
engendrarán los pequeños
7. Desembranza de asteroides: Entonces, sigamos adelante y
permitamos que nuestros asteroides
aparezcan fuera de la pantalla,
muévanse a aparezcan fuera de la pantalla,
muévanse a Ellos van
a poder tener diferentes velocidades, y vamos a
usar el mismo guión en los tres tamaños. Así que sigue adelante y crea un guión, y puedes adjuntarlo a los
tres asteroides, el grande, mediano y pequeño, y abrir ese guión Y lo primero que vamos a hacer es que vamos a crear una velocidad de rotación y voy a
crear una X cuatro velocidades. Voy a seguir adelante y
guardar eso ahora mismo. Entonces si hago clic en
mi pequeño asteroide, verán
que tenemos velocidad
aquí en el inspector, voy a dejar
eso al 100 para los pequeños Para mediano, lo
bajaré a 50, y para grande, lo haré 20. Ahora, siempre puedes
volver y ajustar estos números más tarde, ¿verdad Eso siempre es posible. Yo sólo voy a seguir adelante y
fijar eso por ahora. Ahora, dentro de nuestra función
ready, para generar fuera de pantalla, lo que vamos a hacer
es que vamos a obtener
el tamaño de pantalla de
Get vPortrc Y vamos a obtener una
variable de crédito para spawn edge. Todo el mundo es Randy por ciento cuatro, así que eso nos va a
conseguir ya sea un cero, uno, dos o tres Y en base a esto,
vamos a determinar si vamos a asignar cada número o
asociar cada número para que sea superior, inferior,
izquierda y derecha. Entonces vamos a usar algo
llamado una declaración de coincidencia. Y todo lo que haces es escribir partido. Lo que quieres
igualar, en este caso, sería spawn edge Colon baje, y vamos a decir cero porque
esa es una opción. Colon caen, y
tienes un bloque de texto. Entonces puedes
emparejarlo con uno, y un bloque de texto, dos, y un bloque de texto, y así sucesivamente. Así es como coincidimos con
la declaración funciona. Entonces básicamente estamos diciendo, Bien, vamos a igualar esto. Entonces si esto coincide con
esto, haz
esto, coincide con esto,
hacemos este bloque, si coincide con esto, hacemos
este bloque, y así sucesivamente. Entonces, qué vamos
a hacer con eso, sólo
voy a seguir adelante
y copiar esto por supuesto. Pero vamos a hacer todos estos, vamos a ir al borde de desove Si es cero,
vamos a tomar
su posición es igual
a un vector dos,
y ese vector dos es
un rango flotante aleatorio, por lo que rand F en el rango cuadrado entre cero y el tamaño de la
pantalla punto X, y luego la Y es negativa 50. Entonces como es negativo puedes asumir aquí que
la posición aquí, que el partido de
cero va a estar arriba o la pantalla superior. Entonces, si estamos desove
por encima de nuestra pantalla, aquí es donde vamos
a colocar nuestro asteroide Y entonces nuestra velocidad va
a ser vector 20 en la X, y entonces nuestra Y solo va
a ser nuestra velocidad, ¿verdad? Entonces con eso siendo
un número positivo, eso significa que vamos
a estar bajando y vamos a continuar con
este patrón hasta el final. Entonces, si es uno,
la posición va a ser un vector dos de
tamaño de pantalla punto X más 50. Entonces eso significa que estamos desove en el lado derecho de
nuestra pantalla aquí, rango de subrayado
Rand F, y eso nos va a
dar entre cero y tamaño de pantalla punto Y. Así que estamos desove en
el lado derecho en cualquier punto vertical, siempre y cuando estemos en el
lado derecho de Entonces nuestra velocidad
va a ser un vector dos. Tiene un cero en la Y y
una velocidad negativa en la X, así que eso se mueve hacia
la izquierda. Todo bien. Y si coincidimos con un dos, básicamente vamos a hacer lo mismo que
hicimos con cero aquí. Entonces nuestra posición es un vector dos, rand F en el rango cuadrado,
cero, screensizet X. Así que estamos en el lado
izquierdo ahora mismo Tamaño de pantalla Y más 50. Ya que lo estamos agregando, estamos
desove en la parte inferior, derecha, inferior de nuestra pantalla vector dos X es cero
para nuestra velocidad, y es
velocidad negativa, lo que significa que nuestro asteroide va
a estar moviéndose hacia arriba. Y por último pero no menos importante,
tenemos un partido para tres. vector dos va
a ser un negativo 50 porque el negativo 50
ya va a
estar fuera de la pantalla como está, así que está apagado a la izquierda. Rango F aleatorio de cero, y por supuesto, tamaño de
pantalla punto Y, en
cualquier parte del lado izquierdo, y la velocidad va a
ser velocidades positivas que se mueve hacia la derecha
y cero en la Y. Bien. Entonces, si
tienes eso, realmente necesitamos hacer una
cosa más porque no podemos movernos, y es posible que hayas notado que es que tenemos que entrar en
nuestro proceso de física, y tenemos que llamar a
mover y deslizar. Y también voy a
sumar rotación plus iguala nuestra
velocidad de rotación tiempos Delta. Si lo probamos, estás en mi pequeño asteroide.
Bueno, ahí vamos. Lo vimos al otro lado de
arriba. Lo volveré a ejecutar. No, esta
vez vine del lado
derecho . Lo intentaré de nuevo. Volví a venir del
lado derecho. Entonces podemos ver que siempre es
completamente al azar, vino de abajo, y
está funcionando consistentemente. Y si nos movemos para decir, mi gran asteroide donde
he hecho la velocidad 20 y lo pruebo, de
nuevo, está rotando Viene de una dirección
aleatoria, y simplemente se mueve más lento
porque ajustamos la velocidad. Bien, entonces con eso, ahora
está funcionando
perfectamente bien para nosotros. Nuestros asteroides pueden
engendrar y rotar, y todos tienen
diferentes velocidades Ahora tenemos que llegar a la
sección de disparos y destrucción para que
puedan generar
trozos más pequeños de ellos.
8. Destrucción de asteroides: Sigamos adelante y
vamos a montar nuestro proyectil para poder
destruir nuestros asteroides para que pueda generar uno más pequeño Entonces los grandes
van a desovar medianos, medios engendrarán Entonces lo primero que tenemos que
hacer es que tenemos que ir a nuestra escena del proyectil,
seleccionar nuestro proyectil, el área dos D, buscar la sección de colisión bajo
el objeto de
colisión dos D
y establecer la máscara Entonces layer es la capa en la
que está el objeto, y mask es básicamente la
capa con la que puede interactuar. Entonces vamos a
poner máscara a dos, y luego vamos a ir
a cada uno de nuestros asteroides Y selecciónala y
establece nuestra capa sobre el asteroide en dos
y nuestra máscara en una Entonces de esta manera con la máscara
siendo una en el asteroide, puede interactuar con nuestro proyectil y con
él estando en la capa dos Y no
se selecciona la máscara dos. Los asteroides no deben
interactuar entre sí, por lo que deben atravesarse
entre sí y no golpearse entre sí. Todo bien. Y se puede hacer
lo mismo en el asteroide mediano y pequeño. Todo bien. En mi escena principal, acabo de poner
moví a mi jugador en ella
y simplemente tiré dos mis asteroides medianos para
esto para que los usemos
como pruebas aquí Y si tuviéramos que jugarlo, los asteroides
estamos desove, vienen de
diferente dirección En este caso, ambos
venían de la derecha. Y ahí teníamos uno de la
derecha, uno de abajo. Ah, y se puede ver que
no le pegamos ahí
, lo cual está bien porque cuando se
trata de ello después, eso va a terminar
matando a nuestro jugador Entonces no importa que podamos interactuar con él ahora mismo. Bien, entonces, ¿cómo conseguimos que
nuestros asteroides funcionen? Bueno, primero, vayamos
a nuestro proyectil. Echemos un vistazo a la
pestaña del nodo en las señales. Y vamos a
seleccionar cuerpo ingresado. Y lo que esto va a
hacer conectamos la señal, simplemente hacemos doble clic en ella y
conectamos al proyectil Esto va a explotar cada vez que
un cuerpo físico
toque nuestro asteroide, porque es un cuerpo de
personaje dos D entra en nuestra zona de proyectiles Entonces cuerpo va a representar lo que haya entrado en esta área. Entonces lo que podemos
hacer fácilmente es decir, yo asteroide. Vaya, de verdad lo
estropeé. I asteroide y nombre del punto del cuerpo. Porque recuerden, los
míos son todos
asteroides grandes asteroides medianos, asteroides
pequeños Entonces, si el asteroide está
en nombre del punto del cuerpo, entonces debemos estar
golpeando el asteroide Voy a hacer body
dot D asteroide, que la función personalizada vamos a crear
aquí en un momento Y entonces me voy a
hacer auto.q3. De esa manera, mi proyectil
puede destruirse a sí mismo. Bien. Ahora bien, si
fuéramos a ejecutarlo ahora, claro, esto
no va a funcionar. Vamos a entrar en un
error y alguien como, Hey, destruir no existe. Boom. Ahí vamos. Ah, y aún no he
sacado esto. Entonces supongo que eso es algo bueno. Entonces lo que voy a
hacer es que vamos a ir al script de asteroides, y voy a crear una
variable aquí llamada New spawn Esto va a ser un toro, que es un verdadero o falso. Y por defecto, voy
a establecer esto en verdad. Voy a bajar a esa declaración de
partido que
teníamos , y justo encima de ella, voy a decir yo, nuevo engendro, y luego voy a agarrar toda
esa declaración de partido Entonces, de la línea 13 a la 25, resáltalos todos y
presiona tab para moverlo. Y fuera de esa
declaración si, voy a decir se. Y lo que voy a
hacer es que en realidad
voy a seleccionar esa declaración de
coincidencia, y la voy a pegar
dentro de mi se. Pero lo que voy a
hacer es que voy a eliminar los cambios de posición. Entonces tengo todo lo que estoy modificando en estos partidos es la velocidad porque no queremos
cambiar la posición. Sólo queremos que tenga una dirección aleatoria a la
que va. Todo bien. Ahora para
esa función de destruir. Ahora para esa función de destruir, lo que vamos a
hacer es, en este caso, tengo una variable llamada
ST, y estoy cargando, en este caso, mi pequeño
asteroide porque estamos probando con el
mediano ahora mismo Y quiero engendrar dos de ellos, así que estoy ejecutando un bucle de cuatro Entonces cuatro yo en rango
de dos, ¿verdad? Así que vamos a
pasar por esto dos veces. Todo bien. Entonces,
al encontrarnos con este bucle de proa, vamos a crear una
instancia de nuestro pequeño asteroide Vamos a establecer la posición
global de nuestro asteroide instanciado a cualquiera que sea nuestra posición global actual de
asteroides Vamos a establecer
nuevo spawn en false. De esa manera no nos encontramos con nuestra declaración de partido
para cambiar la posición. Solo nos topamos
con él para establecer la velocidad. Y llamamos a GParentTad Child
para agregarlo a la escena. Y una vez que hayamos
pasado por eso dos veces, entonces nuestro gran asteroide
va a indicarse por sí mismo Ahora si ejecutamos eso
y le damos una prueba, boom, podemos ver que aquí funciona
perfectamente bien. Y si tienes curiosidad por todos esos errores rojos
ahí abajo en el depurador, es solo
decirnos que deberíamos usar call deferred aquí durante nuestro on body enter para lo que llamamos
body dot destroy Entonces en vez de body dot destroy, lo que hacemos es hacer body call deferred y pasar en
Destruir como pantalla Y ahora si ejecutas
eso, verás todos esos depuradores
simplemente desaparecen Bien. Perfecto. Ahora lo tenemos
destruyendo y desove. Los medianos, lo siento, los medianos están destruyendo y desove a estos pequeños. Entonces ahora necesitamos una forma
para que nuestro asteroide sepa qué debería ser desove o qué versión debería estar desovando
y qué
es Entonces, si es mediano,
debería engendrar pequeño, y si es pequeño, simplemente
debería destruirse a sí mismo Si es grande,
debe desovar a medio. Entonces, ¿cómo podemos hacer esto? Bueno, sube a la cima. Vamos a crearnos
una nueva variable. Bueno, para empezar, vamos a
crear una enumeración llamada los ojos, y esta va a
tener grandes medianas pequeñas Vamos a tener una exportación,
así podemos cambiar esto. Así que la exportación de nuestro tamaño. Y el tipo aquí va a ser talla de nuestra Enum
así que todo el tamaño de gorra Y sólo podemos
dejar eso en blanco. Si entramos en alguno de nuestros asteroides y en el
inspector, deberíamos verlo. Así que asegúrate de que grande
esté configurado en grande. Mediano se establece en medio, y el pequeño
se establece en pequeño. Si reviso mi escena principal, estos
se deberían configurar automáticamente, pero no lo son, así que solo voy a
eliminarlos y traer en
medio uno también. Probablemente porque
simplemente no los salvé. Oh, bueno, no es un problema. De todos modos sólo traeré dos
medianos. ¿Todo bien? Fuera de nuestro guión de
asteroides, ya
podemos bajar. Y dentro de nuestra destrucción, podemos seguir adelante y
hacer un partido, ¿verdad? Entonces podemos decir que coinciden con el tamaño. Va a ser un tamaño grande Ahí tienes. Vamos a tener
un punto de tamaño mediano, y por supuesto, un punto de tamaño pequeño. Entonces esto es lo que vamos
a hacer en todos estos. Ahora, por supuesto, básicamente
podemos simplemente copiar
todo lo que tenemos aquí, cortarlo, y básicamente pegar eso dentro de nuestro medio. Porque todo
esto es nuestro código para eso. Sí. Entonces, si tuviéramos que probar esto con nuestro asteroide
mediano aquí, debería funcionar exactamente igual Fantástico. Sin embargo, solo
engendramos dos de ellos Lo siento, uno, lo cual
es interesante aquí. No, ahí vamos. Hay
dos. Y lo volveré a probar. Hay dos y dos. Bien, entonces está funcionando, ¿verdad? Entonces eso está funcionando perfectamente. Ahora lo que voy a
hacer es que voy a copiar esto y pegarlo
dentro de mi grande. Sólo que obviamente, en lugar de cargar la escena de pequeños
asteroides, voy a arrastrar en mi escena de asteroides
medianos Entonces ahora si
destruimos uno grande, debería engendrar un medio,
y destruimos el medio Se debe desovar un pequeño. Así que sigamos adelante
y echemos un vistazo. Borraré ambos
de mi escena, y voy a arrastrar
un asteroide grande Y vamos a probarlo.
Hay un medio grande, se
fue cuando tuvo que venir
hacia nosotros. Todo bien. Tiempo aquí, almacene el grande. Obtenemos un mediano, almacenamos el
mediano, tenemos un pequeño. Bien, así que eso está
funcionando perfectamente bien. Impresionante. Ahora para
los pequeños, sí, realidad no
necesitamos hacer nada sino simplemente
transmitirlo porque eso solo
necesita destruirse a sí mismo. Al final del
día, no necesitamos engendrar nada más. Pero por ahora, podemos dejarlo así porque usaremos esto para actualizar
nuestros puntos más adelante. Entonces todavía necesitamos tener
nuestra pequeña sección aquí. Entonces ahora tenemos nuestros asteroides que no sólo desovan en
diferentes direcciones, sino que también podemos destruirlos, y engendran los
siguientes muslos Ahora sería un buen
momento para entrar y
probarlo y decidir si
quieres tal vez
cambiar un
poco los números de velocidad porque a lo mejor se mueven un poco demasiado
rápido para tu gusto. Ahí vamos. Tenemos nuestro conjunto de destrucción de
asteroides
9. Temporizador de Spawn y fugas de memoria: Vamos a configurar el desove completo porque ahora que tenemos funcionando
la destrucción, tenemos a nuestros asteroides desove correctamente fuera del área de
la pantalla Así que vamos a tenerlo para que esté desove
continuamente para nosotros. Entonces lo que voy a hacer es que voy a ir a
mi escena principal aquí. Voy a hacer plus o agregar un nodo.
Voy a añadir un temporizador. Quiero llamar a este temporizador de desove. Bien. Y este engendrador va
a tener un tiempo de espera de m. claro. Hagamos 2 segundos.
A lo mejor vamos a cambiarlo. Siempre podemos volver a
reajustarlo después. Esto va a comenzar automáticamente. Y voy a seguir
adelante y agregar un guión a mi nota principal aquí. Y voy a
conectar una señal, así que voy a
hacer clic en mi temporizador,
ir a la pestaña del nodo, hacer
doble clic en el tiempo de espera. Asegúrate de que Mina esté
seleccionada, presiona Conectar. Y cuando se conecte,
vamos a obtener un número aleatorio, igual que hicimos con nuestros lados. Vamos a crear una
variable llamada asteroide igual a Randy y por ciento tres, así que vamos a obtener
cero, uno o dos, y podemos igualar asteroide 01 Y lo que vamos a hacer es que solo voy a hacer click
en mi guión de asteroides aquí porque en realidad podemos
tomar una parte de esto Y va a ser este
largo conjunto el que tenemos aquí. A partir de esto, o
vamos a
engendrar el asteroide pequeño,
grande o mediano Entonces para cero, voy
a poner eso como mi grande. Ahí está. Entonces uno va a ser mi médium, y tres pueden ser mis pequeños. Entonces todo lo que voy
a hacer es simplemente agregar
Child y simplemente hacer
ast dot instanciate Y eso debería funcionar en todas
estas líneas. Todo bien. Entonces básicamente vamos a elegir
un número aleatorio para generar un asteroide aleatorio y luego o
bien cargar nuestro grande, mediano o pequeño, y luego
agregarlo a la escena Todo bien.
Vamos a echar un vistazo y ver si eso funciona
cada 2 segundos. Boom, boom. Bueno, oh, aquí vamos. Por qué no se puede destruir.
Eso es curioso. Bien, entonces los pequeños parece que tenemos un
error, algunos de estos. El problema con eso es
si fuéramos a ejecutar esto, y si hacemos clic en la pestaña
remota, derecha, puedes ver todos los
asteroides que vienen y echamos un vistazo, y vemos que algunos de ellos
apenas se están asignando como cuerpo de
personaje dos
D, por ejemplo Entonces no siempre está funcionando porque obviamente no
tienen asteroide a su nombre si
les reasignan un nombre genérico como este, como puedes ver aquí Entonces, lo que realmente tenemos que
hacer es que tenemos que ir
dentro de nuestro guión. Vamos a nuestro proyectil. En lugar de usar if
asteroide y el nombre del punto del cuerpo. Vamos a hacer I Body dot
tiene método Destruir. Ahora bien, si tiene el método
destruido, entonces vamos a llamarlo. Y ese cambio
debería
arreglarlo por completo para nosotros. Todo bien. Ahí vamos. En este momento no tenemos ningún
problema con esto. Oh, detección. No, ya va. Se va. Ahora, se puede ver
que aquí estamos recibiendo una cantidad ilimitada
de asteroides, así que estamos creando un
poco de fuga de memoria Entonces sí tenemos que limpiar
eso también. Entonces, en nuestras escenas de asteroides, sigamos adelante con los
tres y agreguemos un
notificador visible en pantalla dos Vamos a repasar y
tendremos la señal TreeNeited. Y podemos conectarlo a nuestro script de
asteroides, golpear Connect Y todo lo que vamos a hacer
en eso es hacer auto lindo gratis y guardarlo y podemos
volver a pasar a medio. La pantalla salió, conéctela. Debería tener el
mismo nombre por defecto, así que deberíamos tener una función cubra los tres de estos y pequeños en el nodo, la
pantalla salió, conecte Entonces lo que esto va a hacer
es esto básicamente va
a decir cuando el
asteroide se salga pantalla, luego destruya. Bien. Entonces ahora si tuviéramos que
echar un vistazo a esto, y voy a hacer clic en
remoto, para que podamos ver. Quién vamos en realidad a
ir a la escena principal para jugar y hacer clic en remoto. Puedes echarle un vistazo. Y podemos ver cuando se
salen de la pantalla, automáticamente se
destruyen, así que no estamos creando
esta infinita fuga de
memoria para nosotros mismos. Bien, para que veas
que el juego se está limpiando después de
sí mismo, muy bien. Bien, fantástico. Ahora bien, lo que estamos viendo aquí es que tenemos un tema similar, ¿verdad? Vemos todos estos área dos Ds. Estos son nuestros proyectiles. Entonces probablemente deberíamos
limpiarlos también. Entonces podemos hacer algo
similar, ¿verdad? Podemos ir a nuestro proyectil, agregar un
notificador visible en pantalla dos D,
pantalla salida, conectarnos a
nuestro script de proyectil,
y simplemente llamar a y Entonces, si no disparamos
nada y echamos de menos cuando nuestro proyectil se sale la pantalla, eso debería
limpiarse. Pasemos al
mando a distancia, echemos un vistazo. Y deberíamos ver todos estos proyectiles se
borran Así que lo conseguimos todo
bonito y limpiado. Todo sigue
borrándose a sí mismo. Todo bien. Fantástico. Todo lo que
queda es que necesitamos actualizar nuestra puntuación dándonos
algunos puntos cada vez que
destruimos un asteroide. Todo bien. Y, claro, entonces
tenemos que echar un
vistazo a la muerte de nuestro jugador, ¿verdad? Perder la vida por el jugador. Todo bien. Para que podamos empezar a
abordar eso la próxima vez.
10. Actualizar la puntuación: Sigamos adelante y actualicemos nuestra puntuación cada vez que
distorsionemos nuestros asteroides Ahora bien, podríamos usar cosas como
conseguir padre y tener hijos, luego llamar a métodos sobre eso, pero una mejor manera de hacerlo es usar
señales, ¿verdad? Entonces estas cosas aquí que
tenemos de lado, solo vamos a crear nuestra
propia señal personalizada y
enviársela al Guy para que le diga que
actualice el puntaje por nosotros, y le diremos
cuántos puntos. Ahora, en primer lugar, asegúrate de que tu
Guy tenga un guión en él. El mío está completamente vacío. Y luego podemos dirigirnos
a nuestro script de asteroides, y vamos a crear una nueva variable
exportada
porque necesitamos una nueva cada asteroide tiene una cantidad
diferente de puntos, y casualmente
estos realmente se alinean con la velocidad que
he configurado Entonces, si solo atravesamos, los asteroides
grandes en
el juego, creo, dan 20 puntos, los
medianos dan 50, y los pequeños dan 100 Por lo que casualmente son exactamente los mismos números que
di por mi velocidad
para todos estos Y la siguiente variable que vamos a necesitar aquí
en realidad va a ser una señal. Entonces escribimos la palabra señal, y luego el nombre de la señal. Entonces voy a decir destruido. Y voy a usar paréntesis abiertos y cerrados igual que una función porque
quiero agregar un parámetro Voy a llamar a este PTS
y lanzarlo como un int. Entonces, si ahora tuviéramos que mirar
nuestro asteroide e ir a echar un vistazo a las señales, podemos ver nuestro personalizado
aquí llamado destruido, y tiene un argumento
llamado puntos sitio PTS, es
decir un entero que se
pasa con la señal Entonces para nosotros, cada vez que
enviemos esta señal, vamos a enviar esta variable de
puntos con ella. Entonces primero, necesitamos conectar
realmente nuestra señal, así que voy a ir a mi escena
principal aquí por un segundo y cargar
mi guión de asteroides Entonces vamos a hacer Destruido porque ese es el
nombre de la señal. Asegúrate de obtener el que tiene
el icono de señal aquí, el que
parece un símbolo de Wi Fi. Yo hago punto connect. Ahora esto toma un callable, y todo esto que dice es quién nos estamos conectando y a
qué función estamos llamando Entonces solo podemos decir llamables
abrir y cerrar paréntesis. El primer argumento es a lo que
queremos adjuntar. Entonces este es nuestro padre aún hijo y pasar en Índice
es cero al conseguir hijo. Coma el nombre de la función a la
que quieres llamar. Entonces para mí, sólo voy a
llamarlo Update SCORE. Y si estás confundido
sobre cómo conseguimos Obtener padre y obtener hijo cero, si echamos un vistazo,
tenemos un asteroide aquí como ejemplo
en nuestra escena Si seguimos esta línea, sí
conseguimos padre. Eso nos lleva a una rama. Entonces arriba uno y arriba eso nos
lleva a Maine. Y queremos llegar
a Guy desde Main. Entonces para eso tenemos que
conseguir un hijo, y ese va a ser
su primer hijo, ¿verdad? Es la primera sucursal allá arriba. Entonces, desde el asteroide grande, conseguimos que el padre suba y luego haga que el niño vuelva
a bajar. Entonces nos estamos conectando con el Guy. Y cuando esa señal emita, vamos a buscar una
función llamada Actualizar puntaje Todo bien. Ahora, voy a
copiar toda esa línea porque vamos
a hacer algo un poco similar aquí abajo cuando bajemos a
nuestra función de destruir. Sólo que en vez de conectar, voy a llamar a desconectar. ¿Verdad? Eso es lo
único que cambiaría es que solo estamos agregando tres letras
más, ¿verdad? Así que desconecta en lugar de conectarte dentro de nuestra función de destruir. De esta manera, podemos simplemente limpiar
la señal. No deberíamos tener que hacerlo, y probablemente
estarás bien
sin hacer esto, pero solo por un poco
de mejor práctica, voy a seguir adelante y
simplemente tirarlo ahí. Ahora, cuando se destruye, también
necesitamos emitir nuestra señal porque
aún no lo hemos hecho. Entonces antes de
desconectar la señal, vamos a hacer
destruida, emitir, y tenemos que pasar
en el argumento, que en nuestro caso, está
esperando que se pase un número
. Entonces vamos a pasar
en nuestra variable de puntos. Muy bien, adelante
y guarda eso. Entonces ahora si vamos a nuestra
GUI, en realidad, ya sabes, al principio, sigamos
adelante y jugémosla, y verás que vamos a
tener un problema. ¿Verdad? Bueno, parece que nuestro tema en realidad no
va a mostrarse, lo cual es un poco interesante, pero no va a
pasar nada porque esa
función no existe. Eustly no se
está llamando a ninguna función aquí. Entonces, si nos dirigimos a nuestro Guy y
creamos esta función, entonces creo que llamé a una puntuación de
actualización como esa, y tenemos un argumento, ¿verdad? Puntos, así que sólo
voy a ir PTS, y eso es un entero. Y podemos seguir adelante
y podemos simplemente imprimir ese PTS en el
que ha pasado. Y si corremos eso deberíamos ver que todos nuestros puntos se imprimen cada
vez que destruimos uno. Ahí vamos. Ahí
tenemos 100 puntos. 20, 50, 100, 50 a la derecha, así que parece que todo esto
está funcionando bien. Solo necesitamos
actualizarlo visualmente. Pero ahora que sabemos que
esto está funcionando, necesitamos hacer
un seguimiento de nuestros puntos, y necesitamos actualizar
la etiqueta real. Entonces voy a crear una
variable aquí en nuestro Guy. Esta va a ser nuestra puntuación. Esto por supuesto, será un
entero y comenzará en cero. Entonces lo primero que vamos
a hacer es que vamos a hacer puntaje más igual a PTS. Por eso podemos sumar
los puntos a nuestra puntuación. Y entonces tenemos que
actualizar realmente la etiqueta en sí. Así que sigamos adelante y podemos usar nuestro signo de dólar aquí y
obtener nuestra etiqueta de puntaje. Texto punteado. Y
podemos establecer eso igual a una cadena de nuestra partitura. Ahora bien, esto va a
quedar un poco raro. Si echas un vistazo a la
parte superior izquierda en nuestros puntos. Vamos, da vueltas
un poco hippy. Y ves que todos esos
ceros desaparecieron, y los números
cambian por sí solos, claro, pero ves que están en
constante crecimiento, verdad Entonces cuando lleguemos a 1,000,
solo vamos a tener otro aleatorio otro aleatorio aquí. ¿Debería darme eso? Ahí vamos. Así que hemos crecido
un número extra. Y tal vez te guste eso. Yo no, sobre todo cuando estoy haciendo un juego clásico como este. Entonces, lo que en realidad voy
a hacer al final de esto. Entonces, cuando convertimos esta
partitura en una cadena, voy a hacer ceros de Dot pad, y voy a poner
un número ahí Ahora bien, si tuviera que poner en nueve, por ejemplo, echamos un vistazo. Podemos seguir adelante y
actualizar el puntaje. Oye, adelante y bonk me. Eso fue grosero. Boom, ya ves que tenemos todos estos
ceros por deva, Y cada vez que lo actualizamos, se ve un poco más agradable, especialmente en un sistema retro, especialmente cuando también tienes una puntuación máxima
que podría alcanzarse Todo bien. Ahora bien, no estoy 100% seguro de cuál es la puntuación
máxima, pero esto siempre ve mejor cuando se
borra el cero Entonces simplemente me
adelanté y verifiqué, y el puntaje máximo es de 99 mil 990, así que eso nos va a
dar uno, dos,
tres, cuatro, cinco, así
que eso nos da cinco ranuras Así que sigamos adelante y bajemos esto, y lo
comprobaremos. Revisa esos números. Si lo tapamos con cinco,
eso fue rápido. Sólo tenemos que conseguir algo en la pizarra aquí. Ahí vamos. Y eso nos daría
99,990 como posible máximo. Muy bien, entonces ahí vamos. Entonces, si quieres ser auténtico,
apántalo con cinco ceros Ahí vamos. Y ahí
va nuestro pequeño puntaje. Poco en eso va. Peep pío Y Bank, eso hubiera sido una vida perdida para nosotros,
pero ahí vamos. ¡Vaya! Aún manteniendo pulsado
el botón A. Pero ahí vamos.
Tenemos nuestra puntuación actualizándose cada vez que destruimos
nuestros asteroides
11. Actualizar vidas: Temprano. Entonces
vamos a echar un vistazo a agregar salud, ¿verdad? Entonces vamos a agregar
vidas de jugadores aquí a nuestro juego. Lo sé. Y como no
tenemos sprites para usar aquí, seguimos adelante y dibujamos
a nuestro personaje jugador Vamos a tener que
hacer las cosas un poco diferentes, pero eso está bien. No va a ser demasiado
difícil para nosotros. Lo primero que quiero hacer
es dentro de mi Goey aquí. Porque las cosas van
a cambiar un poco. Voy a
entrar en mi guión de Guy. Voy a crear una exportación, y esta va a ser
mi variable de etiqueta de puntaje. Esta va a
ser una etiqueta tipo. Y solo reemplazaré
esto en mi código para que no tenga que agarrar
esa variable. Para que pueda dar click en Guy y
veré la etiqueta de puntuación en mi inspector. Da click en eso y puedo
asignarle mi nodo de etiqueta de puntaje. Bien. Ahora, lo hice porque
creo que voy a mover esto un poco cuando
estemos arreglando nuestras vidas. Entonces, al hacerlo de esta manera, no
deberíamos tener que
actualizarlo en nuestro código. Bien, así que
voy a ir a mi Buy. Voy a agregar
un contenedor VBox. Ahora, un VBox solo nos
permite
apilar verticalmente diferentes cosas Entonces, por ejemplo, si
agrego en una etiqueta, agrego en cualquier texto, y verás si
sigo duplicando eso Verás que todo va a estar perfectamente espaciado verticalmente, todo bonito y ordenado para nosotros, ¿verdad? Y todos espaciados uniformemente. Entonces un VBox es realmente agradable. Bien, así que voy
a seguir adelante y tomar la etiqueta de puntuación y
pegarla dentro de la VBox Todo bien. Y si tuviéramos que echar
un vistazo al Guy, podemos ver que la
etiqueta de partitura aún está establecida. Y porque eso no
tenemos que editar nuestro código. Y si seguimos adelante y lo
probamos, podemos verlo nosotros mismos. Ahí
abajo hay uno, y podemos ver nuestra partitura y todo
sigue funcionando perfectamente bien. No necesitamos
actualizar nada. Entonces es agradable usar exportaciones
así a veces, especialmente cuando no
sabes si vas a estar
moviendo las cosas al diseñar
tu me gusta esto. Todo bien. Entonces lo
siguiente que tengo que hacer es dentro de mi VBox, necesito crear una caja H. Ahora, un HBox funciona exactamente de la
misma manera, contenedor HBox, solo que es para las cosas que
van horizontalmente, lado a lado en lugar de
arriba y abajo Y dentro de este HBox, voy a agregar un control En realidad,
todavía no voy
a agregar el control porque voy
a mostrarte por qué. Entonces voy a hacer
click en mi reproductor. Voy a agarrar la línea dos D donde estamos dibujando
nuestra nave espacial Voy a controlar
C y copiar eso. Regreso a mi escena principal y dentro del contenedor de la
caja Sage. Voy a darle a Control
V para copiarlo. Y te darás cuenta de Whoops. Si solo tenemos un
montón de estos, nada se está organizando horizontalmente como
viste con la caja V. Y eso es porque tiene que
ser un tipo de control, ¿verdad? Entonces tiene que ser un nodo verde. Entonces es por eso que
en
realidad vamos a entrar y dentro de la caja Ace, vamos a agregar
un control regular, y solo voy a darle un tamaño a
ese control aquí,
una caja H inferior en realidad
necesita una, también. Pero mi control, voy
a seguir adelante y establecer que es costumbre min aquí para ser 15 por 20. No lo sé. Eso podría ser un poco de munch.
Voy a tomar mi línea dos D aquí y simplemente tirarla hacia abajo y meterla
dentro de control. Doble. Todo bien. Entonces solo para que pueda ver
las cosas un poco claras, voy a seleccionar mi control. Voy a activar el
contenido del clip en el inspector, y ahora voy a
seleccionar mi línea dos D, y eso me va a permitir moverlo un poco mejor, averiguar dónde están esos límites. Y voy a
bajar a mi rotación, y voy a poner -90 grados solo para poder girarlo hacia arriba, y puedo ver que necesito
moverlo más abajo Vaya, abajo uno justo ahí. Bien. Ahora puedo apagar el contenido del
clip aquí. Y puedo ver que mi Y es
un poco demasiado, así que tal vez 15 ahí también. Eso podría ser un poco corto. 16. Una vez estoy contento con eso. Antes de ponerlo, puedo
echarle un vistazo a mi caja H, y si solo copio
este control ahora, voy a
seleccionarlo y hacer Control D. Ya podemos ver porque
está dentro de un control, se están poniendo todos
agradables y espaciados uniformemente. O así que si seguimos adelante y lo
jugamos, podemos ver que se ve
bien allá arriba, ¿verdad? Al igual que nuestro barco, y
es parte de nuestra interfaz de usuario. Entonces como no teníamos
ningún sprite para subir ahí, solo
estamos
aprovechando la línea dos D que ya
usamos para dibujar nuestra nave Y ahora que tenemos
nuestro barco funcionando, y ves que va a
estar frente a nosotros aquí, igual que el resto de
la interfaz de usuario, solo como un calzado Entonces ahora necesitamos que las vidas
reales funcionen. Así que tenemos que restar vidas cada vez que
nos atropelle uno de estos asteroides en lugar de poder
empujarlo así Para eso, nuestro jugador necesita vivir. Entonces vayamos al guión de mi jugador. Y ¿quieres
poner nuestras vidas ahí? No, ya sabes, creo que
voy a ponerlo mi Gui. Y también voy a crear
otra exportación para mi HBox. Voy a decir exportación
de nuestro contenedor Vidas, y eso va a ser un HBox Y voy a crear otra
variable aquí para Lives, que por supuesto
va a ser un int, y la
cantidad inicial aquí es de tres. Y seguiremos adelante y crearemos otra función
llamada Actualizar Vidas. Bien, y
solo pasaremos por ahora. Todo bien. Entonces la pregunta es, ¿cómo vamos a detectar cuando nos encontramos con
el jugador o cuando el
jugador se encuentra con un asteroide Para hacer la colisión para restar nuestras vidas
y dejar pasar nuestras señales, vayamos a nuestro asteroide
y al interior de nuestro proceso de
física Vamos a comprobar si nuestro asteroide
choca con algo Entonces digamos que el recuento de colisiones de barras
es igual a deslizamiento, recuento de colisiones. ¿Todo bien? Entonces
vamos a ver si estamos chocando con algo,
y si es así, ¿verdad Entonces diremos si la colisión cuenta, lo que significa que estamos colisionando con al
menos un artículo
para que esto sea cierto, ¿verdad Es lo mismo
decir si el recuento de colisiones mayor que cero, ¿verdad? Es lo mismo, menos palabras. Entonces, si la colisión cuenta, entonces vamos a
obtener la colisión, y vamos a asignar
eso a la colisión deslizante, y vamos a pasar en índice cero para que podamos obtener el primer
elemento con el que estamos colisionando Entonces vamos a conseguir
el propio colisionador. Hasta el momento, colisionador es igual a
colisión punto et colisionador. Y si solo tuviéramos que imprimir
esto para ver qué
tenemos , aquí vamos. adelante y ejecutemos esto, y veremos cuando aparezcan nuestros asteroides cuando nos
topemos con él con nuestra nave Podemos ver un cuerpo de personaje dos D está siendo golpeado y
tiene el nombre jugador. Por lo que definitivamente estamos detectando cuando el jugador
es golpeado por los asteroides Bien. Hasta el momento tan bueno. Sabemos que estamos pegando
algo y que algo es nuestro jugador. Entonces en este caso,
tiene que ser el jugador. No hay manera de que no lo sea. Pero para estar seguros, de nuevo,
podríamos estar como, me colisionador nombre punto
es igual a los jugadores Entonces, si solo queremos
hacer esa doble comprobación, podríamos hacer algo como esto. Y ya comprobamos que
está pegando a los jugadores. Lo que podemos hacer aquí es libre de
autopuntos, ¿verdad? Para que podamos destruir el
asteroide cuando nos topemos con él. Y podemos probar eso funcionando.
Siempre prueba tu código. B, p, p, p, boom. Bien, hasta ahora tan bien. Cada vez que
golpeamos a un asteroide, el asteroide es destruido Boom. Y aún podemos
dispararles y destruirlos. Todo eso sigue funcionando. Pero
boom, boom. Todo bien. Ahora bien, lo que también queremos
hacer aquí es que necesitamos emitir una señal aquí, ¿verdad? Porque necesitamos esta
señal para ir con la actualización nuestras vidas del
jugador y el asteroide Entonces necesitamos una nueva señal
de nuestro asteroide aquí. Entonces vamos a decir
señal, golpe de asteroide. Y no necesitamos pasar
ningún argumento a favor de esto. Sólo necesitamos saber que
el asteroide ha sido alcanzado. Entonces vamos a tomar
eso, vamos a bajar. Y una vez que nos conectemos
con el jugador antes de que nos
liberemos, vamos a emitir esta señal. Entonces asteroide hit dot emite. Y luego podemos desconectarnos. Asteroide golpeó desconectarse. Ahora estoy consciente que aún no lo hemos
conectado, pero vamos a llegar hasta aquí. Y esto en realidad
va a ser muy similar a nuestra conexión. Entonces solo voy a seguir
adelante y copiar ahí
el argumento
de lo exigible Entonces vamos a
conectarnos a la GUI y pasar en esta función
para desconectarnos. Y en este caso, el mío
se llama Actualizar Vidas. Bien, así que voy a pasar eso. Bueno, parece que aquí me
falta un paréntesis. A ver. Eres
parte de ese conjunto, eres parte de ese conjunto. Y tengo uno demasiado. Ahí vamos. Todo bien. Entonces voy a copiar toda esa línea. Subiré a mi función
lista. Y al igual que la señal
destruida, conectaré esta. Así que conéctate en lugar
de desconectarte. Ahí vamos. Entonces tenemos dos señales de que
estamos conectando y listas,
y una que emitimos
y
desconectamos cuando nos destruyen, y otra que
emitimos y desconectamos
cuando golpeamos al jugador. Bien, entonces ahora
necesitamos esta función para realmente hacer algo Entonces en nuestro guión Gooey, podemos echar un vistazo a esto
y actualizamos nuestras vidas Para que podamos hacer vidas
menos Sequals uno. Y luego necesitamos
actualizar la etiqueta de nuestras vidas. ¿Necesito actualizar eso? ¿Porque me cambié
el nombre? Yo sí. Ve porque tenía
un errata ahí dentro. Entonces voy a conseguir mis
Vidas Contenedor punto conseguir niños o Obtener Child Count. ¿
Con qué queremos ir? Básicamente voy a establecer esto con lo
que queremos eliminar. Nosotros bajamos a dos. Entonces voy a hacer Vidas
Contenedor punto, consigue niño. Voy a pasar en
nuestras vidas cuentan aquí. Entonces va a comenzar a las tres, y luego una vez que nos
golpeen, eso se convertirá en dos. Entonces dos va a agarrar nuestro
más nuevo nuestro último aquí, última vida porque solo
tenemos tres, y sale en el índice 01,
dos, y voy
a llamar a Dot Hyde. ¿Llamamos a Hyde
? No, probablemente porque es con ese control. Entonces lo que hacemos en cambio, solo porque no
sabe qué es niño, diremos Punto visible,
equivale a falso. Cosas si intentamos que
deberíamos ver nuestras vidas. Vemos al primero aquí en el extremo derecho desaparecer una vez
que nos atropellan con un asteroide Boom, ahí vamos. Y parece que de alguna manera nos
golpearon con un segundo. ¿Eso es cierto? Todo
parece estar funcionando. No estoy seguro de lo
que fue eso. A lo mejor uno engendró cuando miré hacia Pero ahí vamos.
Tenemos esto funcionando, claro, esto
va a salir al aire ahora. O al menos debería,
pero no lo hace. Un poco curioso
debería estar diciéndonos que esto no está funcionando
por el índice. Eso es algo curioso.
Supongo que nos estamos poniendo negativos, tal vez esté regresando. En fin, viniendo por aquí. Entonces tenemos nuestras
vidas desapareciendo. Tenemos nuestras vidas actualizándose. Y en base a eso,
necesitaríamos una vida para entrar en un juego terminado o no. Pero primero, sí quiero
establecer un número mínimo aquí o un número máximo solo para que no
podamos ir por debajo de
cero en nuestras vidas. Entonces lo que voy a
hacer es en realidad
voy a decir vidas iguales a. Y queremos que el número máximo aquí entre vidas menos uno y
el segundo argumento sea cero. A pesar de que no
deberíamos necesitar esto, solo
voy a poner
esto por si acaso para asegurar que no
tengamos algún tipo de error que pase ahí. Entonces nuestras vidas
nunca deben ir por debajo de cero. Y ahí lo tenemos.
Tenemos esa emisión, y todo lo que haríamos ahora es
que podríamos terminar el juego
si acercamos a cero y
reiniciamos la escena. Todo bien. Ahora lo haremos aquí
porque lo único que queremos hacer es actualizar las
vidas. Eso ya lo hemos hecho. Y la próxima vez, seguiremos
adelante y
configuraremos el juego de nuevo y reiniciaremos.
12. Pon fin y reinicio del juego: Antes de que termine el juego,
voy a seguir adelante
y entrar en mi Guy. Voy a añadir otra nota aquí. Voy a añadir una etiqueta. Este será mi juego sobre etiqueta. Este texto, sólo
va a decir juego terminado. Voy a poner este ancla,
justo aquí en la parte superior. Voy a ponerlo
en el remitente de
la pantalla para decir juego
terminado cada vez que perdamos. Podemos entrar en nuestro código y con nuestras vidas de actualización,
crear una nueva función. acabó el juego y
simplemente haremos una comprobación después de que
hayamos actualizado la pantalla. Diré, yo vivo es igual a cero, entonces llamamos a nuestro
juego sobre función. Y el juego sobre la función Bueno, no
necesito eso para estar mostrando. Voy a poner ese pase de nuevo. Voy a seguir adelante y
crear una exportación aquí para mi etiqueta de juego, la etiqueta GameOver Voy a asignar eso y el
inspector aquí muy rápido. Etiqueta GameOver. Entonces, ¿qué hacer? GameOver etiqueta punto Vsb es igual a tripulación Podemos pausar
el árbol, Entonces es un árbol G. Y en realidad, esta vez no voy a
hacer una pausa en el árbol. Creo que queremos sacar
al jugador del Goey. Creo que el jugador puede
manejar el segundo. Derecha. ¿Cómo quiero hacer esto? Bien, así que voy a hacer click en mi reproductor aquí en mi principal Voy a darle click izquierdo,
y voy a arrastrarlo. Y voy a soltar, y esto debería darme
el camino hacia mi jugador. Entonces solo voy a decir punto
Qu libre para borrar mi reproductor. Una vez que te hayas quedado sin Vidas
e vayas a un juego terminado, voy a decir, voy a esperar. Obtener Árbol, crear temporizador. De esta manera, podemos seguir adelante y esperar 3 segundos o algo así. Puedes seguir adelante y jugar con ese temporizador y ver
lo que te gusta. Dot TO, ¿verdad? Ya lo hemos
hecho antes. Y luego sólo
vamos a decir Get dot. Recargar Escena actual. Entonces echemos un vistazo
cuando terminemos un juego. Para hacer. Podemos
entrar. Podemos jugar. Podemos disparar, conseguir puntos. Pero, pero, bah. Todo está bien. Boom, nos golpearon,
perdimos una vida. Boom, perdimos dos vidas. Era nuestro pequeño barco. La hay, y vamos a
perder nuestra última vida. Boom, se acabó el juego. Espera 3 segundos. El juego se recarga y
podemos seguir jugando. Bien. Entonces ahí lo tenemos. Tenemos nuestro juego
terminado simplemente establecido. Y estamos todos listo para
empezar a jugar con
nuestro juego aquí. Ahora bien, si quieres que esto
sea un poco más auténtico para tener
la pantalla negra, auténtico para tener
la pantalla negra,
puedes entrar en la configuración de tu
proyecto y yo solo busco la palabra color e ir en un
entorno de renderizado. Color por defecto. Puedes
entrar aquí y puedes cambiar este color si quieres. Este es el
color por defecto del fondo. Puedes hacerlo si lo deseas. Pero como por lo general prefiero mantener el color predeterminado aquí, lo que puedes hacer en cambio
es que podrías entrar y hacer un naufragio de color, poner tus anclas para que estén llenas Bueno,
parece que no va a porque no tenemos el
control como principal. Ya veo. Bien. Así que sólo tendremos que entrar y
configurar esto nosotros mismos. Así que solo puedes establecer el tamaño para que
sea el tamaño que quieras. Siempre y cuando sea lo suficientemente grande como para cubrir el área azul,
deberías estar bien. Y entra y
cámbialo a negro. Y como sólo vamos a mostrar lo que hay en la zona azul, no importa
que sea más grande. Así que vamos a seguir adelante y jugar Oh, y necesito cambiar
el orden. Así que necesito agarrar
el color retirarse y realmente
jalarlo todo el camino hacia arriba de esa manera mi jugador
está encima para que
podamos ver. Y ahí tienes. Tenemos algo
que se ve aún más cerca del original al
tener el fondo negro. Pero de nuevo, eso es
solo una
elección personal sobre si
quieres tener eso. B, boom, pero, p,
p, p. Y en realidad
parece un juego Nuestro. Ah, y si solo te estás preguntando por qué el puntaje
eso no está funcionando. Probablemente es solo porque
saqué a Color Rect para ser el primer hijo Entonces Índice cero, estoy
tratando de conectar
mis señales a color rect
en lugar de la GUI Entonces si solo
lo tiro hacia abajo para que la GUI Vamos,
sal de ahí. Ahí vamos. Para que el Guy sea primero, entonces eso debería
arreglar nuestro problema aquí. Ver, boom, Vive ahora
conectando y nuestra puntuación. Entonces eso es solo una
capa de ordenamiento en la jerarquía de escenas. Entonces eso es algo a
tener en cuenta si tuvieras que, por
supuesto, hacerlo de esta manera y no hacer la configuración de tu
proyecto. Bien, ahí tienes.
Tenemos nuestros puntos. Tenemos vidas. Tenemos GameOver. Tenemos que reiniciar. Y hemos hecho una vez más, otro juego completo sin
necesidad de ningún recurso. Hemos hecho
de todo desde dentro del motor. Bien, eso lo hará. Ahora tenemos asteroides. Y si quieres ir un paso más allá, puedes seguir adelante y otra vez, puedes encontrar sprites en línea, o puedes usar la Línea dos
D y seguir adelante y crear esas naves espaciales que hayas visto y
asignarles Y lo mismo,
dales una señal, conéctala a tu GUI, envía los puntos con ella,
igual que hacemos con los asteroides