Transcripciones
1. Introducción a Frogger: Muy bien todos,
en esta sección, este es en realidad un módulo
de un curso más amplio, y aquí vamos
a seguir adelante y crear Frogger con el fin de
ayudarte a aprender cómo puedes hacer juegos
usando el motor Gatto recreando un juego
clásico de,
creo que fue de creo que fue Ha pasado mucho tiempo. Pero se puede ver con esto
vamos a conseguir movimiento de jugador. Música Tenemos algunas
zonas de viento, detección de colisiones. Vamos a poder
usar mapas de mosaico. Entender cómo funcionan los mapas de mosaico. Contamos con
representación visual del tiempo. Tenemos patrocinadores pasando.
Tenemos colisiones en curso. Tenemos algo de física
sucediendo,
tenemos haciendo un seguimiento
de vidas y puntaje, así
como algunos multiplicadores de
fondo Tenemos muchas
cosas sucediendo en este sencillo juego
clásico aquí. Entonces espero que disfrutes a
medida que avanzamos. Y ojalá al
menos tengas un
conocimiento básico de programación, si no del guión G D
entrando eso
te ayudará a mantenerte al día y
no perderte tanto.
2. Descarga sin configuración: Bienvenidos futuros desarrolladores. Si vamos a estar desarrollando cosas usando el motor Gatto, ya sea videojuegos o software de
escritorio Cop, lo
primero que vamos a necesitar es bien, el motor Gatto 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 Gatto desde la página
oficial aquí, simplemente vaya a goto engine.org Todo como vemos aquí.
Justo aquí en la pantalla. Y una vez aquí, verás la sección de descargas arriba
en la parte superior de nuestra pantalla. Así como dos
botones de descarga en el centro. Tenemos el LTS, que es tres puntos 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 tuvieras que
usarlo 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 anterior. Entonces solo tenlo en cuenta,
y por eso, recomendaría
que uses la versión
4.1 a medida que avanzamos. Todo bien. Entonces esta es
la versión estable y salió 4.1. Entonces puedes
presionar el
último botón de descarga o la pestaña de
descarga en la parte superior. Ambos
te traerán a esta pantalla aquí. Todo bien. Así que 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 a Rachel Codin es solo un
montón de cosas extra que no
necesitamos a la hora de
pasar por este 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 manera de
que puedas conseguir esto. Y eso sería de Steam. Puedes venir a
Steam y seguir adelante y descargarlo de ahí
si quieres, y eso
nos va a dar la versión estándar. Por defecto, la versión de Steam
no tiene disponible la
versión dot p. Así que no tienes que
preocuparte por ninguna confusión con eso si sigues adelante
y lo obtienes de Steam.
3. Qué haremos: Bien, esta semana
vamos a patear las cosas. Una opción, en lugar
de salirse de solo algunos textos como lo
hicimos la semana pasada. Esta semana vamos a
estar creando o recreando un viejo juego de dos D de
los 80 llamado 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
con las que podamos trabajar responde como veis. Si nunca
antes has jugado Frog o
nunca has oído hablar de ella. Verás aquí
vamos a estar trabajando con UI para nuestro
heads up display. Tenemos puntos que
vamos a necesitar para hacer un seguimiento de mi ratón ahí por un segundo. Pero no sólo eso, sino que también vamos a ver, es que va a demostrarlo aquí
tenemos cierta cantidad
de prog por jugador Obviamente no
tenemos monedas adentro, pero este es esencialmente el juego Aquí tenemos dos
pequeñas zonas seguras. En esta pequeña zona morada, tenemos una carretera en
el medio que tiene cinco carriles de circulación
alternando de ida y vuelta. 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 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 rana, si nunca la has jugado
ni has oído hablar de ella.
4. Crear el fondo: Bien, así que sigamos
adelante a dar un salto. Empieza a crear Frogger. 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 te recomendaría que crees un nuevo
proyecto para esto De esa manera podrás
exportarlo sin tener ningún problema en el futuro. Bien, así que lo primero que
vamos a necesitar hacer, sobre todo porque nuestros
sprites son tan pequeños, es que vamos a
necesitar encogerlos. O no encogerlos,
sino reducir nuestra pantalla a más del tamaño del gabinete
arcade. Para hacer eso,
vamos a subir al proyecto y entrar en la configuración de
nuestro proyecto. Bien, entonces
debería comenzar así con la
configuración avanzada apagada. Y verás en el lado
izquierdo simplemente va 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. Bien, esto es un tamaño de pantalla de gabinete
arcade. La resolución de pantalla para esto, y va a ser perfecta
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. 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
que ellos lo llaman, el área de anotación a la que
tenemos que llegar nuestro frente. Vamos a configurar todas
esas cosas. De esa manera podemos
saltar directamente a conseguir nuestro
juego y todo lo que configuramos y ejecutamos en
los siguientes videos. Bien, entonces vamos
a necesitar una escena de dos D aquí. Vamos a hacer clic en dos D, y esto nos dará un nodo
dos D para nuestro nodo raíz. Si quieres seguir adelante
y renombrar eso, puedes. Puedes llamarlo
Maine si quieres. Game Manager,
Realmente no importa. Si realmente quieres,
puedes simplemente
dejarlo como el nombre predeterminado. Me va a dejar
como defecto por ahora. Para crear esto
en nuestro pequeño fondo, voy a crear
un nuevo mapa de corbata. Voy a presionar el
botón más y vamos a
ir a seleccionar Tile Map
en el menú desplegable, ver en nuestro nodo cortina. Seleccione el mapa de teselas. Sigue adelante y haz doble clic en eso
y selecciona eso. Ahora tengo la mente puesta aquí. Voy a seguir adelante y simplemente borrar todos estos. 1 segundo. Bien, entonces deberías tener este
aspecto cuando tengas seleccionado el mapa de
teselas. Si no tienes una selección, sigue
adelante y selecciónala. Lo que vamos a
hacer es dirigirnos hacia el lado derecho. Aquí vamos a ir
al juego de azulejos. Se queda vacía en este momento, pero lo que vamos a hacer es hacer clic en él e ir
al nuevo juego de mosaicos. Y luego haga clic en ese juego 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. Si entramos en nuestro
sprite y nos
desplazamos hacia abajo, veremos casa,
mediana, carretera y 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 aquí. Todo bien. Antes de que
realmente podamos usarlos aquí. Como puedes ver, no podemos
hacer click en nada. Lo que queremos hacer,
solo 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 a su alrededor esta caja
naranja. Eso significa que tenemos un azulejo
que ahora podemos usar. Voy a hacer lo
mismo por carretera, casa
mediana, frente
directo Ahora el hogar es un poco más grande. Estoy pensando que podría ser
uno más grande que eso. A ver, ¿qué tenemos? 2062 grande. ¿Cómo es eso? Creo que eso servirá. Perfectamente divertido. Todo bien. ¿Alguna vez van? Tengo un 16 por 24
aquí para este azulejo. Bien, así que ahora si hacemos clic
en el mapa de teselas en la parte inferior. Nuestra pantalla aquí abajo. Ahora deberíamos poder hacer
click y comenzar a dibujar
nuestros sprites. Haga clic en mi mediana, haga clic en mi ficha morada aquí. Simplemente arrastre una fila
por la parte inferior. Ir a mi carretera, tenemos
cinco capas de tráfico. Necesitamos cinco filas
de nuestra cerveza negra 4.5 Si nos referimos de
nuevo a nuestra imagen, entonces
tenemos otra
capa de púrpura, cinco capas de agua, 12345 Entonces tenemos una capa de agua que se llena
debajo de nuestra casa. Hagamos una capa más ahí. Vamos a agarrar nuestra casa. Simplemente continúe y
haga clic en un spray, y arrastre el mouse
para que pueda seleccionar los tres. Vamos a colocarlo. Oh, mira eso. Parece que tenemos este tema.
Bueno, ¿qué está pasando? Estamos reemplazando nuestras tejas de
agua aquí. No queremos hacer
eso. Necesitamos dibujar
esto
en una, otra capa. Y yo sólo voy a seguir
adelante y terminar llenar eso con nuestra agua. Todo el camino hasta la cima
de las dos últimas líneas. Voy a hacer click en nuestra sección de
inicio aquí. Y no queremos
reemplazarlos, queremos construir encima de ello. Te darás cuenta aquí en el lado derecho
de nuestros mapas de teselas, tenemos algo
que dice capa cero. Y si tenemos un desplegable, no
hay nada más ahí. Lo que queremos hacer es ir a nuestro inspector de nuestro mapa de teselas, abrir la sección de capas, presionar agregar nuevos elementos. Ahora en realidad tenemos una
segunda capa de vuelta en los mapas de teselas con nuestra fila de
inicio seleccionada. Podemos ir a la
capa desplegable y golpear la capa uno. Ahora en realidad podemos
dibujar directamente
encima de ella sin
afectar nuestra final. Tenemos siete al
otro lado con esto. Solo para asegurarse de que nuestra rosa, 1235, me queda bien Si volvemos a hacer clic en nuestro No TD, nada es genial. Esto es con lo que estamos trabajando. Si recuerdas, cuando estamos
viendo la configuración de Alpro, cómo se ve,
en realidad tenemos nuestro puntaje Esa información se
configura justo en la parte superior aquí en esta zona 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 Bien, ahora tenemos todos
nuestros antecedentes establecidos así como 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. Ahora que hacemos eso facilita mucho
la configuración de las cosas
así. Bien, ese es
nuestro trasfondo, sigamos adelante y saltemos
a la siguiente porción.
5. Crea el jugador: Bien, sigamos adelante
y creamos nuestro jugador. Pero antes de que lo hagamos, voy
a seguir adelante y salvar esto. Va a controlar a
S. Entra en mi rana o soporte y guarda mi
escena muy rápido. Bien, entonces para nuestro jugador, nuestro jugador en realidad
va a tener su propia escena que traemos. Entonces vamos a hacer clic en el plus justo arriba
aquí o agregar nueva costura. Vamos a ir a otro ya que 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 En otros motores se puede escuchar a la
gente referirse a él como tal, pero aquí ahora se llama
un cuerpo de personaje dos D. Ahora este cuerpo de personaje, tenemos aquí
este triángulo amarillo
que da un pequeño aviso. Simplemente nos dice que nuestro
nodo no tiene ninguna forma. No puede chocar con nada. No tiene colisión
por ahora, está bien. Usa eso para flotar ahí. Lo que vamos a hacer es
que en realidad vamos a
ir a agregar un,
otro nodo aquí. Y lo que queremos
añadir es un sprite. Dos D. Queremos añadir
un sprite animado. Queremos que nuestro sprite
esté animado. Tenemos dos marcos para esto. Sigamos adelante y hagamos
un sprite animado. Dos D en el
lado derecho en el inspector. Vamos a abrir la
sección de animación frente a los fotogramas de sprites. Hagamos clic en él y
hagamos nuevos marcos de sprites. Entonces abramos esos
marcos de sprites con solo
hacer clic en él. Bien, vamos a tener
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 icono de aquí abajo. Voy a cambiarle el nombre
a Jump A Idle. Seleccionado. Voy a traer
a Proger inactivo y G, saltar Vamos a
traer a Proger Id, luego a nuestro ícono saltador Proger, y ahora deberíamos
poder ir entre los dos cuando queramos jugar
a estos enemigos Bien, si jugamos ahí, estamos saltando, estamos haciendo
nuestro pequeño rebote hinchable Podrías notar que el sprite está un poco borroso
aquí arriba en nuestro Pero aquí abajo podemos ver que se
supone que es agradable y arriesgar. 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 no va a ser una importación movida esto déjame simplemente seguir adelante y
hacerte saber dónde está esa parte. Bien, así que si te dirijas
a la configuración de tu proyecto, ¿dónde voy a dirigirme a la configuración de tu
proyecto y ubicar la sección de renderizado y
textura aquí en configuraciones
avanzadas o la
necesitamos en esto? No, no lo necesitamos en eso. Queremos un filtro de
textura predeterminado aquí, cambiarlo de
lineal a más cercano. Adelante y cierra
eso, y verás tus sprites van mucho afilados Si vas a hacer
pixel art así,
este es el valor predeterminado que deseas
establecer en la configuración de tu
proyecto. Y ahora tenemos un
bonito Roggio afilado. 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. Eso nos
preocuparemos cuando lleguemos a esa porción. Así que sólo voy a
seguir adelante y ja, para salvar esto. Y yo sólo voy
a llamar a este jugador. Ahora si entro en mi escena principal con mi nodo dos D seleccionado. Puedo hacer clic en no este
plus para un nuevo nodo, sino en la cadena al lado de él. Eso nos dejará instancia
en una escena que ya existe para nosotros. Esa va a ser la escena de
nuestros jugadores. Ahora podemos seguir adelante y agarrarlo y podemos traer a
este pequeño. Podemos jugar,
podemos hacer lo que queramos
hacer con este pequeño. Entonces veamos cuál es
nuestra transformación. Sabemos que esto está en
valores de 16172, ¿no sería 176
si estamos en valores de 16 Y sólo voy a
mover a mi pequeña ranita . Aquí vamos. Estar un poco más
centrado con eso. 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 necesitemos en este momento que
saltaremos al siguiente donde
abordaremos haciendo
algunos movimientos de jugador.
6. Movimiento de los jugadores: Bien, sigamos adelante
y vamos a crear el movimiento para que nuestra pequeña
ranita pueda moverse hacia arriba,
abajo, izquierda, fin, derecha Para empezar, vamos
a necesitar algunas entradas. Ahora si quieres
usar las teclas de flecha, entonces yo abajo, me fui, y yo derecha ya existe, pero quiero usar WASD Entonces voy a
subir a mi proyecto
e ir a mi Configuración del proyecto, y voy a entrar en
el asignador de entrada en la parte superior, agregar una nueva acción Y solo voy a escribir
add left and right. Ahora para cada una de
estas acciones aquí, solo
voy a ir
al lado derecho y darle al botón más hacia arriba. Voy a darle
al plus. Sólo voy a presionar en mi teclado. Te voy a mostrar cómo se ve
eso, lo que vas a
ver desde ahí. Veamos, esta es
esta ventana de aquí. Traeré eso
arriba. Aquí tienes. Acabo de darle a la llave
y tenemos eso. Golpeamos bien, vamos a bajar. Presiona el signo más, presiona la tecla S nuevamente. A izquierda y D por
ahora mismo tenemos arriba abajo, izquierda y derecha para nuestros controles. 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 salto, no
me deshice
del primer sprite, así que solo tendré este
con las piernas abiertas y pondré un guión a un lado de
nuestro cuerpo de personaje dos
D en la escena de nuestros jugadores, solo
tenemos uno
vacío así Ahora lo que voy a
hacer es que voy a crear una función
llamada movimiento. Así que esto es solo para que
podamos mantener todo limpio y organizado y mantener todo nuestro movimiento
en un solo lugar. Vamos a hacer
para tomar entrada aquí, vamos a usar
la sentencia if en la misma declaración if que
hemos estado usando mucho. Si entonces queremos acceder al objeto
de entrada o a
la entrada de clase de entrada, entonces queremos verificar la acción. Queremos ir con liberación. Recién soltado o simplemente presionado. Cualquiera de los dos trabajará para
este juego, específicamente. Si vamos es acción presionada, entonces eso es mientras se mantiene
pulsado el botón. Simplemente pulsado y solo
soltar significa, bueno, solo presionar es cuando tan pronto como el botón se activa
cuando lo presionas hacia abajo. Y soltar significa que el bloque de código se va a ejecutar
cuando levantes el dedo hacia arriba. Voy a ir con solo
prensa, intentemos eso. Voy a usar el botón y esta es una cadena que
debería haber aparecido. Tú automáticamente,
esto fue un colon. Así podremos entrar a él
y crear el bloque de código. Todo lo que vamos a hacer es que
vamos a hacer dos cosas. Tenemos que mover nuestra pequeña roca, tenemos que
moverla hacia arriba por la pantalla. Y vamos a subir por una cuadra y todo
se divide en 16 bloques de 16 o 16 tamaño de teja. Entonces vamos a mover
nuestra ranita hasta 16 cuadras. En este caso, vamos
a conseguir nuestra posición. Si tiene un poco
más de sentido para ti, puedes decir auto posición porque te estás moviendo a ti
mismo que este guión está adjunto en este momento. Eso nos va a dar una ordenanza x y a que tiene dos
números asociados a ella. Si hacemos clic en nuestro cuerpo de
personaje y miramos dentro del inspector
bajo transform, verá que tenemos una
X y una Y y estas corresponden a la ubicación
que están en la pantalla. Si hacemos clic en nuestra escena principal y vamos al cuerpo de nuestro personaje, verás que su posición
es 169.2 33 en mi caso, aquí es de donde
partimos Y vamos a estar
sumando o restando de esto
ya sea para la X o la Y para conseguir nuestros movimientos
ya que queremos subir Cuando presionemos hacia arriba, vamos
a estar afectando el número, vamos a decir posición. Estamos en nosotros mismos, queremos obtener la propiedad de posición
y luego queremos obtener el número de la misma para
subir la pantalla, en realidad
tenemos que restar Entonces vamos a decir
menos es igual a eso. Podríamos decir que esto es igual
a nuestra posición y número, es igual a la posición
y menos algún número, que nuestro número en este
caso va a ser 16. Si lo tuviéramos que dejar
así y dirigir nuestra escena. Bueno, qué desafortunado
no se mueve
nuestra pequeña ranita . ¿Por qué
no se mueve? Ojalá lo hayas indicado
o captado eso antes de que
presione el botón de vuelo Nunca vamos a llamar a
nuestro movimiento en ningún lado, así que en realidad nunca estamos
comprobando ninguna de estas cosas. Para eso, vamos a
simplemente meterlo dentro de la función de proceso aquí. Movimiento y ahora
se le llama. Uy. Al menos lo haría, si pudiéramos deletrearlo
correctamente. Ahí vamos. Si intentamos correr eso ahora y el
botón arriba,
que para mí es W, se
puede ver que vamos
adelante y estamos moviendo nuestras 16 cuadras a la vez. Nosotros 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. Hagamos que nuestra animación
funcione ahí. ¿Cómo jugamos nuestra animación? Bueno, si nos fijamos en la escena de
nuestro jugador, podemos ver desde
nuestro guión
podemos, podemos seguir esta
línea fácilmente, solo un nivel hasta el sprite
animado dos D. Vamos a conseguir ese nodo La forma en que lo he demostrado antes era usar este signo de dólar.
Sería lo más fácil. Tan pronto como
empieces a escribir sprite animado,
va a aparecer. Recuerda que solo es sprite
animado dos D porque ese
es el nombre del mismo. Si tuviera que nombrar a esta banana y muy por deletreo de banana, entonces eso es
lo que tendría que escribir aquí para poder acceder a ella. Sólo voy a restablecer
ese nombre de nuevo a Deft. Todo lo que vamos a hacer es que
vamos a llamarlo. Jugar, jugar. Verás las animaciones
que creamos pop up. Vamos a usar salto. Lo intentamos ahora
solo con esa edición de nuestra línea, gritos, en realidad
tenemos que tocar esta
escena y no a nuestro jugador, puedes ver que entramos en nuestro salto, pero estamos atrapados en nuestro salto Ahora, eso es un poco
decepcionante. ¿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. Para ello,
vamos a tener que
acceder al sprite animado de nuestro jugador Ir al
lado derecho a la pestaña de nodo y vamos a conectar una señal que esta animación terminó. Si solo hacemos doble clic en eso, obtendremos un pop up para
conectar una señal aquí. Solo vamos a
seleccionar el cuerpo del personaje dos en el que está nuestro guión
y presionar el botón de conectar. Va a mantener todo para usar
mis teclas de flecha para sacarlo a colación cada vez que nuestra animación termine de reproducir este bloque
de código se va a ejecutar. Ahora lo que queremos que
suceda aquí es
que queremos volver
a nuestro estado de inactividad donde nuestra rana
simplemente está sentada ahí. Lo mismo.
Vamos a conseguir nuestro sprite animado dos D, vamos a llamar play Eso va a estar
inactivo si lo intentamos. Ahora, ¿qué hacemos de nuevo si
tocamos la escena correcta,
cómo intentamos eso Ahora vemos que ahora tenemos este pequeño salto que es aparecer a medida que jalamos
a través del agua. Eso es increíble. Ahora 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, no, eso realmente no
va a ser un problema. Eso podría ser algo
a tener en cuenta en el
futuro para resolver este problema. De hecho, podemos arreglar
esto con un si pick. Y como puedes ver mi
pequeña salida ahí, estaba revisando las cosas
y te mostraré cómo hacerlo.
Voy a limpiar eso. Todo lo que tenemos que hacer es
comprobar sprites animados. ¿Quieres el signo del dólar ahí? Si el sprite animado
dos D Animación. No, ¿cómo se llamaba? Bueno, si entramos en
nuestro sprite animado, y por cierto,
puedes acceder a esto, si solo mantienes el
control y haces clic en el sprite animado
dos D aquí en nuestro código, entonces abrirá la página de
documentación para Esto es lo que estamos
buscando aquí. Obtener animación. Queremos obtener animación. Como ves eso no
estaba apareciendo. A veces es útil
revisar la documentación todos modos que queremos hacer si el sprite animado
dos consigue animación Si tuviéramos que echarle
un vistazo a eso, se la animación actual
del recurso de fotogramas de sprite cambia
la animación actual
del recurso de fotogramas de sprite
en el valor Contador de cuadro,
progreso de cuadro o reinicio. Pero lo que queremos hacer es que queremos obtener lo que es
esta animación. Eso es básicamente devolvernos 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. Entonces cuando jugamos nuestro ralentí, solo vamos a
tocar eso en uno, para que pueda estar
dentro de nuestro candado. Ahora básicamente
vamos a comprobar cuándo termina nuestra animación. Si el actual es salto, entonces vamos a jugar al ralentí. Si ejecutamos eso, ahí vamos. Tenemos nuestro pequeño boing. Se ve exactamente igual, pero no vamos a
estar constantemente reproduciendo la animación inactiva una y
otra vez cuando se reproduce la
animación inactiva. Recuerda que toca una vez
y luego se hace. No es un “looping”. Si el tuyo, por ejemplo, está haciendo un ciclo por cualquier razón, el seguir adelante mancha
tu spray animado Y si es un lazo,
puedes ver nuestro ratón aquí. Eso es porque
esto está encendido. Entonces solo tienes que seguir adelante y hacer clic en él apagado, así es blanco así. Si es azul, entonces está encendido. Si es blanco, está apagado. Ahora cuando nuestra animación termine, después de saltar,
vamos a comprobar si nuestra animación
actual es salto. Si es así, entonces jugaremos al
ralentí cuando termine el inactivo. Esta declaración if no será cierta porque cuando
obtengamos animación, va a estar inactiva, no saltar. Como eso ya no es cierto, no
vamos a
hacer otra cosa. No vamos a seguir repitiendo inactivos una
y otra vez en este tiempo Es una pequeña diferencia, una
de esas cosas que están en el back end que el jugador nunca
va a notar. Como dije, en un juego
pequeño como este, no
va a hacer una diferencia tan grande,
si es
que hay alguno que se note. Pero es algo que vale la pena
conocer en el futuro. Pero cuando sí quieres hacer juegos
cada vez más grandes. Bien, así que sigamos
adelante y
ya podemos conseguir nuestro botón. Si solo copiamos y
pegamos esto, podemos obtener L si en lugar de un si queremos nuestro abajo
presionado en lugar de arriba, queremos más 16 en lugar de -16 Porque si
menos va a subir, entonces plus nos va
a derribar Así que ahora podemos subir
y 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í. Podemos hacer eso hablando de su rotación antes de saltar, podemos obtener autorrotación. Si echamos un vistazo a nuestro jugador, volvemos a la escena de nuestro jugador, clic en nuestro
cuerpo de personaje dentro del inspector. Si bajamos, vemos
que aquí tenemos rotación. La rotación es en radianes
más que en grados. Lo que podemos hacer es
decir que la rotación es igual. Podemos usar esta función que está incorporada llamada deg two red Eso podría haber cambiado aquí. Parece que tiene. Parece que se le
ha renombrado aquí, deg two d, Ahora tiene los
guiones bajos en él Entonces tomemos un argumento
en forma de grados. Si decimos 180, eso va a ser
un cambio completo. Giramos a la derecha, eso
va a ser 90 grados. Si giras a la izquierda, vamos a estar
-90 De cualquier manera, tenemos que llegar a
180 positivo o 180 negativo Yo sólo voy a ir
con 180 grados aquí. Esta función va a
convertir estos 180 grados en radianes 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 pi Esto sería
lo mismo aquí, 180. Como si solo tuviéramos que copiar esto. Decir rotación es igual a
pi dividido por cuatro, entonces eso
nos dará una rotación. Pi dividido por dos, eso
nos dará la mitad de nuestra rotación
aquí en radianes Si te mostrara que
con pi dividido por dos, ahí nos dividimos
al revés, tal vez sea un poco
más de dos. Ahora, normalmente no
uso radianes yo mismo. Podemos ver divididos por cuatro. Obtenemos este pequeño ángulo
incómodo. Puede ser un poco incómodo cuando se trata de
radianes a veces, que es una de las razones por las que
prefiero usar grados para
radiar solo porque es algo en
lo que
puedo trabajar
un poco más rápido Como veis, ahí vamos.
Volteamos la cara hacia abajo. Sólo que ahora no estamos
enfrentando una copia de atrás. Entonces ahora tenemos
que arreglar eso dentro de nuestro código. Simplemente haremos
lo mismo cuando presionemos hacia arriba, establecemos nuestra rotación a cero
si la jugáramos. Ahora, aquí vamos. Ahora podemos saltar hacia arriba
y podemos saltar hacia abajo. Ahora, ¿y si queremos
saltar a la izquierda y a la derecha? Bueno, aquí podemos conseguir esos
con dos LC más. Sólo voy a
espaciar estos para que sean un poco más legibles. Aquí vamos. Comenzando en nuestro segundo aquí, vamos a decir
si queda acción, en lugar de modificar
el valor y, en realidad
vamos a
modificar la x de nuestra posición. Porque x es izquierda y
derecha, si vamos a la izquierda, tenemos que -16 aquí,
grados a rojo Bueno, podríamos establecer esto en 270 solo para quedarnos en el lado
positivo aquí. Lo que significa nuestra última L aquí. Cuando presionamos a la derecha, vamos a modificar la
posición X en lugar de la Y, vamos a más 16. Si nos movemos a la derecha,
vamos a ser girados
a 90 grados. Seguimos adelante y lo intentamos ahora. Debería ver. Ahora
podemos saltar en las cuatro direcciones
que podamos movernos. 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. Aquí tienes. Ahora vamos
a mantener nuestra posición. Bueno en la pantalla
estaría bien. Podemos preocuparnos por todas
esas cosas más adelante. Por ahora, solo tenemos nuestro movimiento dando vueltas y este vehículo se está
bajando mucho tiempo. Yo solo quería mantener el movimiento
en su propia pequeña sección. Aquí, allá vamos. Podemos correr por ahí como nuestro propio pequeño
Boeing ranas. Boeing Pero bien,
ahí lo tienes. Ahora podemos seguir adelante y pasar
a la siguiente sección de nuestro código. Creo que a continuación vamos a, creo que vamos a
crear nuestros vehículos y hacer que
comiencen a cruzar la carretera aquí.
7. Crea 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. Eso es genial. Todo lo que tenemos que hacer es
crearlos y hacer que se muevan
por nuestra pantalla. Bien, sigamos adelante y creamos 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í. Vamos a darle un sprite. En este caso, como no
tenemos animaciones para ello, solo
vamos a usar
un sprite regular dos D, podemos seguir adelante y asignarle
uno de los primeros sprites Ahora en este caso
seguí adelante y seleccioné el camioncito, pero claro que puedes
escoger el que quieras Específicamente, estoy usando
uno que se mueve a la izquierda. Por el momento,
eso vale la pena señalar. Voy a cambiar
este nombre de cuerpo de personaje dos
D para ser camión. Voy a guardar eso como
mi escena de camión. 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
que pueda ocurrir aquí. Porque obviamente
nuestra rana tiene que ser aplastada de alguna
manera si es golpeada Para prepararme para eso,
voy a crear un área dos D que
simplemente va a
permitirme tener un área
predefinida que pueda verificar para obtener esa área
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 en ella, dándonos una forma de
colisión de advertencia seleccionada. Nos movemos a la derecha a nuestra sección de formas y
creamos una nueva. Eso solo va a ser
una nueva forma de rectángulo. Ahora no usamos formas
complicadas como usar los polígonos En su lugar, usa polígono con forma con algunas de estas formas
básicas aquí Porque la sien tu forma es 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. Es un equilibrio que tú, tú mismo tendrías que elaborar. Pero en este caso, por
suerte para nosotros, solo
podemos usar estos
rectángulos y que responden, sobre todo porque para recrear
un juego más antiguo como este Bien, ahora que tenemos nuestra forma de colisión
así, y otra vez, si no cogiste
eso, solo asegúrate tu rectángulo esté
cubriendo todo. Cada parte de la camioneta aquí. Ahora nuestro camión en realidad
va a necesitar un guión en él. Voy a agregarle uno
, y en vez 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 para hacer esto
vamos a una variable. Para nosotros lo que esto va a hacer, esta palabra clave de exportación nos va a permitir cambiar
dentro del inspector. Vamos con la exportación de signo
at y crearemos una variable y
llamaremos a esta dirección, va a ser un entero. Por defecto, podemos
simplemente enviarlo a cero o podemos enviarlo a uno. Realmente no
importa en este caso. Si lo guarda y vuelve a
seleccionar su camioneta, debería
ver la dirección dentro de su inspector en
el lado derecho. Ahora en nuestro caso, vamos a necesitar ser
uno negativo porque
vamos a
movernos significa que vamos en la dirección
negativa. Simplemente seguí adelante y puse
eso en negativo. Ahora en la función de proceso, vamos a tener nuestro
carácter es correcto, pero nuestro camión se mueve. Entonces para
movernos, necesitamos tener algo llamado
deslizamiento móvil o colisionar en movimiento Cualquiera de los dos trabajará
para tener movimiento. En mi caso deslizador móvil de piel. El código de mudanza también está
bien. Prácticamente solo define
lo que sucede cuando dos cuerpos de
Física chocan
entre sí ahí mismo O se golpean
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. Ahora tenemos tobogán móvil. No podemos simplemente jugarlo ahora, porque todavía tenemos que
controlar este movimiento. Voy a tener una, otra
variable aquí llamada velocidad, que también será un entero. Yo creo. Voy a fijar esto. Ya intentaremos ocho. Veremos lo rápido que se mueve eso. Eso podría ser un
poco demasiado rápido. De hecho lo intentaré con dos. Ahora que lo pienso, todo vamos a hacer es que
vamos a cambiar la velocidad y queremos
cambiar el número x. Al igual que la posición,
tenemos tanto una x como una y
Cuando se trata de velocidad. La velocidad va a controlar nuestro objeto moviéndose consistentemente. Vayamos a velocidad a partir de cuatro, interesante, tal vez V mayúscula porque sé que
hay una construida en una. Bastante seguro aquí, es
bajo, justo ahí. Debo haber puesto ahí un error tipográfico
. Pero ahí vamos. Entonces solo podemos hacer velocidad x esta vez.
Vamos a decir iguales. No vamos a
decir menos ni más, porque esto va a
depender de nuestra dirección, digamos velocidad tiempos dirección. 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 tiempos de dirección. Ahora mismo estamos en menos uno. Entonces va a ser dos
veces menos uno y eso nos
va a dar
dos negativos y debería
hacernos mover a la izquierda. Fuimos en el inspector y lo
cambiamos a uno positivo. Entonces eso debería
ser dos veces uno. Trae un dos positivo y haz que nos movamos en
la dirección correcta. Sólo voy a poner el
mío de nuevo a menos uno. Regresaré a mi escena
principal y solo traeré una camioneta para
echarle un vistazo. Lo voy a poner aquí mismo. Toca la escena y
mira si se mueve. Podemos ver que se mueve, pero se mueve demasiado lento. Vamos a tener que
retocar eso. Volvamos a las ocho. A lo mejor ocho estuvo bien. Prueba eso. Ocho no es bueno, pero
es mucho mejor. A ver, ¿queremos
estar moviéndonos a 16 píxeles? 16 se ve bien, aunque eso parece que
podría ser bastante fácil. A lo mejor queremos aumentar eso. Tenga en cuenta que
siempre podemos volver a esto, y como estamos usando la
velocidad en todos nuestros vehículos, podríamos ajustarlo fácilmente y modificarlo una vez que tengamos los cinco carriles
usados para vehículos ver, con 32, 32
se ve mejor aquí, creo que 32 es donde
voy a dejarlo y
retocarlo más adelante A lo mejor quieres ir al 48 o no creo que
vamos a poder
llegar a algo como
64, pero nunca se sabe. Supongo que sólo voy
a usar 32 como mi base. Bien, entonces tenemos un camión
moviéndose en una dirección. 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é tenemos 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, 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 colisión si necesitaba
reemplazar el sprite por
otro de nuestros autos Y luego si es necesario, pruebe la dirección de
menos uno a uno positivo, que controla todos nuestros autos. Y seguí adelante y los
coloqué aproximadamente a
donde estarían aquí, solo para poder probar
y echar un vistazo. Como puedes ver mientras lo corremos, 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 abarquen. No queremos
colocar estos consiste, excepto que tenemos que
colocarlos manualmente. Entonces
solo tenemos que tener esta enorme lista
de autos que
no tenemos idea de cuánto tiempo va
a ser para que engendren O cuánto tiempo va a
tomar para que el jugador o se quede sin vidas
o complete el nivel. Lo que vamos a hacer es
crear engendradores para estos autos. Bien, estos generadores
son básicamente solo en un tiempo establecido engendran Podríamos tener cinco reproductores
diferentes si queremos, uno
por cada carril A ver, creo que eso es
lo que quiero hacer. Creo que voy a tener
cinco patrocinadores diferentes esa manera todos ellos pueden
tener sus propios tiempos y si quisieras
solo podrías haber establecido como límite de generación,
un límite de tiempo para todos los vehículos Eso también está perfectamente bien. Voy a seguir adelante y
crear uno y esto solo
va a ser un básico no dos D. Sólo
voy a llamar a esto Sp. ¿Queremos llamar al
patrocinador uno aquí? Sí, ve a patrocinar uno y esto
va a controlar mis mejores engendros aquí arriba y creo que voy a usar esto como su ubicación base también,
así que solo voy
a conseguir un buen lugar Y como esta es la camioneta, traeré de vuelta
hasta ahí y eso me
mostrará que el camión
genera en esta posición Estará
ahí mismo en mi engendro. Voy a crear
un nuevo guión. Esto solo va a
ser un script de spawn. Una vez más, vamos a usar
esto bastante bien en todos, todos nuestros tramos
que creamos aquí ¿Qué tenemos que
hacer? Bueno, tenemos que esperar una cantidad determinada de tiempo. Se va a eliminar este
común de ahí. Así como el de
aquí abajo en la línea nueve. Bien, entonces tenemos que
esperar una cantidad de tiempo determinada. Ese tiempo debería ser aleatorio entonces basado en ese engendro en nuestro caso vamos
a estar cargando el camión Voy a seguir adelante y hacer
variable aquí para mi camioneta. Eso va a ser
una precarga aquí. Señor quiere decir 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. Con esto, sólo
voy a mostrarles cuál es
el único vehículo de aquí, porque entonces
sólo tenemos que
entrar y podemos retocar esto Mostrarte cómo podemos exportar. Bueno, de esa manera
podemos 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. Lo que vamos a hacer, no
vamos a utilizar este proceso en absoluto. En realidad vamos a
crear una función llamada spawn vehicle Aquí, estamos donde necesitamos
un número aleatorio Sigamos adelante y
llamemos a tiempo tarde. Sólo llámalo tiempo de espera. Vamos a establecer un float y
vamos a establecer esto igual a, vamos a ver, un
entero aleatorio y no equivocados. Podríamos simplemente 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. Ya que quiero
verificar eso, solo para estar seguro,
voy a tener el control. Da click en Randy y eso
me va a abrir a esta página Y sí, lo hice correctamente
usando 20 por ciento. En este caso, un GC
nos
va a dar un tituentre 0.19% 100 nos va a dar 0-99 Y si
hacemos por ciento 100 más uno, eso nos daría un
número 1-100 En mi caso,
si hago tres, si hago tres, entonces vamos a tener
un tiempo de espera Voy a agregar uno a eso. Ahora tenemos que esperar al
menos 1 segundo, y entre los engendros de camiones
va a ser 12-3 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. Vamos a decir espera,
tenemos que conseguir el árbol
para poder hacer esto. 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 un árbol get crear Tim. Este va a ser
nuestro tiempo de espera aquí. Nuestro tiempo de espera aleatorio
que tenemos tiempo, estamos
fuera para esa señal de tiempo de espera que se
envía cuando termina nuestro Tim. El cual se
basará en un número aleatorio, una cantidad aleatoria de segundos. Bien, así que una vez hecho eso, podemos crear una instancia
de nuestro camión, de nuestro, diremos VT para vehículo VI
por instancia de vehículo igual, en este caso
vamos a decir camión pero deberíamos cambiarlo a vehículo Truck instanciate y luego lo agregaremos a
nuestro yo engendrador, un niño para agregarlo
a Y yo Muy bien, veamos cómo funciona esto ahora. No va a hacerlo porque
no lo llamamos. Vamos a entrar en nuestra función
listo aquí y nuestra
función de vehículo de generación que creamos Vamos a probarlo ahora. Ahí vamos. Entonces tuvimos otro
camión engendrado en, y no vamos
a tener más porque solo estamos
desove a Lo que podemos hacer a partir de ahí
es después de agregar niño, justo después de agregar el
camión a nuestra escena, solo
tenemos que llamarlo
recursivamente a sí mismo Va a provocar
un bucle infinito. Se va a mantener,
va a generar un vehículo y no hacer nada
y luego generar un Cuando se termina con ese
desove otro vehículo, está hecho engendrar un vehículo
y siempre va a ser un número aleatorio cada vez que tengamos que
esperar entre Si solo le echamos un
vistazo ahora, podemos ver que son bastante
consistentes en su espaciado. Y entonces ese fue un espaciado
mucho mayor. Tenemos un
espaciado muy cercano en esa. Parece que por ciento tres más uno podría ser el más corto
que queremos ir, pero ahí tienes.
Depende de ti. Eso es un montón de
cercanos juntos. Depende de ti si
quieres retocar eso un poco, juega con él en absoluto Y hasta ti cómo quieres
tenerlos espaciados ahí fuera. 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 vigilante está justo aquí, ya que el camión aquí está
a las 00 en su posición El camión aquí está a las 00
en su posición aquí. Y podemos ver que si
vamos al transporte 00, va a ser exactamente lo
mismo que es padre, que en este caso
va a ser patrocinador uno. Donde mi patrocinador uno aquí es que va a
engendrar en esa ubicación, justo fuera de la pantalla lo suficiente Ahora bien, ¿cómo podemos
cambiar este script para que se
ejecute
para poder usarlo en cualquiera de nuestros vehículos? Lo que tenemos que hacer para que esto funcione para todos
nuestros patrocinadores, que podamos tener el menor
trabajo posible aquí. Bueno, antes que nada, voy a cambiar mi nombre de variable de vehículo
camión porque
ahora
lo vamos a usar para más de un
vehículo, no solo el camión. Eso significa que vamos
a tener que cambiarlo aquí
abajo en nuestro engendro de camión instantáneo a instancia de
vehículo Queremos tener esta
variable expuesta dentro de nuestro inspector para poder
modificarla por nodo. Aquí vamos a hacer el
at firmado con exportación. Ahora, ¿qué vamos
a exportar aquí? Bueno, podríamos
dejarlo como tal. Y esto solo funcionará si
miramos dentro del inspector. Pero si quieres ser específico, esto se llama pack visto, así es como
exportarías esto. Entonces podríamos incluso simplemente
borrar la precarga aquí, solo
tenemos un letrero, nuestro vehículo y declarado
como un paquete visto. Ahora bien, si hacemos clic en nuestro
spawn y nuestra escena aquí, podemos simplemente abrir el vehículo y decir Nuevo ritmo o podemos cargar 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 soltarlo ahí. Si ejecutamos esto, veremos a nuestros camiones desovar
tal como deberían, tal como lo hacían antes Bien, perfecto. Si tuviéramos que agarrar,
digamos, veamos, Auto uno también va a
la izquierda, vamos a agarrar auto. Reemplaza esa escena ahí dentro,
y échale un vistazo. Ahí lo tenemos.
Lo conseguimos trabajando aquí con un vehículo diferente. Todo lo que tenemos que hacer es
cambiar esta. Eso es un montón de autos seguidos. Ahí otra vez, puedo bajar
a ti retocando las cosas, pero ahí las tienes. Voy a seguir adelante
y reemplazar este camión otra vez y
evitar que eso funcione. Ahora, puedo seguir adelante y
puedo hacer más vanos. Yo sí, hacemos historia
y desajuste. Eso es interesante. No estoy
haciendo nada con la historia. Yo sólo voy a usar el control D ahí. Y éste es apadrinado dos. Así que voy a bajar, asegurarme de que las filas que este va
a ser el auto tres. Voy a
buscar mi auto tres, escena y arrastrarlo dentro. Adelante, échale
un vistazo a eso. Ahí vamos. Tenemos nuestros
camiones y nuestro auto desove en nuestros diferentes
intervalos. Fantástico. Podemos hacer lo mismo
por nuestro fondo aquí. Duplicaré eso
una vez más. Y solo estoy
duplicando eso con
control D con spawner Y sólo voy a tirar eso aquí
abajo para este vehículo. Este es solo, voy a meter el auto aquí, echamos un vistazo, vemos que todos nuestros autos que
van a la izquierda están todos desovando correctamente Fantástico. Ahora
sólo tenemos que sacar a los dos a la derecha.
Lo mismo. Solo voy a
duplicar mi spawn aquí y simplemente arrastrarlo
hacia el lado izquierdo Y luego lo ajusto aquí. Nuestra posición que
debería ser buena. Y ese es auto mi auto Fc lo
duplicaría una
vez más y lo masificaría aquí
para mi auto dos escena. Bien, ahora debería
poder entrar aquí y eliminar todos estos autos y camiones
temporales. Si corremos debería estar
funcionando perfectamente bien, desovar todos nuestros
vehículos ahí dentro Ya lo tenemos. Podemos correr por ahí
con nuestra pequeña, sí, digamos,
pequeña ranita aquí Ahí lo tenemos ahora. Solo necesitamos una forma de
atravesar esta agua para poder entrar ahí de una manera para que nuestra pequeña
ranita sea aplasta. Creo que nos encargaremos
del aplastamiento. La próxima vez traeremos la muerte
del jugador aquí.
8. Muerte y reaparición de jugadores: Bien, entonces, ¿cómo
vamos a conseguir que nuestro pequeño ranita se ponga
si es atropellado por un auto Bueno, lo primero que
hice fue agregar una colisión en forma dos D para
cubrir el tamaño de mi ranita. Vamos a usar eso para
determinar
si te atropelló un
auto en combinación con el área dos D que
está en nuestros vehículos. Dentro de mi sprite animado, creé una nueva
animación llamada Muerte, y traje el Sprite de
rana muerta Ahora que tenemos que
también necesitamos en nuestro vehículo, vamos a tener que añadir
aquí una conexión de señal. Y el que vamos a
querer es cuerpo ingresado. Podríamos pasar por aquí y conectarlos uno
por uno en todos nuestros vehículos o podríamos ahorrar un poco de tiempo y conectarlo
a través del código. Creo que eso es lo que
voy a hacer aquí, justo así 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í, ese error es solo porque aún no
hemos creado
esa función. Vemos que agarramos nuestra zona dos D porque eso es lo que está
enviando la señal, el nombre de la señal que
es cuerpo ingresado, se
puede ver eso a la derecha. Y vamos a conectar esa señal con la función
connect. Entonces creamos lo que se llama un callable y pasamos en un nombre Y este nombre va a
ser el nombre de nuestra función a la
que queremos llamar. Golpe de jugador, golpe de rana. Puedes ir con eso es lo que
voy a llamar mío. Ahora todo lo que tenemos que hacer es
simplemente bajar y crear una nueva función para Funko Esta función también pasa
en una pieza de datos. Si echamos un
vistazo a la
señal ingresada al cuerpo aquí del lado
derecho, vemos que pasa en el cuerpo
y ese es un nodo dos D, va a ser un nodo dos
D de algún tipo. Tenemos que poner ese
argumento en el nodo dos D. Y así así eso ahora debería conectar la señal para todos
nuestros vehículos. Y para probar esto, podemos seguir
adelante e imprimir cuerpo. Y vamos a ver esto
algo que
también he hecho es que me
cambié de jugador. He cambiado el nombre de mi jugador de cuerpo de personaje TD para ser jugador Entonces 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 vehículo. Entonces probemos el carril uno. Sí. Carril dos, Si,
Carril tres, Correcto. Carril cuatro. Nuestro último carril, el
camión. Aquí vamos. Todos nuestros vehículos
están detectando cuando nos atropellan y
podemos ver que tenemos muchos vehículos
ahí con este tiempo, esa podría ser una buena cantidad. O tal vez quieras aumentar el mínimo de desove entre ellos. De nuevo, completamente hasta
ti y como quieras hacerlo, ve sobre el tuyo. Pero con eso, ahora todos nuestros
vehículos han sido
conectados y preparados para
aplaudir a nuestra ranita El motivo por el que te dije
leí mi personaje Body TD. Para que el jugador juegue, estoy usando una mayúscula Es
porque vamos a usar este nombre en el guión de nuestro vehículo. Vamos a decir si y luego pasando un resorte aquí, jugador. Así que queremos ver si esta cadena está dentro de otra cadena. Y la cadena que queremos
verificar es el nombre del cuerpo. Ahora recuerda cuerpo es cualquier objeto con el que
acabamos de colisionar, Cualquiera que sea el cuerpo que acaba de entrar en
nuestra zona de vehículos El nombre propiedad de la
misma
nos va a dar cualquiera que sea este nombre aquí, que en nuestro caso es jugador. Vea si nuestro nombre es jugador
en lugar del nombre del cuerpo. Podríamos simplemente hacer un doble igual si
quisiéramos ser un nombre exacto, depende completamente de ti. En este caso, no debería
afectar nada. Terminamos nuestra declaración
con nuestro colon. Desplázate a la siguiente línea. Ahora podemos ejecutar
nuestro trozo de código. ¿Qué queremos hacer
cuando nuestro jugador lo consiga? Bueno, vamos a llamar a la función de
muerte a nuestro jugador. Ahora bien, esta función aún
no existe, así que vamos a tener que ir
a crear eso. Pero muerte corporal si quieres tener un caso extra. Seguridad aquí. Se puede decir si cuerpo tiene método puede pasar en
la cadena de la muerte, entonces podemos golpear
la muerte corporal en una más. Podemos ir así y
esto evitará un error. Si fuéramos a seguir
adelante y ejecutar esto, ya ves que aquí no vamos
a tener ningún error. Porque básicamente estamos
diciendo, bien, estamos diciendo si chocamos
con el jugador aquí,
jugador, si ese cuerpo tiene
esta función, entonces llámalo En este momento no
tiene esa función. Si quisieras poner
esa capa extra de seguridad ahí
usando el método
has, ciertamente puedes hacerlo. Voy a entrar en mi
jugador ahora y crear esta función litera muerte. No estamos pasando ningún
argumento con ello. Qué va a pasar
cuando muera nuestro jugador. Pero necesitamos reproducir
nuestra animación de muerte para que podamos
corregir nuestro sprite . Sigamos
adelante y hagamos eso. Sprite animado dos, juega a la muerte. Echemos un vistazo a eso ahora. ¿Qué pasa cuando
nos atropellan un vehículo? ¿Una pobre ranita
cruzando la calle? Bien, entonces te vemos morir y luego nosotros uno o sprite
es el camino equivocado No está mirando
hacia arriba como debería. Corregamos eso. Después de eso, sólo
vamos a establecer su rotación. Y
ya lo hemos hecho. Cuando presionemos, agreguemos
eso a nuestra función de muerte. Aquí echamos un vistazo que
ahora debería estar actuando bien plano. Estamos en una posición increíble. 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, así no podemos traer al ser
y volvemos a estar vivos, tenemos una rana inmatable Muy bien, un tiempo de materia de prof. 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 triturada Se puede ver que a
pesar de que estamos muertos, todavía
estamos siendo
aplaudidos, sapos aplaudidos. Y vamos a seguir siendo
aplaudidos 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 Sigamos adelante y arreglemos
eso en nuestro jugador. Para ello,
vamos a conseguir
nuestra forma de colisión que creamos,
la forma de colisión dos D que
agregamos a nuestro jugador Y vamos a
usar algo
llamado diferido en él. Lo que esto esencialmente va
a hacer si echamos un vistazo, es llamar al método
en el objeto
durante el tiempo de inactividad
siempre devuelve null, no el resultado de los métodos. Ahí vas. Nuestra palabra clave aquí es lo llama
durante el tiempo de inactividad. Entonces va a llamar a
esto cada vez que pasemos, cuando tenga la siguiente
oportunidad que tenga, básicamente en lugar de
tratar de llamarlo ahora cuando tal vez no
pueda estampar funciones, te va a decir que
hagas eso antes de que llamemos a eso. No tienes que eliminarlos. Sólo voy a
mostrarte aquí el error. Si entramos aquí y me
voy deshabilitado es igual a verdad, vamos a ver que aquí nos vamos
a encontrar con un error. No impide que nuestro
juego funcione. A ver, nos socavaron
dos veces. Nuestra desactivación no
funciona para 12. Si entramos en nuestro depurador
y miramos los errores, eso nos va a decir que no
podemos cambiar el estado mientras que las consultas de
descarga
usan llamada diferida Entonces nos está
diciendo específicamente que usemos
eso, por eso estamos usando
llamada diferida aquí Llamada diferida
aquí va a ser una cadena de lo que queremos hacer En este caso, se va
a configurar deshabilitado. Ese discapacitado toma
un segundo argumento y esto va a
ser lo que dijimos, en nuestro caso, se va
a poner en verdad. Ahora bien, si miramos esto,
ese error va a desaparecer y sólo nos
vamos a aplaudir a una vez Ahí vas. Ya no va
a aparecer dentro de nuestro código si te
preocupa la llamada diferida Cuando nos atropellan
una gama cercana de vehículos como
cuando son como tres espalda con espalda, podemos
echar un vistazo aquí. Ya se
deshabilitó antes de que el siguiente vehículo
incluso nos toque. Bien, así que ahora realmente
podemos morir aquí. Lo que tenemos que ver es
cómo nos recuperamos. Derecha. Ahora solo somos una rana
inmatable porque no podemos
chocar con nada Entonces tenemos que arreglar
eso con nuestra muerte. Tenemos que tener algún
tipo de reaparecer. Tenemos
que asegurarnos de que sólo podemos movernos si estamos vivos. Trato un poco
más de lo previsto ahí. ¿Todo bien? Tenemos que hacer
un seguimiento de si nuestra rana ha sido o no
viva o está viva. Podemos hacer esto con una
sencilla función que solo comprueba si está vivo o si está muerto. En base a esa variable,
podemos o bien movernos o no podemos. Para ello, vamos
a utilizar un conjunto de estados, que va a ser una enumeración, como se puede ver aquí
del ejemplo aquí Podemos usar estas enumeraciones para
contener datos específicos. Supongo que se podría decir, es básicamente como una lista de opciones entre las que podemos seleccionar. Hace que sea más fácil a la
hora de revisar las cosas. Esto se puede ver cuando se
trata de la forma básica de una máquina de estado que
se utiliza para caracteres. Por ejemplo, si jugaste a Grand Theft Auto
Five por ejemplo. Tienes diferentes
controles cuando estás a pie
en comparación con cuando
estás en un vehículo. Eso es porque estás a pie. Los controles serían un estado. Nadar sería otro estado. En un automóvil sería un estado, en una aeronave sería
otro estado, etcétera Vamos a usar esto para saber cuándo estamos vivos y cuándo
nuestra ranita ha sido aplaudida. Para crear
esto, en lugar de usar la palabra clave Var, usamos enum El nombre de la enumeración, que dice va a
funcionar como una máquina de estado, sólo
voy a llamarlo estado Y luego en lugar de
usar iguales o dos puntos, simplemente saltamos
directamente a las llaves Tradicionalmente, por
lo que siempre he visto, estos siempre van
a estar en la capital, así que voy a tener un directo el drop a la siguiente línea, muerto. Estos son nuestros dos estados, vivo y muerto vivo
será el estado predeterminado aquí. Vamos a crear
una nueva variable llamada current state. Sólo vamos a declarar esto como un estado, uno
de nuestros estados aquí. Bien, ahora
con nuestro movimiento, todo lo que tenemos que hacer es
verificar si el estado actual es igual a dos
iguales estado vivo. Y luego tabular nuestro movimiento. Ahora sólo podemos movernos
cuando estamos vivos. Ahora cuando morimos,
tenemos que decirle que nuestro estado actual ahora se está
poniendo a igual muerto. Si ejecutamos esto ahora, no
deberíamos poder movernos. Una vez que morimos y nos
aplastan, ahí tienes. Nos
aplastaron todos y no podemos movernos. Ahora todo lo que nos queda
es que sigamos
adelante y creamos el reaparecer Vamos a crear funciones de Respawn una vez que tengamos vidas aquí Aquí es donde
vamos a comprobar si al jugador le quedan vidas. esto lo vamos a llamar. Bien, vamos con ¿cómo respondemos? 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. Necesitamos cambiar nuestra posición, autoposición y
tenemos que restablecerla a donde
va a estar nuestra posición inicial en este momento. Eso es 169.2 33. Sólo voy a
copiar este valor muy rápido dentro de mi
escena principal. Voy a agregar a. ¿
Ves a qué le cambiaron el nombre? Aquí. Aquí vamos. Se le cambió el nombre para marcar dos D, y sólo dame 1 segundo Te lo voy a levantar. Ahí vas. Entonces
vamos a usar un marcador dos D. Voy a establecer
su transformación por ahora. Yo sólo voy a
pegar el valor en, voy a ponerlo en
la misma posición en la
que empieza nuestra rana. Voy a llamar a esta ubicación de generación de
jugadores. Ahora, cuando respondemos podemos a la posición de
uno mismo punto es igual a nuestra. Jugador que no va
a llenar para nosotros. Solo voy a tener que escribirlo, posición de ubicación de desove del
jugador Esto debería suceder de manera
bastante instantánea. Entonces sigamos
adelante y subamos a nuestro proceso aquí vamos a
formar otro cheque, LF estado actual es
igual a estado muerto. Podemos llamar repawn. Esto debería aparecer justo atrás en el principio
donde empezamos Si te matan,
parece que tenemos lo que es. Oh, eso es justo. Ubicación de aparición de jugadores, No
podemos acceder
a eso porque
en realidad tenemos que subir al árbol para recordar quién es nuestro jugador, y el jugador
no tiene acceso directo a esta ubicación de jugadores Aquí tenemos que subir, seguir esta línea y subir
uno y luego eso
nos lleva a este nodo dos D. Y entonces no hay dos D entonces tiene
acceso a un engendro de jugadores Tenemos que subir en la
forma en que podemos hacer esto son algunas formas en que podemos seguir adelante
y hacer obtener nodo padre get. Este nodo get es solo una forma larga de
escribir ese signo de dólar. Entonces dentro habría una cadena o la ruta directamente
a PlayersPalocation Alternativamente, para mantener
esto un poco corto, solo
podemos hacer get node. Podemos pasar en las cosas. Podemos decir 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 que como
mucho podemos decir hacer esto con get parent player
spawn location Bien, eso debería arreglar eso. Ahora cuando nos aplauden, ves que volvemos enseguida
al principio en Todavía no podemos movernos porque
sí tenemos que fijar nuestro estado
actual. Recuerden que no podemos mover
el estado actual igual al estado vivo. Y no sólo eso,
tenemos que hacer que
nuestra animación vuelva
a ser nuestros ídolos Conseguiremos que nuestro sprite animado interprete
a nuestro sprite ídolo. Ponlo de nuevo a la normalidad
cuando lo ejecutemos. Ahora realmente no podemos decir cuándo conseguimos responder. Lo que voy a hacer antes
que nada es que voy a usar calder y ponerle eso después de todo lo demás porque noto que nos están
aplaudiendo dos veces Entonces ya veremos si solo moviendo
esa línea, lo arreglaremos. No lo hace. Bien, no es un problema. Sólo tendremos que
tener un pequeño temporizador, por ejemplo, después. Lo cual está bien. Bien, entonces
veamos, ¿qué necesitábamos? Nuestro símbolo muerto no está funcionando muy bien
porque morimos. Estamos reapareados instantáneamente. No podemos decir nada de lo
que está pasando. Lo que vamos a hacer es
dentro de esta reaparición,
espera, hacemos lo que hicimos antes de usar get tree
y crear ese temporizador Lo pondremos a 1 segundo. Eso se siente como mucho tiempo. Y la señal de tiempo de espera
1 segundo puede parecer mucho tiempo aquí en un
viejo juego como este split. Y luego respondemos. Impresionante, Ahora estamos siendo
aplaudidos varias veces ahí, lo cual es un poco desafortunado Yo sólo 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 pruebas 0.5 podemos salirnos con la suya. Voy a probar 0.2
Puedo salirme con la suya 0.2
Es posible que incluso podamos salirnos con la suya con 0.1 teniendo ese retraso realmente
corto aquí. Ahí vamos. Ahora tenemos ese 1 segundo
que nuestra imagen de muerte va a estar en la pantalla de nuestros pobres bronquios pequeños y
destapados Y entonces sucede el resp. Impresionante. Ahora bien, si quisieras,
podrías establecer este número en una variable aquí arriba para responder
Tim, o responder el tiempo. 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 eso Ahora bien, si te das cuenta aquí, cuando iba si
me siento aquí mismo, cuando iba si
me siento aquí mismo, podría que el
auto
me aplaste debajo sin multa, pero sí me aplasta ahí
cuando giré hacia 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 simplemente jugar con la posición y
eso solo un poco más, pero sin problemas. Pero eso lo hará por esto. Ahora tenemos nuestro sistema de muerte
y reaparición de jugadores sistema de muerte
y reaparición No tenemos ninguna vida
en estos momentos, pero llegaremos a esas vidas
cuando lleguemos a nuestra sección. Pero con ese cuidado, había mucha información
que repasamos. Espero que estés listo
para pasar a la siguiente sección del juego. Eso es.
9. Muerte por agua: Bien, así que hagámoslo para que cuando saltemos
al agua, muramos y tengamos que responder. Bueno, para hacer esto, podríamos hacer esto de varias maneras diferentes, pero la forma más fácil entonces, voy a decir que
hagamos esto, ya que estamos usando un mapa de mosaico, es aprovechar eso y usar
el mapa
de azulejos para decirnos en qué
azulejo estamos parados. Si estamos parados en el
agua, entonces moriremos. Si no, estaremos
bien para hacer esto. Vamos a entrar en
nuestro script de capa. Cerrar por el otro ya que
entraremos en nuestro script de jugador, lo que vamos a necesitar es una nueva variable para mantener
nuestro mapa de mosaico aquí. Ahora no tenemos que
poner esto en la parte superior, pero no tenemos que
configurarlo constantemente en nuestra función. Vamos a hacer o bien todos vamos a conseguir esto y
vamos a usar la
palabra clave on ready. Todo lo que significa es que la
variable que vamos a hacer sería la misma
que si la pusiéramos aquí en la lista. Si dijéramos por ejemplo el
número es igual a diez, sería
lo mismo que si creáramos número y luego lo pusiéramos en diez aquí abajo
dentro del bloque listo. Eso está todo listo
significa que esto es útil para cuando
queremos obtener nodos específicos que están
dentro de nuestra escena En nuestro ejemplo, queremos
ponernos en contacto con ese mapa de mosaico. Aquí vamos a
hacer var tile map y vamos a establecer ese nodo
igual a todavía padre. Por supuesto que actualmente se
acaba de llamar mapa de mosaico. Ahora recuerda lo que dije creo que fue en
el último video. En lugar de usar
get parent aquí, podríamos
acortar esto en nuestro get No, solo para hacer y tener el mismo
equivalente de get parent Pero entonces voy
a hacer eso solo para que las cosas
vuelvan a ser
un poco más cortas. Bien, así que ahora
tenemos nuestro mapa de azulejos. Ahora lo que queremos
hacer es que queremos
comprobar en qué baldosa
estamos parados. Voy a seguir adelante y
crear una nueva función aquí. Voy a llamar a
esta identificación de celda de verificación. Eso
nos va a dar un giro vacío. 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 mapa de barras Pausa, que se establecerá
en nuestro mapa de mosaico. Local para mapear. Y entonces esto va a
tomar una posición, y esa posición sólo
va a ser la posición de nuestro jugador. Ahora local para mapear solo nos
va a devolver una posición que
será la posición de la celda en la
que estamos parados. Las celdas serían cada uno
de estos cuadrados anaranjados. Ya que estamos parados aquí inmediatamente cuando comienza
el juego, nos diría esta celda de aquí, la ubicación de esta celda. Entonces la siguiente variable que
vamos a crear
va básicamente a
entrar ahí y decir, bien, eso está hecho con este
mosaico. Ahora, ¿qué es esa identificación? Y nos va a
devolver uno para obtener ese ID, vamos a crear una variable aquí. Esto solo va
a ser mapa de mosaico. Mapa de azulejos, Sí, vender ID de origen. Eso sólo va a
tomar dos argumentos. El primero va
a ser la capa en la que está la capa cero. El segundo va a
ser la posición que ya obtuvimos de nuestro
mapa, una variable aquí. Ahora bien, esta identificación ahora debería ser
lo que sea en lo que estemos parados. Si entramos e
imprimimos esta identificación, solo
ejecutamos cheque, vendemos ID. Dentro de nuestro proceso, vemos que uno
se imprime inmediatamente para que
la mediana
se imprima para la carretera y tres para el agua. Aquellos que ejecutamos esto, podemos echar
un vistazo hacia abajo en la salida, vemos que uno se
imprime para nuestra mediana, dos para nuestro camino. Si puedo llegar
al agua aquí, vamos a tener uno
para la mediana otra vez. Y luego tres cuando
golpeamos el agua. Ahí vamos. Ahora
sabemos que esto está funcionando perfectamente aunque vengamos todo el camino
hasta aquí porque estamos comprobados para la capa cero, vamos a tres
va a ser nuestra agua. Pues eso lo sabemos. Ahora lo que
vamos a hacer es que ahora podemos I D es igual a tres y aquí es donde
mataríamos a nuestro jugador. Entonces entra, llama aquí a nuestra función de
muerte. Ahora cuando tocamos el
agua, debemos morir. Ahí vamos. Ahora podemos morir cuando nuestro jugador
toca el agua. Y esperar a que reaparecieran. Ahora bien esto es un, podría ser un poco agotador cuando lo
estamos comprobando
constantemente así No importa cuál sea la
siguiente mejor ubicación para llamar aquí
solo cuando estemos vivos. Pero aún mejor es que podemos llamarlo cada vez que realmente
nos movemos. Entonces solo voy a agregar esto
al fondo de todos
mis movimientos aquí. Ahora cuando me muevo en cualquier dirección es la única vez que
vamos a revisar. En lugar de enviar spam hasta el momento. Bien, salta arriba, muerto. Esperar respuesta.
Ahora volvemos a movernos. Bien, así que ahora somos
capaces de ahogar nuestra rana en el agua Y podemos dejar que nuestro
ranita sea destrozado por un auto. Bien, entonces tenemos
todos nuestros chequeos de muertes. Ahora todo lo que nos queda por
hacer es que nuestras plataformas
funcionen y luego obtener nuestros pequeños puntos de viento al final
saltando a las ubicaciones correctas. Y luego configuramos nuestro
headup display con nuestra partitura. Entonces creo que va a estar a punto de terminar. No creo que nos
falte nada después de eso. Podría estar equivocado. Pero ahí lo tienes. Ahora podemos redondear 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. Los veré chicos
en el siguiente video.
10. Plataformas acuáticas: Bien, sigamos
adelante y
configuremos nuestra plataforma. Una vez que tengamos nuestra
plataforma instalada, lo único que podemos hacer o
lo único que nos
quedará para estas plataformas
es básicamente simplemente intercambiar los sprites y hacerlos
más y más cortos
a través de
mi plataforma aquí Yo sólo voy con sprites
establecidos aquí que tenemos. Usando el registro para este ejemplo, el final medio y
el otro extremo, end middle y start. Eso significa que estoy
usando tres sprites aquí con mi escena principal La raíz de mi escena aquí es un cuerpo de personaje que
he renombrado plataforma Podría cambiarle el nombre
para iniciar sesión si quisiera. Eso tiene un área dos D con forma de colisión
que cubre mi tronco. Aquí he conectado tanto el cuerpo entró como la señal
de salida del cuerpo 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 agregarle
todo a ella. Con la forma en que
vamos a hacer esto, también
vamos a
estar agregando cosas a nuestro guión también. La mayor parte de este trabajo estará realidad en el guión de nuestros
jugadores. Por el momento, vayamos
al guión de nuestros jugadores y agreguemos un par de variables
que vamos a usar. primero va
a ser plataforma, y eso va a ser un lean. Y eso solo va a
decir o dejar que nuestra agua sepa si estamos o no a
salvo porque estamos en una plataforma o si
no estamos en una plataforma. Llamada la
notificación de defunción. Vamos a conseguir
nuestra plataforma
o plataforma actual y ese es un cuerpo de personaje dos
D que pasamos en. Entonces eventualmente nos pondremos a ello. Por ahora solo
envíalo para saber que necesita una dirección de plataforma que es una falla entera que
vamos a poner a cero
aunque no debería importar. 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 bajarnos a nuestra identificación de celular de cheques. Vamos a agregar
a nuestra declaración, así que vamos a decir ID es igual a tres plataforma es
igual a falso. De esa manera decimos si estamos en el agua y
no estamos en una plataforma, entonces mataremos al jugador. Tenemos nuestras
condiciones establecidas ahí. Veamos por nuestro jugador. También vamos a comprobar, mientras estemos vivos, si nuestra plataforma actual no
es igual a nula, que sólo es igual a ella. Por ahora será un
objeto que se le asigne. Una vez que nuestro jugador
se encuentra en nuestro registro, digamos que la plataforma actual no
es igual a nula, entonces solo podemos seguir adelante y nuestra posición más es igual a 0. Entonces vamos a
hacer una pequeña misa. 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 tiempos 16. Vamos a usar
esto ya sea como más uno o uno negativo, tal como lo hicimos
con nuestros vehículos. Y multiplicar por 16. O vamos a estar moviendo 16 a la izquierda o
16 a la derecha. Y vamos a estar
haciendo esto con el tiempo, así que vamos a
multiplicar eso por delta. De esta manera no estamos
basados en fotogramas estaban más basados en el tiempo. Entonces, lo único que nos queda
por hacer es
establecer la dirección de nuestra plataforma. Y podemos hacer eso a través de una
función que queramos ir, Sí, vamos por una dirección establecida. Y eso va a tomar un argumento de un entero no devuelve nada. Todo esto va a hacer
es que va a establecer la dirección de
nuestra plataforma igual a. Bien, así que ahora podemos dirigirnos a
nuestro script de plataforma. No necesitamos este bloque listo, podemos eliminarlo
dentro de nuestro proceso. Queremos que nuestro registro, en mi caso, siga en movimiento. Voy a seguir adelante
y hacer posición más es igual a 16 veces delta. Eso va a moverlo
constantemente hacia la derecha cuando entremos, cuando nuestro jugador entre al área. Entonces vamos a establecer la
plataforma aquí en true. Y vamos a configurar
nuestra plataforma actual a nuestro registro aquí. Mi plataforma aquí.
Voy a decir plataforma
corporal y
ponerla en verdad. Ahora estamos en la plataforma. Cuerpo Legos Curva. Plataforma. Sí. Plataforma actual equivale a L. Cuando el cuerpo salió,
vamos a hacer lo contrario Así que vamos a
establecer en lugar de verdadero, lo
pondremos
en falso en lugar de vender. Ponlo a no. Bien, entonces lo que estamos haciendo hasta ahora
es cuando nuestro frente salta sobre el tronco que actualmente se mueve a la derecha
en todo momento. Mientras está haciendo
ese reinicio, nuestro registro actualmente está moviendo el derecho por 16 a lo largo del
tiempo y no basado en cerebros. Ahora cuando nuestro jugador entre al área de nuestra plataforma aquí en la que
puedan pararse, vamos a establecer la
variable de plataforma en nuestro jugador a true de esa manera cuando revisemos el ID de celda para ver
si estamos parados en plataforma de
agua será cierto y nuestro jugador
no será asesinado. Entonces estamos configurando la variable
de plataforma
curva de nuestro jugador para la
plataforma actual igual a self, el cuerpo del personaje aquí. Eso es conmovedor,
representando nuestra plataforma. En base a eso, podremos mover
a nuestro personaje aquí. La plataforma actual
no es igual a nula. Si estamos en una plataforma actual, entonces vamos
a mover nuestra rana en la misma dirección,
a la misma velocidad. Lo último que nos
queda es
llamar realmente a esta función que
creamos, Establecer dirección. Cuerpo, establecer dirección,
eso toma un entero, que luego nos
moveremos hacia la derecha, Usaremos uno positivo. 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, oh, terminamos muriendo. Podría ser necesario
actualizar este piso. Un momento ahí, uno
nuevo, de vuelta. Muévete ahí abajo.
Dale otra oportunidad a papá. Bien, me estoy muriendo. Entonces mis señales podrían necesitar ser reconectadas Voy a desconectar eso Y reconecté y haré lo
mismo con mi salida Desconectar y
volver a conectar la salida de mi cuerpo y ya veremos si
ese fue el problema Bien. Oye, creo que
veo lo que me perdí aquí y estamos recibiendo esta información un
poco demasiado rápido. Entonces antes de que tengamos
nuestra declaración F dentro de nuestro check cell ID, voy a usar una wait
y hacer lo que hicimos antes con get
tree create timer. Y sólo vamos a
tener una pequeña pose ahí de 0.1 y obtener esa señal de
tiempo de espera. Eso debería arreglar eso para nosotros. Aquí vamos. Ahora podemos saltar a nuestro pequeño
tronco y estamos bien. Podemos saltar de un
lado a otro y estar bien y nos estamos moviendo y en
cuanto saltemos, estamos bien para correr de regreso
al otro lado si lo
queremos todavía. Si saltamos al agua, seguimos adelante y morimos. Bien, ¿cómo podemos
hacer que este guión sea un poco más, supongo. Un modular en cierto modo, 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 Así como supongo establecer nuestra
dirección para que podamos tener algunos
moviéndose a la 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 que a cero. Por defecto, tenemos la palabra
barra ahí dentro. Ahí vamos. Entonces ahora quiero
ir a mi plataforma. Puedo cambiar esto a
uno en lugar de cero. Podemos tomar dirección y pasar eso aquí cuando llamamos a
set direction plus equals. Y podríamos hacer
lo mismo aquí donde
tenemos dirección tiempos 16. Podemos seguir adelante y
verificar y asegurarnos de que todo siga funcionando.
No hemos roto nada. Nuestro candado sigue moviéndose. Podemos saltar sobre él y Bien, así que aún no hemos roto
nada. Eso es genial. 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 cuando creamos un sonderal
igual que hicimos con nuestros camiones Bien, enseguida vuelvo. ¿Por qué crear un par de estos? Bien, así que he seguido
adelante y he hecho tortugas
largas también y solo tiré algunas
aquí en la escena Y como veis,
sigue adelante en este tronco, salta a las siguientes
tortugas, Siguiente, salta a la derecha,
arriba sobre mi tortuga, salta sobre el tronco,
y estoy listo para
saltar a lo que
sería nuestro espacio eólico Bien, nuestras plataformas
ciertamente están funcionando bien. Ahora es genial. Quiero saber que sí
agregué peso para 0.1 en el cuerpo ingresado antes de
cambiar la plataforma en nuestro script de plataforma. Yo sí quiero tomar
nota de eso ahora. Todo lo que necesitamos ahora son nuestros patrocinadores. Bien, así que sigamos
adelante y creemos esos. vamos a hacer efectivamente como
los de nuestros
camiones aquí. Vamos a seguir adelante
y conseguirnos o sumar un No dos D, lo
llamamos patrocinador de plataforma. Seguiremos adelante y
empezaremos a alinear estos. Entonces tengo uno ahí, tengo uno ahí, tengo
uno, parece que está ahí. Bien. Esa mirada incluso hace eso. En realidad es un lugar un poco
raro. Sí, ve ahí. Y entonces necesitamos un par para el
otro lado, para nuestros obstáculos, tomarlo y uno
por hora Todo bien. Entonces esos parecen algunos
buenos puntos de desove. Estos un poco cercanos
atrás. Esos se levantan un poco. Vamos a tener algo
parecido a nuestro desove de camiones. Voy a seguir adelante
y sólo copiar nuestra camioneta. A ver, ¿esos van a ser del mismo
nombre diferente, el vehículo? Bastante.
Probablemente podríamos salirnos con la suya con solo usar nuestro guión para
camiones aquí. Nuestras plataformas
se llamarían vehículo, pero creo que quiero
hacer unas distintas 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 dar click en
mi plataforma Spon agregar un nuevo script aquí Voy a seguir adelante y sólo pegaré
en el guión del vehículo. Voy a llamar a estas plataformas. Cambiaremos a plataforma. Do instanciate for
platform instance self at child I wait time, mira aquí es donde va a entrar el
problema ver, vamos a ir 1-2 y a eso le
agregaremos tres. Veremos cómo funciona eso. Entonces cambiaremos esto
de vehículo de generación
a plataforma de desove Esta de aquí va a ser nuestra escena de plataforma de escenas de registro. El siguiente otra vez,
va a ver, seguir
adelante y simplemente
arrastrar mi guión hacia arriba y adjuntarlos a todas
mis plataformas. Y dos es mi escena de registro, tres es la plataforma de registro. Y entonces 45 será mi. Bien, así que si ahora nos
deshacemos de estas plataformas, mueve a mi jugador para que quede
debajo de la parte inferior para que la C pueda sentarse arriba. A ver si estos funcionan. Si,
cruza todo el camino, ahí están mis tortugas. 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. 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. Bien, así que
probemos más diez. Esto nos dará una
variación de 11.12 segundos. Oh, ¿por qué me metí
entre estos autos? 11.12 segundos podría ser una brecha demasiado
pequeña en este caso. En este punto sólo estamos para
ver qué encaja mejor aquí, tal vez intentemos 5.6 Voy a saltar todo el camino a través y veremos cómo es este
spread. 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 estar seguro de que
estos no van a ser completamente
consistentes todo el tiempo y no parece que lo
sean, lo cual es genial. Alternativamente, si
querías codificar el un poco más o
hacerlos diferencia, específicamente ven aquí
y haz tiempo de espera aquí arriba Y lo haremos un
flotador no un piso. Alternativamente,
podrías hacerlo
aquí arriba y eliminar esta
línea por completo. Si querías tener
una cantidad específica, querías tener control
sobre la cantidad exacta de tiempo que esperaste
por respondedor. Puedes hacerlo de esa manera, pero voy a seguir con
este poco de aleatorización aquí ¿Sabes qué?
Voy a ir diez ahí. Creo que eso lo hará por esto. Porque ahora
tenemos a nuestros respondedores, tenemos nuestras plataformas Todo parece estar listo y funcionando. Podríamos
cruzarlo. 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 por ahora me gustan estos
números, al menos. Bien, eso es todo. Terminamos con nuestro
columpio de plataforma y montándolos. A continuación cubriremos el
área donde saltamos a nuestra zona de viento y ahí desovamos en
nuestra ranita hogareña Bien, los
veré en la próxima.
11. El espacio para ganar: 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 derecha dos D que solo tiene mi
rana casera aquí como textura. Está desactivado o visible
está deshabilitado por defecto. Puedes hacerlo haciendo clic en
el pequeño globo ocular aquí. El espacio de viento tiene un guión así
como una
señal de cuerpo ingresada conectada a él
para el guión simplemente, todo lo que vamos a hacer es
tener vino corporal puesto en verdad. Zona de viento es una nueva variable que se ha agregado
al cuerpo del jugador. El estado actual se
establece en estado corporal. Cuando tenemos un nuevo
estado agregado aquí, ahora
tenemos un muerto vivo. Y cuando entonces todo lo que
hacemos es obtener nuestro sprite dos D, obtener la propiedad visible, establecerla en true en nuestro reproductor para evitar cualquier problema
y arreglar un pequeño bug Saqué justo aquí, LF estado actual es
igual a estado muerto. Pongo nuestro peso, nuestro 1 segundo de peso
aquí y lo saqué de la función de repawn que
solía estar aquí en la parte superior Simplemente lo
saqué y lo trasladé
ahí arriba a nuestro estado. Eso debería ser todo
lo que tenemos que hacer ahora. Podemos ir a nuestra
espalda a nuestra escena principal e importar nuestra
zona de viento, nuestro espacio eólico. Sólo se lo mordió ahí dentro. En cada una de nuestras pequeñas ranuras. Es posible que tengas que hacer algunas
pruebas para asegurarte que tu rana
no la esté tocando prematuramente para activar el viento Aquí tengo la mía cubriendo todas mis áreas. Si quieres verificar
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 de mostrar formas de colisión
visibles si lo
haces cuando lo ejecutas,
verás que aquí podemos ver todas
nuestras pequeñas cajas de colisión para todo. Ahí vamos. Si lo estás activando
accidentalmente o podrías
estarlo, adelante y habilitarlo Échale un vistazo tú mismo. Verás una vez
que hagamos nuestro camino, deberíamos tener otro registro. Ahí está. Podemos activar nuestro viento Aviso que no nos quedamos muertos impresos en nuestra
consola ahí abajo. Cuando nuestro estado es
nuestro estado actual, el estado gana, respondemos y luego ponemos a la
zona de viento de nuevo a caídas. Ahora también estamos usando zona de viento. Abajo en nuestra identificación celular, agregamos otra condición aquí. Si ID es igual a tres
y plataforma es falsa, si estamos en el
agua, no estamos en la plataforma y nuestra zona de
viento no es cierta. O se puede decir que
zona de viento es igual a falsa, esa sería otra
forma de escribirla. Entonces podemos llamar a la muerte. 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, nuestro
estado 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, ya sea que dejes
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 configurar esto en, no lo
sé,
diremos 5 segundos. Entonces podemos entrar, o mejor dicho
podemos conectar su señal de tiempo de
espera a nuestro
espacio de viento en tiempo de espera, estableceremos nuestro sprite
dos D visible a falso Justo después de convertirlo en verdad, podemos comenzar el tiempo. Podemos poner en marcha el temporizador. Si tuviéramos que hacerlo de esta manera, que depende de ti, 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
empieza a desovar , así puedo subirme aquí Esperamos a cruzar. Si usamos la rana Tim er aquí, nuestra ranita hogareña va
a aparecer para el viento. Después después de unos segundos, y va a desaparecer. Entonces lo ves ahí arriba, y
ahí va, desaparece. Si quisieras desaparecer
así , así es como
lo harías. Simplemente podemos agregar ese
temporizador a su espacio de viento. Ponlo en el inspector a
cuánto tiempo quieres que sea. Inicie el temporizador después de
configurar el sprite para que sea visible cuando el temporizador se
agote, conéctelo a caídas Bien, eso
lo hará por nuestro espacio eólico. Y solo tenemos que echar un vistazo
a
nuestro headup display
o hud o pegajoso, y mirar a crear
un Bien, eso es, y te veré
en la siguiente. Casi terminamos de crearnos
un clon Frogger
12. Solución de fugas de memoria: Bien, 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. Tenemos esto desde dos puntos
técnicamente fueron alrededor de diez. Pero echemos un vistazo, si seguimos adelante y
jugamos a este juego, y solo voy a
sacar esto aquí, voy a tener que
deslizar a los chicos plateados. Se puede ver todo desove
fuera de la pantalla y vienen, solo mira que esos autos van, y las plataformas
arriba harán lo mismo Van a seguir adelante y
van a ir para siempre. Nunca van a parar. Esto es lo que se
llama una fuga de memoria. Todos, lo dejaré ahí
justo para que
podamos verlo más fácilmente. Pero si hago una pausa en esto y hago clic en la pestaña remota aquí en la
parte superior de nuestro árbol de escenas, que solo está disponible cuando
el programa se está ejecutando. Golpeamos a distancia, echemos un
vistazo a todos estos autos
solo en un generador que aún existe aunque
probablemente no necesitemos a
la mayoría de ellos Lo mismo con todos
los demás reproductores. Nuestra plataforma, nuestros generadores
de plataformas no son tan malos porque tienen una tasa de generación mucho más lenta que los Pero van a seguir para siempre y nunca
van a desaparecer. Nunca van a
liberarse de la memoria. Eventualmente tendrás
este pequeño juego que podría tomar 128 gigs de
Ram solo para seguir jugando Tomaría mucho tiempo, pero
eventualmente todo sumaría. Arreglemos esto crucial, supongo que lo llamamos bug. Es muy sencillo para nosotros hacerlo. Sólo tenemos que poner una
declaración if dentro
de ambos scripts. Ahora 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, un conjunto de números que
voy a usar aquí. Lo que vamos a
hacer es ahora mismo que estoy dentro del script de mi plataforma y dentro del proceso aquí, solo
voy a comprobar
si la posición global, ahora la diferencia
aquí entre y posición
global es si
entramos aquí a nuestra plataforma, 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, esta va a estar a cargo de nuestra posición local
que vemos en pantalla, independientemente de quién sea el padre de familia. Por ejemplo, si echamos un
vistazo a nuestro espacio aquí, podemos ver que su posición en nuestra pantalla principal aquí es a las 24.45 Esto va a ser más un espacio global, mientras que si entramos aquí, podemos ver nuestro espacio eólico,
nuestra posición local
aquí es a las 00 Se trata de dos números diferentes. Ojalá, eso tiene
sentido para usted cuanto a por qué estamos usando la posición
global aquí. Por supuesto, queremos
la propiedad X porque eso va a
controlar nuestra izquierda y derecha. Si nuestra X es mayor 436, eso es alrededor de 100 píxeles
fuera de la pantalla a la derecha, en función de dónde están
nuestros patrocinadores. Esto sigue dando suficiente
espacio para ir más allá de eso. Si nuestra posición global
x es mayor que 4,436 o la posición global x es
menor que 100 negativa, vamos a unos 100 píxeles fuera de la pantalla en dirección izquierda
y derecha Si alguno de esos es cierto, todo lo que vamos a
hacer es autoliberarnos. Muy bien, entonces ahora deberíamos
ver el carácter de nuestras plataformas, deshabilitándonos entre sí o borrándonos de nuestra memoria Esta es sólo una
solución potencial para
algo así. Otra solución si,
dependiendo de tu juego, por ejemplo, si estás haciendo algo
así como un infierno de bala, vas
a querer ir con algo llamado pooling de objetos Y podemos hablar de
pooling de objetos en video futuro. Bien, así que
voy a bajar a mi lugar aquí, a mis vehículos. Veamos, cuál
estamos buscando aquí En nuestro guión de vehículo. Ahí vamos. Así que no en nuestro
lugar en un guión de vehículo. Y lo mismo asignado
al proceso va a
pegar en el mismo código. Si la posición de subrayado global hace mayor que 436 o la posición de
subrayado global x, es menor que
negativa 100 self Ahora bien, si sigo adelante y ejecuto esto, y estamos en la
escena correcta, nuestra escena principal aquí. Voy a seguir adelante y
pausar esto muy rápido. Construye nuestro árbol remoto, podemos echar un vistazo a nuestros reproductores regulares aquí donde van a estar
los autos Aquí está mi ventana de juego
para sacar eso. Si sigo adelante y dejo que esto juegue. Bien, tenemos
algunos autos desove
netos aquí. Esto lo podemos ver aquí. Sólo voy a extender la
ventana a la derecha. Tengo un error ahí. Parezco haber
agarrado a Gato en su lugar. Ahí vas. 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. Ahora todos nuestros objetos están siendo
manejados y solo podemos tener
potencialmente tantos o tantos en nuestra escena
en un momento dado. Se puede ver las plataformas
en la parte superior haciendo lo mismo, pasando
las mismas cosas fuera del lado izquierdo de la proyección. Lo que no podemos ver ahora mismo. Ahí vamos con
esa simple, técnicamente dos líneas de código. Tenemos nuestra memoria, nuestra memoria, solo dejando mi
mente ahora mismo, fuga de memoria. Es gracioso ya que
estamos hablando memoria, pero ahí tienes. Con eso, hemos solucionado
nuestro problema de fuga de memoria. Te voy a
mostrar un problema aquí. En realidad no es un problema, sino solo para mostrarte
un ejemplo más, aquí vamos a la plataforma. Si usamos posición en lugar
de la posición global, vas a ver
un ejemplo aquí. Si echamos un vistazo,
vas a ver, sobre todo con las tortugas, vas a ver a las tortugas desovar justo por
esta zona de aquí ¿Todo bien? Míralos. Están
entrando cuando estamos usando esa
posición local, ahí tienes. Ya ves que están
desapareciendo demasiado pronto. Apenas llegan a la pantalla
y desaparecen. Se acercan por aquí
y se han ido. Es por ello que tenemos que
usar la posición global. Entonces solo quería
demostrarlo un poco más visualmente para ti. Ahí, no volver a dibujar Q libre, igual que dije, destruye
por completo el objeto y
lo saca de Bien, así que ahí tienes. Ahí está cómo podemos
arreglar esa memoria. Bien, a continuación
pasaremos al marcador y al hud, sumando vidas de jugadores
y todo eso ahí dentro
13. Sistema de puntuación: Muy bien, en el video de hoy, vamos a seguir adelante
y sumar el sistema de puntos. Como puedes ver aquí, estas
son las reglas por las que vamos. Diez puntos por cada paso, 50 puntos por cada
prog que entra y 1,000 puntos por cada
vez que obtenemos cinco procs Eso es lo que debemos tener
en cuenta cuando hacemos esto. Voy a comenzar con la
creación de un script global, también conocido como singleton
o auto load Para eso, sólo
voy a hacer click derecho en mi sistema de archivos y
crear un nuevo script. Y voy a llamar a esto,
solo voy a mantenerlo
simple y volverme global. Para activar esto, subimos a
la configuración de nuestro proyecto. A ver, ¿tenemos eso
capturado ahora mismo? Nosotros lo hacemos. Vamos, puede que sea un
poco grande. Ahí vamos. Y entramos en el autolite, nuestro guión 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 nuestro código ahora mismo, creo que ahí es donde
vamos a mantener nuestra partitura. Ahí es donde vamos
a mantener nuestro puntaje. Si cerramos eso, ya
podemos abrir nuestro guión global haciendo doble clic en él para
darle un ejemplo. Aquí podemos bajar aquí, podemos crear otra función
aquí llamada print score. Tengo una variable
aquí arriba llamada score. Es un número entero que
dice que tienes 50. El objetivo de
esta función es simplemente imprimir la escuela
con que sea global. Podría entrar aquí en el guión de mis
jugadores. Yo sólo podría escribir ese nombre
que teníamos para el que me fui, que se llamaba global
para la capital. Entonces podríamos usar la función que acabamos de crear, imprimir partitura. Entonces cuando ejecutemos esto, veremos esa partitura impresa
aquí en nuestra salida. Un script global
contiene variables y funciones que podemos
alterar y usar dentro de nuestro juego, en cualquier guión en cualquier momento. Vamos a seguir adelante y
podemos eliminar todas esas cosas y establecer la puntuación
a cero por defecto. Vamos a seguir adelante
y tener una función llamada update score. Todo lo que vamos a hacer aquí, vamos a estar
imprimiendo nuestra partitura. ¿Nos mostramos en
pantalla en este video? Ahora guardaremos la
visualización en pantalla para cuando empecemos a
cubrir el Hud Aquí sólo vamos a
seguir adelante e imprimir la partitura. Cuando esto sucede, la puntuación de actualización tomará la nueva cantidad para agregar la puntuación que hacemos más es igual a nueva cantidad que podamos hacer. Bueno, primero asegurémonos de
que estas cosas funcionen. Cada vez que
saltamos obtenemos diez puntos. Todo lo que vamos a
tener para agregar esto a nuestro movimiento y a
todas nuestras piezas. Entonces iremos a la actualización global, puntuación de
actualización, porque aún no la
guardamos. Actualizar puntaje, y
pasar 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 constantemente se agregan
diez puntos. Ahí vamos, 1030, 4050,
6070, 8090, 10110, etcétera Entonces esto está funcionando todos
nuestros botones. Fantástico. Podemos simplemente subir nuestros
puntos así. Los puntos aquí son increíbles. Simplemente seguí adelante y me
deshice de las otras impresiones. ¿Hay falsos? Solo
para aclarar eso, hazlo un poco más fácil para ti. A medida que avanzamos y corremos
ahí y corremos por ahí, puedes ver en nuestra salida nuestro número sube
cada vez que nos movemos. Ahí vamos. Está
funcionando fantástico. Ahora, también tenemos que hacer
un seguimiento de cuántas ranas obtenemos en total Ranas. No suena como
la cantidad que queremos. Lo llamamos un combo ranas. No lo sé. Vamos
a llamarlo la rana múltiple. Multi frog, es un
int, comienza en cero cada vez que agregas
a la rana múltiple. Bien, hacemos multi
rana más igual a uno. Recuerdo que con
cada combo de cinco, conseguimos mil puntos.
Aquí es donde vamos. Multi rana menos de cinco. Entonces sólo voy a tocar
esta línea de aquí. Entonces solo haremos puntaje
más igual a nueva cantidad. Hacemos puntuación más igual a 1,000 obtendremos 1,000
Si conseguimos cinco adentro, eso solo va a ser si
nos metemos en un área de anotación. En realidad no podemos
aumentar nuestro multirot, ir a nuestro espacio de viento y
entrar en nuestro cuerpo entrado Aquí es donde vamos
a incrementar ese número. Vamos a ser
multirana global más igual a uno. Y sólo vamos a
pegarlo ahí
dentro, dentro de nuestro espacio de viento. Entonces también vamos a llamar a nuestro puntaje de actualización global de actualización. Y vamos a pasar en
50 porque conseguimos entrar una rana, ya que estamos aumentando
nuestra multi rana antes de actualizar nuestra puntuación. Así que estamos actualizando nuestro
multi frog y one. Entonces comprobaremos
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 en realidad necesitamos
establecer multi frog de nuevo a cero porque eso
tiene que restablecerse. A ver si esto funciona. Bien, estamos todo
el camino hasta aquí. Sigamos adelante y
entrémonos en la zona. Ya estamos arriba en el tronco, esperamos a que estas
tortugas lleguen por pequeñas tortugas en la rana
tortuga en las Entonces vamos a tener 290. Saltamos aquí. Ahora entramos en zona
deberíamos saltar hasta 340. Subimos a 350 en esa porque también nos mudamos
al mismo tiempo, llegamos a recordar que
conseguimos nuestros diez puntos. Haz esta rana o trabaja de esa manera. En realidad ha pasado mucho
tiempo desde el plato, así que no estoy 100% seguro de eso. Si ese es el caso, entonces
para resolver este problema, por
supuesto podemos simplemente sumar 40 y luego contará eso más diez de nuestro salto ahí dentro. Si fuéramos a seguir adelante
y saltar en eso, ahora parecería un plus
50 al que como dije, no
estoy seguro si
cuenta ese salto real o 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 efectivamente Froggy murió Dijo que parece que tengo un
Brad Frog, aquí vamos. Parece que se ha
metido en un pequeño bicho saltando en un lugar extraño. Ahora mi pequeño mantel está bien. Esto nos pone a las 05:50 así que este próximo trabajo nos
pondrá en 600 Ahí vas. 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, cuenta ese diez como
tu principal cosa. Y solo recuerdo que probablemente
deberíamos meter cinco ranas ahí para
probar esto Podría seguir adelante y
simplemente avanzar rápido en el video aquí en esta parte solo para que
podamos conseguir cinco adentro. Muy bien, lo he
pasado e hice mi bucle varias veces, cinco drogas, y seguimos adelante, llegamos hasta 4,800 puntos Impresionante. Parece estar
funcionando perfectamente bien. Nuestro sistema de puntuación funciona. Obtuvimos nuestro plus 40 o 50, dependiendo de cómo
enviaste con si vas a
contar o
no el paso extra como parte de tus 50 o si
quieres hacer un 50 adicional. Encima de eso, tenemos
nuestros diez puntos por paso. Aquí tenemos nuestro plus 1,000 cada vez que
obtenemos cinco ranas multi Cada vez que rescatamos a
cinco de estas ranas, todos conseguimos configurar nuestra puntuación Supongo que a continuación solo podemos
echar un vistazo a cómo mostrar esto y
comenzar a poner nuestro head up display. Hugo todo listo.
14. Puntuación de HUD en juegos: Bien, sigamos
adelante y comencemos a crear el capó de juego para
nuestro juego de hoy. Vamos a
seguir adelante y sólo conseguir el puntaje aquí arriba en nuestra pantalla. Para esto,
acabo de ir a mi No TD y agregué en una capa de lienzo. Si entro aquí, capa de
lona es lo que
estamos buscando, no lona creció capa de lona
básicamente va a ser
todo lo que está en la cima de nuestro juego sin importar dónde
esté en nuestra escena. Entonces esto es, como te
imaginarías, donde van todos tus elementos
calientes. Si estás jugando
digamos, Dark Soles, aquí
es donde
están tus cuatro cuadrantes en la parte inferior izquierda Por ejemplo, si estás
jugando Sky Rim, tus tres barras de
resistencia de salud y Mana, W estará al otro lado de la
parte inferior y así sucesivamente Para nosotros solo para hacer la partitura
aquí en mi capa Canvas que renombré a Guy I Stanford Graphical
User Interface Seguí adelante y
agregué en dos etiquetas, Dos etiquetas solo regulares aquí. Y lo llamé Score label, solo tiene la palabra
score en ella y score text que
solo tiene cinco ceros Ahora el texto de
ambos era demasiado grande
para este proyecto. En ambos, entré
en el inspector hacia abajo al tema
anula el tamaño del bono Mi tecnología de puntuación está en la talla diez y la
etiqueta de puntuación está en la talla 12. Ahora 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é la altura de
mi ventana gráfica, 240-256 Ahí tienes Ahí lo puedes ver. Entonces agregué 16 píxeles adicionales
para poder agregar el negro en la parte inferior porque
ahí es donde nuestra barra de salud va
a terminar abajo, o nuestra barra de vidas
en el siguiente video. Muy bien, una vez que tengamos nuestras dos etiquetas aquí en nuestra capa de
lienzo para la partitura, no
puedes averiguar dónde
cambiar el texto para
eso, es solo seleccionar tu etiqueta
y dentro del inspector en la parte superior verás la
sección ahí para texto, Escribe partitura para uno y pon cinco ceros para el otro Esto nos dará una buena idea de la cantidad de espacio que
vamos a necesitar. Muy bien, ahora para
que esto funcione, todo lo que tenemos que hacer
es agregar una línea a nuestro script global aquí, fuera de nuestro bloque L S y
nuestro bloque. Fuera de ambos. Independientemente de la
cantidad de puntos que
agreguemos, necesitamos obtener nuestra etiqueta de texto de
puntaje. Establezca el texto para que realmente muestre nuestra escuela ya que venimos
de nuestro guión global. Si sigo adelante y ejecuto esto por un momento y
luego solo postulo, cambiar a remoto
global está aquí No tiene
acceso a nada. De hecho, tenemos que
subir al árbol una vez para llegar a enraizar y luego
bajar a nuestras dos D, luego bajar a nuestra pegajosa Entonces a partir de ahí podemos agarrar nuestro texto de partitura ya
que tenemos que subir y luego bajar podemos
seguir adelante y simplemente obtener nodo. Y recuerda, esto toma
una cadena como argumento. Y como pueden ver, podríamos simplemente escribir todo el camino solo Roth, dos D en este caso Pero aún así, 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. De ahí
accedemos a nuestra Y ahí, obtenemos nuestro texto de partitura,
si te lo estás preguntando. Solo estamos siguiendo
esa línea blanca desde nuestro global aquí donde
estamos escribiendo este código. Tenemos nuestros dos puntos, que es lo mismo que
escribir conseguir padres. Entonces subimos uno a la raíz. Entonces sólo estamos siguiendo cada parada
con esta línea blanca. Vemos que esta
línea blanca baja y luego va en puntos. No dos D, ahí es donde
hemos escrito ahí. Seguimos la línea hacia abajo otra vez, se detiene y apunta a la Y. Lo escribimos para la siguiente parada. Entonces bajamos y finalmente
apunta a nuestro texto de partitura.
Y ahí lo terminamos. Siempre que estés en
delts, adelante, haz clic en el nodo
que estás buscando Simplemente siga esa línea
blanca para obtener su ruta en el texto de la partitura. Derecha, este tipo de etiqueta objeto, vamos a obtener acceso a
la propiedad text del mismo. Déjame sacar el juego
de tu pantalla ahí. Simplemente miré y
vi que estaba cubierto. Nuevamente, usamos dos puntos.
Lo mismo que conseguir padre. Eso nos lleva hasta, hasta el nodo raíz y
solo seguimos estas líneas blancas, baja
puntos en el nodo dos. D baja puntos, luego se reduce a
puntos en el texto de puntuación. Y sólo estamos siguiendo ese
camino aquí todo el camino hacia abajo. 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 Como ves, realmente no podemos hacer mucho con la partitura
en este aspecto, lo que vamos a hacer es que realmente la
vamos a convertir en una cadena con STR y luego dos paréntesis
Podemos escribir nuestra partitura
dentro de eso Esa partitura ahora va a ser tratada como una cadena
en lugar de un entero. Ahora podemos hacer pad, y podemos empañarlo con ceros Pasamos en el número cinco. Vamos a tener cinco dígitos
como vemos aquí, 12345. Entonces vamos a
tener estas 50 ranuras. Nuestro puntaje va a cambiar, pero
aunque solo diga diez, todavía
vamos a tener
los cinco espacios disponibles visualmente para nosotros. Va a quedar
igual que lo haría en una sala de juegos. Y en un típico sistema de puntuación. Si seguimos adelante y jugamos esto ahora podemos ver nuestro
marcador ahí en lo más alto. Si salimos por ahí, deberíamos ver nuestro puntaje
aumentando como debería. Eso es un montón de autos allá arriba. Ahí vamos. Sigamos
este largo. Aquí vamos. Vayamos a buscar
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 Bien, entonces nuestro sistema de puntuación parece estar funcionando
perfectamente bien. Se muestra con precisión. Es fantástico. Bien, lo último que
debemos hacer en este momento es, bueno, 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 eso va a
reflejarse visualmente en la pantalla al mostrar cuántas
vidas nos quedan en realidad.
15. Vidas de HUD: 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 lona gooey. Vamos a agregar un nuevo nodo, sé que no es visible. A tan solo 2 segundos. Ahí vas. Vamos a buscar
la palabra textura. Estamos buscando la barra de
progreso de textura. Todo bien. Voy a cambiar el nombre del
mío por el bar Lives. Voy a pasar
a la sección Texturas en el inspector
para el progreso. Voy a pasar por encima de la barra de
salud y entrar en esa ranura. Establezca el valor máximo nuevamente
en el inspector en seis. Voy a establecer mi valor
actual en seis. Ahora deberías verlas. Voy a agarrar este
pequeño mango naranja y jalarlo hacia arriba solo para que
solo ocupe el espacio que necesitamos. Voy a
llevarlo directo hacia abajo hasta el fondo en ese
vacío espacio negro. Esos van a
funcionar como nuestras vidas. 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 en mi global aquí Nuevamente, tal vez el manager del juego tendría más
sentido para un nombre, pero por ahora va
a dejarlo con eso. Vamos a ir a
vidas por defecto seis. Voy a crear
otra función, Actualizar Vidas, Nada. Y vamos a
caer camino salvado. En lugar de un texto de partitura, vamos a llevar vidas lejos y vamos a acceder a la propiedad de valor aquí que
podemos ver en el inspector. Vamos a decir
más igual cantidad. La cantidad va a ser un
parámetro que pasemos en el que va a ser un
fin cuando perdamos una vida, vamos a sumar una
negativa, lo que hará que baje a cinco. Esto también nos da la
capacidad de sumar vidas en el futuro simplemente poniendo una
positiva para ganar una vida. Pero también actualizando que
en realidad tenemos que actualizar
nuestras vidas también. Lo mismo más
equivale a cantidad. Ahora podemos ir a nuestro jugador, podemos buscar nuestra muerte. Ahí está al morir. También tenemos que ir a acceder a
nuestro script global. Actualizar vidas y pasar en
negativo. Eso debería hacerlo. Muy sencillo, cosa pequeña que
hacer Ahora cuando morimos en pantalla, deberíamos perder una vida y
deberíamos ver nuestra
barra de vida ahí abajo, bajar a cinco. Necesito sacar esto porque ustedes no pueden ver el
fondo ahí. Ahí vas. A ver si
bajamos a cinco. Ahí vamos, nos separamos. Me topé con la parte trasera de ese auto. Yo lo estaba mirando,
y solo ganas puntos cuando
avanzas en Frogger Perdemos una vida cuando nos
metemos en el agua también. Podemos seguir adelante y
actualizarlo si así lo deseas. Si quieres que sea un
poco más preciso. Sólo vamos a
actualizar la puntuación cuando
pulsemos a la izquierda y a la derecha
no nos conseguirá ningún punto. La única voluntad de presionar hacia adelante, lo
cual tiene sentido
porque eso es un montón de puntos que podrías
acumular muy rápido. ¿Dónde están mis bitácoras? Ahí están ahora
montamos las tortugas. Perdición en la tortuga. Iba a ir por el tronco, pero sentí que me lo
iba a perder, así que me quedé saltar
al tronco aquí, y luego saltaremos sobre
esas tortugas y lo
haremos a casa gratis En
este registro, estamos Muy bien, increíble. Ahí vamos otra vez.
Podemos perder el ascensor. Fresco. Nuestro sistema en vivo funciona. Se actualiza visualmente en pantalla. Tenemos la capacidad de sumar
en vidas en el futuro. Bien, supongo que eso lo
hará para esta sección. A menos que queramos agregar live cuando lleguemos a la escuela,
queremos hacer eso. Todo bien. Si quieres poder ganar vidas
extra cuando alcanzas una cantidad determinada de puntos, esto es
lo que vamos a hacer. Vamos a crear
una variable llamada multiplicador dentro de
nuestra puntuación de actualización. Aquí vamos a realizar
una nueva comprobación. Vamos a decir puntaje dividido por puntaje dividido por, podemos decir 10,000 si quieres, veces nuestro multiplicador es
mayor o igual a uno, entonces aquí es donde
vamos a sumar a nuestras vidas. Entonces necesitaríamos hacer vidas, normalmente
diríamos más es igual a uno. Pero como queremos taparlo
a las seis, lo que en realidad vamos
a hacer es decir vidas iguales. Y vamos a usar esa
función llamada clamp. Ahora, clamp te permite
tener tres argumentos aquí. El primer argumento es lo que agregarías en lugar
de más es igual a uno. Nuestro primer argumento aquí
va a ser uno. Entonces el siguiente argumento
va a ser el mínimo y máximo de que este valor pueda ser el mínimo,
Podría ser cero. Nuestras vidas nunca
irán por debajo de cero. Aquí, el número máximo
que podemos tener es seis, así que nunca será un número
mayor que seis. Así es como funciona el pinzamiento aquí. Podemos llamar
vidas de actualización con uno, cierto, así que
vamos a tener un plus uno para agregar a eso
lo que en realidad podemos simplemente mover nuestra abrazadera aquí
abajo dentro de nuestras vidas de actualización y
reemplazar una con una montura. Entonces probablemente podríamos
salirnos con la suya de no tener nada ahí dentro,
No configurarlo. Vamos a
sujetarlo ahí abajo, Actualizar vidas en e Entonces
vamos a querer aumentar nuestro
multiplicador más es 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, vamos a seguir
ganándola. Queremos cambiar esto. Si conseguimos una vida por
cada 10,000 puntos, entonces obtendremos en
10,000 10,000 veces uno
todavía va a ser 10,000 entonces la próxima vez va a ser 10,000 veces dos, necesitaremos 20,000 puntos
para obtener una nueva vida. Y entonces serán
30,040 etcétera. Si fuéramos a correr
esto ahora con solo eso, podemos ver si entramos corriendo, vamos y perdemos una vida, tal vez incluso perdemos dos. Ahora tenemos
que subir, pasar por todo este tráfico. Tenemos que hacer nuestro
camino a este registro. Entonces podremos volver a montar el tronco de
las tortugas, trasladarnos a las tortugas, esperar a que el tronco suba aquí, y luego si nuestro puntaje
fue lo suficientemente alto, deberíamos obtener 10,000 cual no lo cambié
ahora que lo pienso Entonces eso es un poco
decepcionante, pero podemos comprobarlo
muy rápido con solo
entrar en nuestro espacio eólico
y diremos, oye,
ganamos 20,000 Ahora bien,
si tuviéramos que
comprobarlo para ganar puntos por entrar en nuestro espacio eólico
y diremos, oye,
ganamos 20,000 Ahora bien, ganamos 20,000 Ahora bien si tuviéramos que
comprobarlo para ganar puntos cada 10,020 no
deberíamos Simplemente debería
darnos la única vida, lo cual está bien porque nunca
debes conseguir 20.001 perro En fin, lo máximo que deberías
conseguir a la vez serán 1,000 Lo que ves a medida que avanzamos, boom, ya casi estamos ahí. Deberíamos ver nuestras vidas en el
fondo aumentar, más uno. Ahí vamos. Entonces nuestras
vidas han aumentado. Bien, entonces nuestras
vidas están funcionando ahora. Voy a
seguir adelante y restablecer esto nuevo a 40 puntos. Queremos asegurarnos de que
podemos terminar el juego. Eso va a ser. Supongo que dentro de nuestro
global aquí actualizar vidas, vamos a
seguir adelante y ver esto. Vayamos
uno negativo por casualidad. No, no lo hará. Eso es perfecto. No tenemos que
preocuparnos por eso. Podríamos decir que si vive, en realidad no tendríamos que ya porque lo estamos
configurando aquí. Verificamos de antemano. Entonces decimos si vive, es menos de cero en realidad ya
sería cero. Digamos que nos
quedan cero vidas, entonces morimos, ¿verdad? Estamos pasando otro
negativo. Estamos diciendo que si nuestras
vidas ya son cero, entonces vamos a tener,
diríamos, se acabó el 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 Para esto solo usamos get three reload currency y eso va a ser lo mismo que si
acabáramos de comenzar la escena Esto si escribimos en nuestras vidas no se están restableciendo, probablemente
porque no se
restablecen en Global. Vamos a averiguarlo. Entremos en nuestro listo y echemos un vistazo a
cómo depuramos esto, digamos vidas de impresión y
veremos si eso se restablece Nos están aplastando a lo ancho. En realidad nunca volveremos a prepararnos y se restablece
constantemente. Bien, así que en vez
de estar listo, vamos a imprimirlo aquí abajo. Tratando de averiguar por qué
estamos constantemente punteando aquí. 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, que es 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 de nuevo a vidas más iguales cantidad ahora si ejecutamos el juego y
vemos si podemos correr o volver a perder
vidas una a la vez. Una vez bajamos
tres vidas a una, aquí entramos en el agua. Nos quedamos sin vidas
cuando nos golpean. A continuación, va a ser un juego terminado y nuestro
juego va a reiniciarse. Ahí vamos, tenemos
un reinicio de nuestro juego. Rápidamente
nos encontramos, podemos volver a
perder vidas otra vez, 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 empezamos de nuevo, así
como ganamos vidas cada
vez que obtenemos 10,000 monedas.
16. Temporizador y bonificación: Bien, hagamos que nuestro Tim
Er vaya ahora a nuestro tipo. Acabo de agregar otra
etiqueta aquí abajo con la palabra tiempo con una anulación, tamaño de
fuente establecido en 12. Entonces tengo una barra de
progreso de textura, igual que hicimos
con nuestras vidas aquí. Cambié el modo de relleno para que sea derecha a izquierda en lugar
de izquierda a derecha. Voy a
renombrarlo aquí, Tim bar. Mi valor máximo 30, mi valor actual 30. Todo lo demás
queda igual. Cumplí nueve parches
estirados para
poder estirar esta barra
para que tenga cualquier forma, largo ancho que quiera. Y solo estoy usando el
temporizador y que tengo aquí, solo lo arrastre como
la barra de progreso desde
la textura de progreso. Ahí vas. 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 sobre mi
chico y la señal de tiempo de
espera aquí conectada a él. Esto es lo que estamos
viendo aquí. Lo que tenemos que hacer cada vez, esta vez o tiempos por defecto el temporizador se establece en
1 segundo, lo cual está bien. Eso es lo que queremos. Lo que
queremos hacer si queremos obtener nuestro tiempo o barra y necesitamos restarle
uno al valor, solo
podemos seguir adelante y
agarrarlo con nuestro signo de dólar Aquí lo entiendes, ya que
esto viene de nuestro chico valor menos igual a uno. Ahora bien, si fuéramos a
seguir adelante y echar un vistazo a eso y ejecutar eso, ahora
deberíamos ver nuestro
temporizador marcando abajo. Hermoso. Eso es
exactamente lo que queremos. Ahora tenemos que comprobarlo. Necesitamos verificar si nuestro,
nuestro valor de barra de temporizador, ha llegado a cero. Si es así, desafortunadamente, nuestra
ranita tiene que morir. Así es como es
cuando nuestro temporizador se agota. Sigamos adelante y
consigamos nuestro nodo F. Recuerda que estamos aquí, así que vamos a tener que
subir uno para nuestro nodo, dos D, luego volver a bajar jugador. Y sólo vamos a llamar a
nuestra función de muerte en ello. Uy. Y eso debería
ser dos iguales, porque es una comparación
si vamos a ejecutarlo. Ahora cuando nuestro temporizador se agota, nuestra pequeña ranita
debería simplemente ir splat y perdemos una vida en nuestro Sólo dale un minuto ahí
para que se acabe el temporizador. Ahora teniendo este temporizador
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. Creo que la velocidad podría ser la mejor opción en lugar de cambiar el retraso.
Pero ahí vamos. Un poco ranita ha muerto. Y sigue muriendo,
eso no es genial. Tenemos que resetear eso de hecho. Ahora, una vez que llegue a cero
y nuestro ranita muere, reiniciemos nuestra barra de temporizador Consigamos la barra del temporizador y
pongamos su valor de nuevo en 30. Podemos tener una barra completamente
nueva llena. Ahora bien, este no es el único momento
en el que necesita ser reseteado, necesita restablecerse cuando
lleguemos a la meta también, vamos a
seguir adelante y hacer que el nodo suba uno, obtener nuestro pegajoso, y luego obtener nuestra barra de temporizador
y establecer el valor de nuevo Ahora antes de probar esto, voy a entrar aquí en
mi plataforma. Voy a cambiar esto a
32 y duplicar esa velocidad. Eso significa que tengo que ir a
mi jugador y ajustar eso. Bueno ahí es cuando estamos aquí, 32 ahora debería
por lo menos moverse más rápido y ojalá pueda seguir
adelante sin faltar. Ahí están las tortugas. Necesitamos algunas bitácoras. Gracias. Registro. No sé si
voy a lograrlo. No voy a lograrlo. Voy a perder mi rana. Adiós por un abrazo. Apenas sabía que veis, esto va a ser
un poco difícil. ¿Nuestro tiempo o no se
reinicia cuando salpicamos? No lo hace, así que
tenemos que establecer eso
también en nuestro jugador. ¿Dónde es que morimos? Ahí está nuestra muerte. Y respondemos. Oka, sí, vamos a meterlo en
profundidad aquí otra vez. Vamos a subir y
luego volver a bajar a nuestra barra de temporizador y establecer
el valor de nuevo en 30. De esa manera cuando
morimos eso se restablece. Supongo que voy a
cambiar que respawn, el spawner value platform spawn Voy a quitar el más seis. Mira cómo se ve eso ahora ya que
tenemos números completamente nuevos. Bien, eso se ve bien. Podríamos ser capaces de
hacer esto ahora. Ahí vamos.
Lo hicimos en nuestro reinicio del temporizador. Y cuando morimos, nuestro
temporizador. Así que resetea también. Fantástico. Puedo ver que todavía necesito un poco
de impulso ahí dentro. Mi mínimo, voy a hacer 3 segundos solo porque
vi bastante solapamiento
cuando corrí por ahí. Pero vimos que el temporizador
funciona perfectamente bien ahora. Ahora lo haces, o al menos
se supone que debes obtener una bonificación en lo que respecta a los puntos, en función de cuánto tiempo
queda cuando anotas. Seguiremos adelante e
implementaremos eso también. 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 dame 1 segundo
ahí. Todo bien. Es diez veces el tiempo
restante que queda. Veamos cuando lleguemos
a nuestro espacio eólico, antes de
reiniciarlo, necesitamos actualizar el
puntaje aquí nuevamente. Vamos a sumar 40, pero
luego también vamos a agregar lo que quede aquí. Vamos a decir, en realidad vamos a poner esto en su
propia variable aquí. Nosotros lo llamamos bono de pastel. Diez de bonificación. Bonificación de tarta. Por supuesto, quiero enviarlo a este valor por diez
antes de reiniciar. Ahora en nuestro segundo
puntaje de actualización aquí hacemos bono de tiempo. Bien, entonces ahora deberíamos
tener nuestro bono de tiempo ahí dentro. Entonces, cuanto más rápido
podamos llegar allí, mayor bono
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 Puede que no llegue en absoluto. Podría estar cerca. Yo lo conseguí. Pero se puede ver que me dieron
190 puntos en esa. Bien, 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 tiempo o nos queda y llegamos al final. Bien, así que eso es todo. Creo que eso podría
ser. O rana. No creo que me esté
olvidando nada aquí. Si ese es el final de la rana, felicidades llegaste
hasta el final, eso es increíble. Espero que ustedes hayan aprendido mucho. Repasamos muchas cosas a
lo largo de este proyecto. Las variables están trabajando con
muchos guiones diferentes, pero recreamos completamente
este juego de los 80 Y lo bueno de
estos juegos antiguos, son bastante
simples en concepto, pero sobre todo si eres
nuevo en la programación, hay mucho que puedes
aprender de estos juegos. Todo bien. Cuídate. Tengan uno
bueno y los
veré en la próxima semana. ¿Qué? Ahora voy a entrar en una semana. Oh chico, la cuarta semana
va a ser divertida. Ahí dentro tenemos muchas cosas
de las que hablar.
17. Audio de Frogger: Todos, vamos a seguir adelante
y agregar primero en el audio. Entonces esto va a contar
nuestro salto cuando movemos la música de fondo
y nuestros sonidos de muerte Todo bien para nuestra música
de fondo. Aquí sólo podemos entrar en
nuestra escena principal. Selecciona nuestro nodo raíz, que es nuestro nodo dos D, Adelante y dale al
plus o agrega un nuevo nodo. Y lo que vamos
a agregar es este reproductor
de flujo de audio aquí. Entonces vamos a
entrar en nuestra carpeta de sonidos, agarrar la música tres, arrastrarla ahí, asegurarnos de
activar la reproducción automática. De esa manera no tenemos que desperdiciar un guión y desperdiciar
escribir código para reproducirlo. Simplemente empezará todo por sí mismo. Ahora, advertencia, esto podría ser
un poco ruidoso al comenzar. Si quieres ajustar el
audio solo para la música aquí, puedes seguir adelante y
cambiar el volumen. D, B aquí, cuanto más bajo lo pongas, más tranquilo va a ser cero es el valor por defecto para todos ellos. Sin embargo, si quieres
bajar la música para todo tu audio a la vez, puedes hacer clic en una pequeña
pestaña de audio en la parte inferior, ahí abajo. Y aquí está todo
tu bus de audio. Aquí tenemos al maestro, que si has
cambiado la configuración de audio
y los juegos antes de que te des cuenta, tenemos el control deslizante maestro.
Eso es lo que es esto aquí. Podemos cambiar el volumen de esto a lo que queramos. Si quieres agregar
un bus de audio diferente, puedes personalizar tus efectos de sonido
de la música por separado. Podemos simplemente golpear
el autobús add aquí. Simplemente cambiaremos el nombre de esto a música Ahora con nuestro reproductor de
flujo de audio seleccionado, lo notarás en la
sección de autobuses aquí en el inspector. Ahora tenemos una pieza musical
aquí del menú desplegable. Esta música llegará primero a través de
esta pieza de audio
y luego saldrá, se la
pondrá al maestro
como cabría esperar
a. 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. Todo bien. Entonces eso parece que es más
tranquilo que yo, así que 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í. Ahora el resto de nuestro sonido en realidad
va a
estar en nuestro reproductor. Debido a que nuestro jugador tiene, el jugador tiene el
saltando nuestro jugador. El otro efecto sonoro
necesita, nuestra otra muerte. El plunk, el
squish, y el caliente. Vamos a ir a
ver a nuestros jugadores. Mismo. También vamos a agregar un reproductor de flujo de audio
para ellos. No vamos a tocar
nada más 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 usted y nuevamente
una preferencia personal. Pero una vez que tengas un reproductor
de flujo de audio agregado a la escena de tus reproductores, podemos entrar en el guión de tus
reproductores. Lo que vamos a
necesitar hacer es configurar el flujo de audio
cargándolo en el archivo de audio
y luego reproducirlo realmente. Lo que voy a hacer
es que voy a ir primero a nuestra función de muerte, y esto va a tener
una identificación que le pase. D obviamente va
a ser un entero porque vamos a
conseguir un dos o tres. Entonces voy a llamar a un
int y voy a
establecerlo igual a dos por defecto. 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. Por defecto debería ser nuestro
camino. Debe ser un squish. Lo que voy a hacer
aquí es que vamos a obtener nuestro reproductor de flujo de audio, transmisión de reproductor transmisión de
audio lo largo de esa propiedad de transmisión. Estás en nuestro reproductor,
cierto, esa transmisión 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 ser la ruta a nuestro archivo dos va
a ser nuestro defecto, ese va a ser nuestro squish Entonces voy a conseguir
squash, squash. Salga de nuestra
carpeta Sonidos y arrástrala ahí. De esa manera no tengo
que escribirlo. Ahora lo que haremos es
en la siguiente línea, diremos si ID es igual a 33, recuerda ser nuestra agua. Si nos estamos muriendo y
está en el agua, entonces vamos a hacer
lo mismo que hicimos en la línea anterior
y poner nuestro arroyo. Y cargue en un nuevo archivo
esta vez conjunto de squash. Vamos a cargar en plunk. Entonces fuera de
esa declaración if, todo lo que vamos a hacer
es reproducir nuestra transmisión. Entonces vamos a
decir reproducción
del reproductor de flujo de audio , así como así. Ahora bien, si seguimos adelante y
nos machacamos en la carretera, deberíamos tener un solo 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 Si saltamos al
agua, nos atropellan en carro. Bien, tenemos el mismo
audio reproduciendo en ambos. Bueno, eso es un
poco interesante. ¿Por qué es eso? Bueno, al parecer no
estamos pasando ninguna identificación para tres. Nunca
van a ser tres. El motivo de eso,
recuerda que tenemos que
bajar y verificar, vender identificación. En realidad estamos comprobando
si nuestra rana se está ahogando, eso es lo que tenemos que
pasar a nuestra muerte Ahora bien, no se equivocó
porque le dijimos que si no le
pasamos nada,
solía hacerlo por defecto, pero como queremos
específicamente un ID de tres, siempre que estemos en el
agua, tenemos que
asegurarnos de pasarlo aquí abajo en nuestra función de identificación de celda de verificación. Ahora bien, si lo hiciéramos,
deberíamos tener nuestro plunk en el agua y
machacado en la carretera Ahí vamos. Sabemos si eso está
funcionando perfectamente bien. Ahora lo único que
nos queda es hacer nuestro salto. Para eso, eso solo
va a estar arriba en nuestro movimiento donde
podamos ir a revisar nuestro flujo de audio y establecer ese flujo reproductor
de flujo de
audio igual a carga. Y corre el riesgo de ir a agarrar nuestro efecto de
sonido y
arrastrarlo ahí dentro. En la siguiente línea solo
podemos reproducir nuestro reproductor de audio
stream play. Podemos copiarlo en
cada pulsación de botón aquí. Si está abajo podemos hacer eso. Boom queda. Y si es ahora mismo, si lo jugamos, deberíamos
poder saltar por ahí. Vamos a entrar en nuestra
escena principal e intentar que abajo pueda mostrar empujado hacia abajo
así como el agua subterránea, abajo, abajo, abajo,
abajo, abajo, abajo. Impresionante. Ahora todo lo que tenemos que
hacer es volver a encender la música en nuestro reproductor de flujo de
audio de la escena principal, Autoplay, vuelto a
encenderse así Tenemos el
juego Frogger completo con nuestro audio y jugabilidad 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. No hay nada más
que realmente podamos hacer aquí. Puedes sentirte libre de
agregarle más. Puedes intentar agregar pick ups. Puedes encontrar nuevos sonidos
y reemplazarlos. A lo mejor si quieres crear tus propios sprites y
usarlos para cambiarlo un poco, 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. Cuídense y tengan un buen paquete
ustedes mismos en la espalda. Hemos completado Frogger. 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.