Saltar navegación

Tutoría #6 - UT5 - DEIM - Curso 25·26 - Contenido educativo

Ajuste de pantalla

El ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:

Subido el 11 de marzo de 2026 por Daniel M.

1 visualizaciones

Grabación de la tutoría número 6 del módulo DEIM durante el curso 25·26

Descargar la transcripción

cuéntame qué dificultades estás viendo que te gustaría que viéramos pues vamos a ver 00:00:01
no te puedo ahora mismo enseñar el proyecto eso es un poco una una limitación pero bueno 00:00:10
básicamente lo que más guerra me ha dado hasta ahora ha sido el tema de las plataformas móviles 00:00:20
a través de animación, no de código, porque digamos que el personaje, no sé, tiene un offset cuando está subido encima de la plataforma 00:00:29
que no se aplica en las plataformas que están hechas por código, o sea, que están animadas por código. 00:00:40
Entonces, digamos que el personaje se sube encima, todo bien, pero cuando se desplaza hacia un lado la plataforma, 00:00:49
el personaje resbala un poquito 00:00:56
hacia ese lado y cuando va para el otro lado 00:00:58
resbala para el otro lado, o sea, está aplicando 00:01:00
todo el rato 00:01:02
un offset y no entiendo por qué 00:01:03
no entiendo por qué porque ya te digo 00:01:06
en la que va por código se sube y se queda 00:01:08
donde cae y le mueve la 00:01:10
plataforma y las animaciones 00:01:12
todo bien, pero 00:01:14
eso es lo que más guerra me ha dado 00:01:16
he intentado mirarlo 00:01:18
con 00:01:20
pues con IA tirándole el código y tal 00:01:21
y es peor, o sea 00:01:24
me hace cosas ahí extrañas 00:01:26
que me aplica una 00:01:29
no sé qué hace 00:01:31
un cúmulo de 00:01:33
inercia más 00:01:34
la velocidad que lleva más no sé qué 00:01:37
y le pega un empujón al personaje 00:01:39
y lo manda a tomar 00:01:41
vientos, entonces 00:01:43
estaba peleándome con eso 00:01:44
no entiendo por qué cuando se sube 00:01:46
y hay pruebas de varias maneras 00:01:49
ahora vemos 00:01:53
Ahora te enseño propuestas 00:01:55
Vale, eso es una 00:01:57
Bueno, ya aprovecho 00:01:59
Ahora me sigues contando 00:02:01
Para ver las partes que más te estén costando 00:02:03
Que tengas dudas 00:02:05
Ya sí que estamos entrando en el terreno 00:02:07
De códigos con mucha información 00:02:09
Muchas lógicas mezcladas 00:02:11
Y aquí sí que ya 00:02:13
Hay múltiples caminos para resolver 00:02:15
Lo mismo, ¿vale? 00:02:17
Entonces, aquí ya sí que es el mundo 00:02:18
De, bueno, pues ver propuestas 00:02:20
Y luego cuando parece 00:02:22
que lo has conseguido, pues lo que me estás comentando 00:02:24
aparece en comportamientos no deseados 00:02:26
etcétera, simplemente 00:02:28
recalcar que eso es absolutamente normal 00:02:30
que el dar vueltas es 00:02:32
parte de lo que toca, vamos, eso 00:02:33
es así, entonces 00:02:36
ahora es verdad que tenemos 00:02:37
una herramienta que aunque pensemos 00:02:40
que a veces empeora el camino, sí que 00:02:42
nos puede orientar o nos puede dar ideas 00:02:44
que se sabía, que está muy bien usarla 00:02:46
pero bueno, como me acabas 00:02:48
de decir, no es mágica y no siempre da la solución 00:02:50
al menos no la primera o 00:02:52
hay que ser consciente de qué se busca 00:02:54
para ir dándole vueltas 00:02:56
entonces por eso es la gracia de 00:02:57
ver la base de la programación y tener una idea 00:02:59
general, al menos aunque sea 00:03:02
de iniciación un poco, de cómo 00:03:03
funciona la programación, ¿vale? 00:03:06
que está esta idea de que la IA hace 00:03:07
cosas increíbles, es verdad, pero bueno 00:03:09
cuando quieres cosas concretas, pues a veces 00:03:11
no lo hace, entonces 00:03:14
simplemente que es normal, ¿eh? 00:03:15
Tienes que conocer el código, o sea, tienes que saber 00:03:17
lo que estás haciendo y 00:03:20
evidentemente hay cosas que sí que te da 00:03:21
soluciones o bueno te puedes simplificar algo que tal pero evidentemente si no si no conoces 00:03:23
el código y sobre todo tu propia nomenclatura y todo nada te puedes perder fácilmente de hecho 00:03:31
en él en el ejercicio anterior que vi tus comentarios gracias no sé por qué no me llegó 00:03:40
el aviso de que había un comentario 00:03:48
sobre la entrega de la tarea 00:03:50
y no me ha pasado solo con esa, me ha pasado 00:03:51
con otros módulos también 00:03:54
pero 00:03:56
que mencionabas el tema de que había 00:03:57
una cosa en el código que era 00:04:00
redundante porque lo podía hacer desde 00:04:02
el editor, desde el inspector y es 00:04:03
cierto, lo que pasa que es justamente 00:04:06
lo que estás diciendo tú, que 00:04:08
llega un momento en el que esto 00:04:09
tiene una cantidad de 00:04:12
información y de cosas vinculadas 00:04:13
que 00:04:16
Que cuando estás buscando una solución, pues justamente la tenía en el inspector, era mucho más fácil. Y yo creo que haciendo cambios y probando es donde, porque le quise pasar casi toda la, o sea, todo lo posible, digamos, de la competencia y el control al game controller. 00:04:17
inicialmente no lo tenía así 00:04:37
y efectivamente con 00:04:39
el controlador de eventos 00:04:41
lo estaba utilizando 00:04:44
desde el editor, pero cuando empecé 00:04:45
a pasar todo lo posible 00:04:47
que correspondía a nivel de juego 00:04:48
al game controller, ahí es donde se me empezó 00:04:51
a hacer un lío importante 00:04:53
y bueno, y al final 00:04:55
lo ordené así y evidentemente quedaron 00:04:56
coletillas sueltas 00:04:59
claro, pero bueno, esto 00:05:01
es, bueno, evidentemente aunque 00:05:03
la IA te diga tal, hay que saber al menos 00:05:05
orientarse en la lectura 00:05:07
del código, aunque a veces no entiendas 00:05:09
todo y le puedes preguntar, es lo bueno 00:05:11
es por lo que 00:05:13
aprendemos a programar, vamos 00:05:15
simplemente 00:05:17
ya que lo has dicho, claro, otro de los 00:05:19
problemas que hay actualmente, pero que ya se está 00:05:21
empezando a solventar es 00:05:23
que la IA, claro, tú le puedes pasar un 00:05:25
escrito, un código, pero le falta 00:05:27
el contexto del editor, le falta 00:05:29
a veces conectarlo con otras cosas 00:05:31
simplemente por si, no ahora 00:05:32
seguramente, pero más adelante quieres 00:05:35
indagar en esto, existe 00:05:37
lo que se llaman los protocolos de control 00:05:39
de modelos, esto de MCP 00:05:41
que hay para software, no sé si te suena 00:05:43
pero que son como 00:05:45
implementaciones de la IA dentro 00:05:47
de los softwares, cuando digo 00:05:49
software puede ser incluso DaVinci por ejemplo 00:05:51
que ya va 00:05:53
entendiendo los propios programas 00:05:55
y es un paso 00:05:57
más porque ya permite leer tanto los 00:05:59
scripts como saber 00:06:01
qué es lo que hay en el editor, ver el 00:06:03
inspector etcétera vale simplemente pues ya que cuando eso también vaya mejorando ya no habrá 00:06:05
redundancias entre lo del editor que en cierto modo a no ser que se lo cuente muy específico 00:06:10
es algún punto ciego que tendrá el laía porque no lo está viendo lo podrás adivinar no podrá 00:06:15
vislumbrar lo pero no está viendo el claro pero bueno que sepa que esto es un poco el camino que 00:06:23
se está viendo con los software para automatizar ya el uso de los software sencillo y hay muchos 00:06:28
para Unity hay varios, bueno, simplemente 00:06:34
que te suenen, ya que hablamos de 00:06:36
IaaS y de esto 00:06:38
Genial, gracias 00:06:40
¿Qué más? Es verdad que todavía 00:06:41
no funcionan muy finos, pero ya 00:06:44
empiezan a funcionar, eso significa 00:06:46
que a medida que lo mejoren, pues ya 00:06:48
funcionarán, no me cabe duda, lo único 00:06:50
es el tiempo que tardará 00:06:53
Sobre las 00:06:54
plataformas, bueno, algo más 00:06:56
aparte 00:06:58
y otra cosa, es verdad, cuando os damos los 00:07:00
feedback de las tareas, cuando os corregimos las tareas, 00:07:02
si no me equivoco, os llega 00:07:05
la corrección, 00:07:07
el momento de la corrección sí que marcamos una casillita 00:07:09
para que os avise, ¿vale? Normalmente si os llega 00:07:11
la nota, mirad si tiene un feedback, 00:07:13
¿vale? Porque lo que es el feedback 00:07:15
sí nos va a llegar al mail. 00:07:17
Pero bueno, si os metéis en la tarea 00:07:19
con la corrección, ahí sí que lo veis, ¿no? Si no me equivoco. 00:07:20
Sí, sí, ahí sí. 00:07:24
Lo que pasa es que habitualmente siempre me 00:07:25
ha llegado eso, un aviso que 00:07:26
dice, hay un comentario sobre tu entrega. 00:07:29
Bueno, pues ya está. 00:07:31
¿Y esta? ¿En esta ocasión no te llegó? 00:07:31
No, y me pasó también 00:07:35
con las de 00:07:36
digitalización y sostenibilidad 00:07:38
no sé, no sé, bueno, en fin 00:07:40
Sí, pues a veces 00:07:42
la plataforma también, bueno, pues no 00:07:44
avisará, en teoría te debería haber llegado 00:07:46
y más si te ha llegado otras veces, porque si no diría, bueno, pues 00:07:48
nunca está funcionando, pero sí que 00:07:50
en teoría marcamos una cosa que 00:07:51
os llega ese aviso, es verdad que 00:07:54
por ejemplo, por ejemplo este fin 00:07:56
de, entiendo que en otra, esto fue 00:07:58
antes pero este fin de semana ha habido una interrupción que de pronto no han llegado los 00:08:00
novedades de foro hasta tres días después bueno que a veces pasan estas cosas vale algo más si 00:08:04
no vamos con lo de las plataformas no arranca porque la otra parte ya de los proyectiles y 00:08:14
y tal, me la dejo para después 00:08:24
vale, aún así si quieres 00:08:26
vemos enfoques 00:08:27
¿vale? para que cojáis ideas, aunque yo en el 00:08:30
anuncio de la tarea os pongo algunas cosas, pero lo 00:08:31
vemos también aquí, ¿vale? 00:08:33
vale 00:08:36
voy a ir por pasos de lo que es la tarea 00:08:36
aunque entiendo que los primeros me los voy a pasar 00:08:40
rápido, porque es verdad que es lo que tenéis más explicado 00:08:41
y con vídeos ya en 00:08:44
el propio tema, pero bueno 00:08:45
lo que es generar 00:08:48
los sprites y 00:08:50
a ver 00:08:51
sprites, es decir, esta hoja de sprites 00:08:52
dividirlo en los distintos fragmentos 00:08:56
para meterlo como 00:08:58
clips de animación, eso entiendo que no hay problema 00:09:00
¿no? hasta ahí bien 00:09:02
no, no hay problema, lo único que 00:09:03
he notado, pues son dos cosas, una que 00:09:06
o sea, el idle 00:09:08
da un salto 00:09:09
no sé si es que le falta algún sprite 00:09:11
algún dibujo o algo 00:09:14
el idle, ¿vale? ahora lo vemos pero no debería 00:09:15
en el loop, al final 00:09:18
del loop hace como un saltito y eso es 00:09:20
típico de que o le sobra o le falta algún frame 00:09:22
pero 00:09:24
ya te digo, no me he metido a 00:09:25
comprobarlo 00:09:28
vale, sí, a veces puede pasar 00:09:29
digo que 00:09:31
en este caso 00:09:32
a ver, espera 00:09:35
si quito y me 00:09:35
acerco la cámara 00:09:38
es decir 00:09:39
en principio a veces si veis que 00:09:43
hace ese saltito, pues es ver el último fotograma 00:09:44
de la animación 00:09:47
porque estará duplicado 00:09:47
o algo así 00:09:50
en teoría el idle, aquí yo como lo veo 00:09:52
no sé si tú lo ves bien 00:09:54
debería ir bien 00:09:55
vamos, no se nota ningún salto 00:09:58
no, en ese se ve bien 00:10:00
en el mío hace un pequeño salto 00:10:02
al final 00:10:04
y bueno, pues nada 00:10:05
puede ser, o porque 00:10:07
al hacer la animación, al seleccionar 00:10:10
todo y arrastrar, por ejemplo 00:10:12
te dejaras alguno y el salto sea precisamente 00:10:13
porque falte, o que el primero y el último 00:10:16
sea el mismo, que eso se soluciona 00:10:18
básicamente vendiéndote 00:10:20
en la animación, pues en el aire en este caso 00:10:22
sería este, y ver 00:10:24
ese fotograma, ¿vale? 00:10:26
para que, a ver 00:10:27
si lo despliegas, para ver 00:10:29
cuál está duplicado, si el salto es como que hay un fotograma 00:10:31
que es, que se queda como 00:10:34
parado y luego arranca, seguramente lo que haya que hacer 00:10:35
es coger y borrar, ¿vale? 00:10:38
si no comprueba 00:10:40
que de verdad han metido toda la cadena 00:10:41
de fotogramas, ¿vale? 00:10:43
vale, eso por otro lado 00:10:45
con, aunque entiendo 00:10:47
que estará en progreso con el 00:10:49
animator controller de las acciones que aquí ya empiezan a tener tela más o menos 00:10:52
lo vas que además esto es algo de este tema más o menos lo va a ser eso al 00:10:56
principio si me había dado un poco de lío o sea ya lo conocía en real 00:11:04
estaba un poco familiarizado con esto vale y aunque es diferente digamos que 00:11:11
bien, hasta 00:11:16
a ver qué momento fue 00:11:18
así un poco, porque veo que 00:11:20
ahí tú tienes conectadas bastantes cosas 00:11:22
Claro, aquí 00:11:24
es lo mismo, se puede hacer de 00:11:26
varias formas, pero sí, espera que te amplío 00:11:28
para que veas un poco 00:11:30
mejor 00:11:31
Sí, vamos, básicamente 00:11:33
la lógica que hay 00:11:36
que no tiene que ser exactamente la 00:11:38
que se cumpla 00:11:40
eso está ahí, nos aplica 00:11:41
según entramos está en el idle, ¿vale? 00:11:44
Si nos movemos, evidentemente pasa de andar de izquierda a derecha, básicamente, con la cruceta. Podemos ir viendo en detalle si quieres alguna cosa, pero no da tiempo a ver todo, entonces vayas viendo. 00:11:46
Luego, si das a la barra espaciadora, se aplica una fuerza y también la animación de salto. Y cuando detecta suelo, hay aquí un parámetro llamado Is Grounded, volverá al idle. 00:12:00
Que nos movemos rápidamente, pues como hemos quitado en esta transición el Has Exit Time, no se tiene que desarrollar toda la animación. Por tanto, pasaría directamente al Robot Walk o a lo que fuera. 00:12:12
Eso del has exit time, entiendo que he comprendido. Lo mismo, se puede agachar tanto desde que anda como desde que está en idle. Y la única diferencia, ahora lo vemos, es que cuando pasa desde el idle al crouch, al agachado, va a estar quieto. 00:12:24
Si pasa andando, lo normal es que esté en movimiento, ¿vale? Eso sí que mediante código, pues si no está habiendo desplazamiento horizontal, se queda quieto y de hecho se detiene también la velocidad del robot crouch, ¿vale? Se queda como quieto hasta que se reemprende la marcha. 00:12:44
ya y luego bueno hay una acción de correr vale pues que la transición normalmente es con el 00:13:02
añadido del de después del shift en mi caso más rápido y luego si está corriendo y se da al de 00:13:09
agachado en vez de agacharse lo que hace es el rol este la animación de que rueda vale y sólo 00:13:19
se va a ella si estás corriendo si no no no se puede rodar andando por ejemplo vale y bueno es 00:13:24
muy importante, ¿vale? Que la muerte, 00:13:29
el morir, da igual en cuál 00:13:32
estés, que puede suceder en cualquier caso, en momento, 00:13:33
¿vale? En cuanto haya una condición 00:13:36
que se cumpla, que es esta booleana de que 00:13:37
está muerto, que ese antiguo está muerto, 00:13:39
pues se lanza la animación 00:13:41
de la muerte. 00:13:44
De la muerte. ¿Vale? La diferencia 00:13:45
entre el entry y el in-state, que es 00:13:47
importante, que es eso. Entry siempre tiene esta 00:13:49
lógica y va siguiendo 00:13:51
las líneas de las transiciones según 00:13:52
se vayan estableciendo, pero tú 00:13:55
siempre puedes decir, vale, en este momento, aunque yo esté 00:13:57
haciendo tal oye si me da un enemigo yo muero da igual que esté rodando en lo que esté vale 00:13:59
luego ya es obviamente ir viendo las condiciones y esto tiene aquí ya así que es echarle vueltas 00:14:05
vale si hay una duda que me ha surgido varias veces que al final por el hecho mis configuraciones y 00:14:12
me funciona bien pero a la derecha donde tienes las dos animaciones con la transición en cual 00:14:19
¿Dónde está el Has Exist Time? 00:14:28
Ahí está, te refieres 00:14:30
Sí, ahí 00:14:32
como no estoy familiarizado 00:14:33
el hecho de que 00:14:36
entiendo que si vas a hacer 00:14:38
una transición de una animación a otra 00:14:40
tienen que estar superpuestas 00:14:42
con un tiempo, que es como lo tienes 00:14:44
ahora mismo 00:14:46
y luego 00:14:46
ahí se te está repitiendo 00:14:50
el crouch 00:14:51
y esto 00:14:53
a mí me pasaba 00:14:54
cuando el tiempo 00:14:58
de transición es 00:15:00
un poco mayor que el final del 00:15:02
primer, o sea, básicamente está repitiendo el 00:15:04
crouch, eso es lo que está 00:15:06
entiendo que es lo que está haciendo 00:15:07
si está 00:15:09
en el crouch y va a 00:15:11
pasar al idle, pero 00:15:14
pasa más tiempo de lo 00:15:15
que dura la animación crouch 00:15:18
la animación crouch se repite 00:15:19
que es lo que está ocurriendo ahí 00:15:22
por eso te aparece en gris a la derecha otra vez 00:15:23
la animación eso es lo que me rayaba un poco y como justamente el otro y claro es el de la 00:15:26
derecha si lo desliza antes de que termine la animación entiendo que el robot crowds debería 00:15:34
aparecer el gris desaparecer eso es claro tú lo que tiene si para que igual estamos y entonces 00:15:39
ahí justamente eso que estabas haciendo en qué momento que entiendo que es lo que ocurre en qué 00:15:44
momento de la animación crowds que en este caso es una animación que es un frame pero podría ser 00:15:50
que pues la mitad de una animación aparece la otra eso es lo que me parecía como un poco aleatorio 00:15:55
no es decir se está ejecutando la animación de caminar por ejemplo o del aire el perdón si de 00:16:03
caminar a correr que son dos animaciones diferentes no es sólo bueno el aire también no es sólo una 00:16:09
posición sino que no es sólo un frame sino que son varios frames y entonces la transición perdón la 00:16:14
transición, no, la animación a la que va a pasar 00:16:22
si yo la coloco 00:16:24
más a la izquierda o más a la derecha 00:16:26
entiendo que interrumpe 00:16:28
en el momento en que yo le estoy diciendo 00:16:30
la animación en la que está en ese momento 00:16:32
¿me explico? 00:16:33
sí, a ver si me entiendo 00:16:35
si no me dices, básicamente 00:16:37
el crouch, yo mientras estoy agachado 00:16:39
y esto se ve, si nos metemos en el animator 00:16:41
si tenemos seleccionado 00:16:43
esto es importante, entiendo que se ve 00:16:45
pero si estás seleccionando el objeto se va viendo 00:16:47
la ejecución, ¿no? 00:16:49
Yo básicamente, aquí, bueno, como no me estoy moviendo, no está parada, ¿vale? 00:16:50
Mientras me mueva se reproduce 00:16:54
Cuando yo suelte, bueno, aparte de que está el robot walk, no está establecido del todo bien, parece ser 00:16:56
Ah, bueno, sí, claro, como me estoy moviendo coge un segundo ahí de... 00:17:01
Sí, cuando dices que es un poco aleatorio, realmente, claro, hay que entender que entre... 00:17:05
Cuando son sprites, que no va a ser lo mismo que suceda cuando hay interpolaciones en el 3D, ¿vale? 00:17:13
Que eso sí que es en base a los rigs y a clips de animación que va interpolando un avatar y huesos, ¿vale? 00:17:17
Eso va después. Aquí, básicamente, las acciones se detienen unas a otras. 00:17:24
Es decir, cuando haces un giro de izquierda a derecha, no hay... 00:17:29
Y si no, ahora vemos cómo sería, ¿no? 00:17:32
Pero no hay todo el proceso del giro. Son cortantes, digamos, los pasos de una a otra. 00:17:35
Tú, eso no quita que siempre pongas entre una animación y otra, animaciones en medio. 00:17:40
Es decir, una animación que claramente sea como el momento entre que está agachado y se levanta y se hace ese recorrido. Si tú haces un clip de animación, aunque sea cortísimo, de cómo se levanta, tú lo puedes poner aquí en medio y que sin condiciones se ejecute y ya pase al otro. 00:17:45
No sé si me estoy explicando. Pero claro, tú tienes que contar que nunca va a estar 100% cerrado, a menos que hagas esos pasos súper concretos, que entonces vas a ir haciendo muchos fragmentitos de animación, ¿vale? Nunca vas a ver en qué momento de que estoy caminando y me levanto va a ser exactamente, ¿vale? Si no tienes el Hashtag Exit Time, porque si tienes el Hashtag Exit Time sí que fuerzas a que se desarrolle todo. 00:18:06
Pero aquí, claro, se tiene que jugar con que la interacción lo que tiene es eso, que va asociada a cada acción y se pasa de una a otra de una forma un poco importante, porque al final no hay interpolación como tal, lo que hay es un tiempo entre que se vea un sprite o se vea otro, según la animación que se esté ejecutando, ¿vale? 00:18:29
Si tú quieres que entre un paso y otro haya animaciones concretas, puedes meter más. Es decir, no siempre tienes que meter condiciones para que pasen todas las transiciones. Y de hecho te diré más, cuando los juegos se hacen los saltos, es muy frecuente, aquí solo hay un salto y se queda ahí y cuando se pasa ya pasa el otro. 00:18:48
Pero es muy frecuente que cuando das al salto hay una animación de cómo coge impulso mientras está en el aire, el tiempo que está en el aire, hay un bucle del personaje moviendo los brazos, que es otro clip de animación, y cuando aterriza y detecta el suelo hay uno de amortiguación contra el suelo. 00:19:07
Y son tres animaciones distintas que, digamos, la lógica siempre va a ir uno detrás de la otra, esas tres, ¿vale? Pero se van desencadenando según se ponga. Entonces, ahí sí que entiendo que es lo que me quieres decir, ¿eh? Ahí sí que te estás asegurando que cuando des el salto siempre de un impulso, luego hagas el braceo y según cuánto tarde, porque puede tardar más tiempo o menos en volver a posarse en el suelo, esa animación se queda desarrollándose en bucle y de pronto cuando se posa da la otra. 00:19:27
Entonces, es ir fragmentando un poco la animación según los eventos que vayan sucediendo, vaya. 00:19:57
Sí. A ver, sí, porque además que yo lo he hecho también con, por ejemplo, si tiene velocidad negativa en Y, evidentemente pues está cayendo y la animación es otra o lo que sea. 00:20:02
En este caso es más bien en el inspector que tienes las dos animaciones, el crouch y el idle. Digamos que la animación de idle está puesta al final y justo se solapa el tiempo necesario con crouch para hacer la transición, pero tú puedes mover en el inspector esa animación robot idle hacia la izquierda y ahí es a lo que voy. 00:20:16
No sé si esa, digamos, es lo que importa o simplemente, porque ahí, claro, le estás, o sea, entiendo que eso es la longitud de la animación. 00:20:46
Mira, vamos a hacer una prueba muy rápida 00:20:58
¿Vale? Si yo lo dejo como estaba 00:21:00
Y digo, en cuanto salga de Robot Crouch 00:21:02
Crouch, no sé muy bien 00:21:04
Cómo se dice, y pase a Robot Idle 00:21:06
¿Vale? Lo que quiero es que arranque la siguiente 00:21:08
Desde el principio de ese click de animación 00:21:11
De Idle, ¿vale? Y por tanto, fíjate 00:21:12
¿Vale? Yo me agacho, estoy aquí 00:21:15
Y en cuanto suelto y paso a la siguiente 00:21:16
Empieza desde el principio 00:21:18
Si yo hago esto 00:21:19
Y esto te puede interesar, por ejemplo 00:21:21
Porque tengas una animación 00:21:24
En la que sea precisamente el posado 00:21:26
al caer de un salto el posado del personaje 00:21:28
y que se levanta un poquito 00:21:30
y ya se queda en el idle 00:21:32
si tú tienes esa animación, a lo mejor lo que te interesa es 00:21:33
tenerlo en un clip de animación 00:21:36
y según de la que venga 00:21:38
esa animación pues empiece desde aquí 00:21:39
que es cuando, pues yo que sé, no te interesa 00:21:42
que en ese momento se vea eso de que se está levantando 00:21:44
tú si lo pones aquí 00:21:46
lo esfuerzo, lo pongo como a la mitad 00:21:48
tú fíjate que cuando yo 00:21:50
estoy en el crouch 00:21:52
sea cuando sea, yo al pasar a la siguiente 00:21:54
vas a ver que ahora no empieza a reproducirse 00:21:56
desde el principio, sino 00:21:58
desde aquí, ¿vale? Es decir, omite 00:22:00
toda esa clip de animación en esa parte 00:22:02
fíjate, a ver 00:22:04
espera que se ha quedado pillado, ahí, ¿ves? 00:22:06
me lo ha hecho y... 00:22:08
bueno, ahora no lo ha hecho pero 00:22:10
era como muy aleatorio 00:22:12
pero efectivamente, si tienes 00:22:14
una animación más larga y te interesa 00:22:16
que entre a partir 00:22:19
de un punto o que corte la animación 00:22:20
anterior hasta un 00:22:22
límite, pues esa forma es mucho más 00:22:24
práctica, no tienes que andar con un montón de 00:22:26
animaciones distintas 00:22:28
está muy bien 00:22:29
y hay otra cosa con la que 00:22:32
tuve que jugar bastante, es 00:22:34
justamente el tiempo de transición 00:22:36
porque lo que ocurría era 00:22:38
que se desplazaba el personaje 00:22:40
evidentemente con el input 00:22:42
se empezaba a desplazar antes de que 00:22:44
empezase la animación, entonces la 00:22:46
transición tenía que ser muy corta 00:22:48
para que fuese lo 00:22:50
más sincronizado, por lo menos visualmente 00:22:52
posible, es decir, si yo lo doy 00:22:54
hacia la derecha, que no se desvice 00:22:56
el personaje sin que esté corriendo la animación 00:22:58
Claro, eso, una cosa importante 00:23:00
que habría que ver cómo lo estás haciendo 00:23:03
lo que es la animación del personaje 00:23:06
el que se mueve a izquierda o a derecha 00:23:08
lo estás haciendo por físicas, entiendo 00:23:10
que era lo que se pedía 00:23:12
es que se puede hacer ya de 00:23:14
tener en cuenta, lo digo 00:23:17
para que es una de las cosas importantes 00:23:18
que si estás haciendo 00:23:20
un cambio de posición con Fixed Update 00:23:22
y en los cambios de animaciones 00:23:24
en ocasiones se hace 00:23:27
con update, claro, puede haber un pequeño 00:23:29
desfase entre una cosa y la otra 00:23:31
recordemos que esto va 00:23:32
a toda velocidad porque en cuanto hay un fotograma 00:23:34
lo detecta, pero esto va a saltos fijos 00:23:37
entonces hay que ir un poco 00:23:39
previendo eso 00:23:41
pero sí, claro, si hay una animación 00:23:42
que la animación digamos de caminado 00:23:46
empieza con el personaje parado 00:23:49
y luego se empieza a mover, pues tendrás que 00:23:50
recortar, pero ojo, que tú siempre 00:23:53
es decir, muchas veces te vienen hojas 00:23:55
de script con un ciclo de caminado 00:23:57
bueno, no, un ciclo de caminado no es el ejemplo 00:23:58
que me interesa, con un arranque 00:24:01
de ponerse a caminar y tú 00:24:03
puedes ir y decir, oye, aunque vaya 00:24:04
el diseñador o yo mismo en su momento 00:24:06
pusiera que empieza a caminar 00:24:08
y luego tarda, tú puedes 00:24:11
hacer aquí lo que hemos dicho antes 00:24:13
coger esos fotogramas y 00:24:15
ventilártelos, ¿vale? 00:24:16
que nada te obliga, incluso puedes 00:24:19
hacer otra animación, ¿vale? puedes decir 00:24:21
bueno, espera, puedes decir 00:24:22
crear otro nuevo clip 00:24:24
y poner, haces otro 00:24:27
clip de animación y ahí arrastras, en vez de 00:24:29
robot world con todo, ya andando 00:24:31
y esa animación 00:24:33
cuando la metas, ya cuando te interese la uses 00:24:34
es decir, que no hay que ceñirse 00:24:37
ni mucho menos a toda 00:24:38
una hoja de spray, incluso puede estar mal 00:24:41
sabes, entonces 00:24:43
esto es según lo que te interese, tú lo que tienes que 00:24:44
lo que hay que entender es que aquí son 00:24:46
fragmentos de animación y tú la vas 00:24:48
desencadenando según te interese 00:24:51
vale y aunque entre de hecho si tiene más vínculo pero aquí es son sólo dibujos animados uno tras 00:24:52
otro es decir no va a haber ni menos que haya dibujado ese desplazamiento y lo estés viendo 00:25:00
el movimiento es en este caso completamente independiente de que se muevan si el game 00:25:05
object vale entonces es saber coordinar eso y tú pues lo dicho tú te puede meter aquí en el 00:25:10
clip de animación vale y también aparte de darle el loop luego otra opción si ves que da un salto 00:25:16
prueba también ha estado el look post que básicamente que fusiona el último y el primer 00:25:22
fotograma de esa animación por si fuera el mismo vale pero bueno directamente también lo puede 00:25:26
borrar y el cycle offset que es que empiece más o menos tarde respecto a lo que hay dentro de 00:25:31
animación un poco como lo que hemos hecho antes arrastrando pero si tú desde luego en una animación 00:25:36
no te interesa que los primeros 10 fotogramas estén hace un clic de animación sin esos 10 00:25:41
fotogramas sabes y puedes tener varias animaciones ya la que vayas activando es la que te interesa 00:25:46
entonces claro si a veces hay animaciones que te viene con morraya o que no te interesa pues 00:25:52
es limpiarlo es limpiarlo a tu a tu necesidad sí y ahora que habías dicho lo del update versus 00:25:57
el fixed update una cosa que me pasaba era que iba a saltos justamente por eso cuando estaba 00:26:05
subido la plataforma por ejemplo la animación no va perfectamente sincronizado porque pues 00:26:15
tiene un digamos justamente una actualización fija y pero eso al final lo resolví poniendo 00:26:25
interpolación en tanto en la plataforma como en el te refieres a esto 00:26:34
sí a ver mira claro hay que pensar que en el tema los temas se intenta que esté como muy dividido no 00:26:41
pero hay que pensar que hay como dos mundos con los que mover los personajes no la kinemática 00:26:54
que es desplazarlos mediante su transformado mediante coordenadas y mediante el motor de 00:26:58
físicas y es verdad que aunque se suelen combinar en un mismo juego sí que son un poco incompatibles 00:27:04
vale no no son incompatibles pero generan problemas que ocurre que si tú tienes un 00:27:13
animator vale con básicamente es mover en base a clip de animaciones por lo tanto suele ser 00:27:20
kinemático no también se puede meter otros tipos de parámetros pero bueno suelen ser movimientos 00:27:27
cinemáticos de posición etcétera tú aquí en el modo de digamos que se va refrescando se va 00:27:32
calculando esos fotogramas tú puedes decir que se mueva en base al motor físico es decir que 00:27:39
pase un poco de lo que es el ciclo de update y usen el fix update vale para esa opción tienes 00:27:45
que poner que sea animate physics pero ahí es importante saber si el personaje se mueve por 00:27:51
físicas o no, porque si se mueve por físicas 00:27:55
esto es la plataforma, ¿vale? 00:27:57
es una de las que se mueven aquí 00:27:59
si se mueve por físicas, te interesa que 00:28:00
esté coordinado, porque a ti al final la plataforma 00:28:03
mientras se mueva de derecha a izquierda 00:28:05
te da igual que se calcule cada 0,01 00:28:07
segundos o 0,22 00:28:10
se va 00:28:11
a ir bien, se va a ver bien 00:28:13
pero claro, la coordinación 00:28:15
lo que me estás comentando entre el personaje 00:28:16
y la 00:28:19
plataforma, cuando entran 00:28:21
en contacto ahí sí puede haber discrepancias entonces esto es importante y luego hay otra 00:28:23
cosa también que es un método que hay de hecho a ver creo que lo tenían de los scripts vale hay 00:28:29
un método en plataforma aquí vale que es si estás moviendo al personaje con con rigid body vale con 00:28:36
el velocity o le estás aplicando fuerzas e incluso dentro del rigid body vale de lo que es el motor 00:28:45
de físicas, ¿no? Rigidbody y motor de físicas 00:28:51
hay métodos 00:28:53
que hacen lo mismo que un movimiento 00:28:55
kinemático, pero usando el 00:28:57
motor de físicas, ¿vale? Por ejemplo 00:28:59
este Move Position, entonces 00:29:01
no siempre hay que hacer un Transform 00:29:03
un Translate o cosas así 00:29:04
para mover al personaje, si tú quieres moverlo 00:29:06
en base a la lógica de 00:29:09
Move Position, la lógica 00:29:11
de, bueno, pues de un movimiento kinemático 00:29:16
pero como el personaje va a tener su 00:29:18
gravedad, va a tener sus reacciones de 00:29:20
colisionadores y básicamente va a estar en el mundo físico ahí es donde hay que recurrir a 00:29:22
este tipo de métodos vale que al final es es lo mismo que el translate pero lo está ahí por eso 00:29:27
estaba dentro de fixate y además pero pero está usando la lógica del motor vale para que todo 00:29:35
hable digamos el mismo idioma mal yo yo lo que te decía que también en él era la interpolación pero 00:29:42
de lo que es 00:29:53
en el Rigid Body 00:29:55
para que actualizase 00:29:59
para que fuese más 00:30:02
refrescado, porque si no 00:30:04
esto también me había pasado 00:30:05
en otros proyectos 00:30:07
vale, en principio no debería 00:30:09
tocarse 00:30:12
pero sí que es verdad que tú puedes 00:30:14
digamos, adelantarte 00:30:16
te puedes adelantar, digamos, a la física 00:30:18
digamos brevemente 00:30:22
entonces sí, es otra solución 00:30:24
en principio si van con el mismo lenguaje 00:30:26
no debería haber ese problema, lo que te estaba diciendo 00:30:28
pero bueno, estas opciones también están 00:30:30
para eso, ¿vale? Básicamente lo que hace 00:30:32
es adelantar o retrasar un poco 00:30:34
la interpolación física 00:30:36
Sí, a ver, tampoco 00:30:38
era una cosa demasiado 00:30:40
grave, si es 00:30:42
grave, evidentemente 00:30:45
hay que buscar otra solución 00:30:46
era simplemente que no era tan fluido 00:30:48
y sobre todo que se notaba la diferencia 00:30:51
de cuando estaba 00:30:53
en el suelo 00:30:55
y se subía a una plataforma móvil 00:30:58
ahí es donde se notaba la diferencia 00:30:59
que perdía fluidez 00:31:01
bueno 00:31:03
claro, eso no sé cómo lo has resuelto 00:31:04
yo por ejemplo 00:31:07
te puedo enseñar un poco como he hecho yo 00:31:08
hay dos tipos de plataformas aquí 00:31:11
un poco para probar ambas 00:31:13
una, estas primeras que son las que se mueven por kinemática 00:31:14
que son clip de animación 00:31:17
ahora lo vemos 00:31:20
y estas de aquí que se mueven por código si quieres lo revisamos sí sobre todo la que va 00:31:20
por animación porque la que va por código a mí me está buscando bien y luego tengo otro problema 00:31:29
que es muy tonto y no lo estoy entendiendo por qué pero creo el prefab todo con ya con todo lo 00:31:34
que necesita lo guardo como prefab y luego lo voy tirando en la imagen en la imagen en la escena 00:31:42
perdón 00:31:48
y no importa la posición 00:31:48
que le ponga, si lo duplico 00:31:52
o lo que sea, que siempre al darle 00:31:54
play me los pone todos en el 00:31:56
punto de origen que tiene el prefab 00:31:58
y eso no me había ocurrido antes 00:32:00
eso piensa que es muy normal 00:32:02
porque al final tú estás haciendo 00:32:04
un prefab 00:32:06
¿vale? y cuando tú tienes 00:32:08
mira, vamos a ver este clip de animación 00:32:10
que era, movimiento 00:32:12
horizontal, plataforma, ¿vale? 00:32:16
¿y este cuál es? otro que hay, ¿vale? 00:32:18
Si vamos a esta plataforma y la activo, si le doy al play, tenemos esta plataforma y esta plataforma básicamente es un prefab, a ver si me explico de una forma rápida y clara. 00:32:19
Yo, igual que creo que has hecho tú, lo que quería era un prefab de una plataforma que pudiera duplicarla en muchos puntos y que hiciera el mismo movimiento relativo de izquierda a derecha. 00:32:40
exacto, vale, aquí tengo el prefab 00:32:49
voy primero a enseñarte el prefab y así vamos 00:32:52
aparte, vale, este es el prefab 00:32:54
si me meto aquí, yo ya lo he 00:32:55
estructurado de una forma que 00:32:58
siempre hay que contar que 00:32:59
es muy conveniente normalmente 00:33:02
tener entis objects como padres 00:33:04
por lo que voy a hablar ahora 00:33:06
y una de las razones, la vimos ya en la UT1 00:33:08
que era el desplazamiento relativo que tiene 00:33:10
un prefab con respecto a cuando se instancia 00:33:12
vale, eso del 00:33:14
movimiento relativo es lo que vamos a 00:33:16
usar aquí a nuestro favor. Entonces, 00:33:18
yo tengo aquí un nulo, no hay 00:33:20
nada, ¿vale? Es un nulo, que lo llamo así, 00:33:22
¿vale? Pero lo importante, todo lo que está 00:33:24
en la clip de animación y todo, está 00:33:26
dentro de este 00:33:28
hijo, ¿vale? De este GameObject hijo. 00:33:29
Aquí hay un 00:33:32
animator, que básicamente lo que 00:33:34
tiene es, pues, esa clip de animación 00:33:36
que se va a ir desarrollando 00:33:38
perpetuamente, ¿vale? Que es este de aquí 00:33:40
y que lo abro, ¿vale? Esto 00:33:42
simplemente es, entiendo que 00:33:43
es lo mismo que tú has hecho, un position, que en 00:33:46
X va desde un punto 00:33:48
y lo selecciono, 00:33:49
le doy al play y hace un loop 00:33:52
de izquierda a derecha. 00:33:54
¿No? ¿Vale? Tiene tres 00:33:56
fotogramas, no más. ¿Qué ocurre? 00:33:58
Que tú aquí estás dando unas coordenadas absolutas. 00:34:00
Sí. Es decir, 00:34:03
tú aquí estás diciendo, este objeto tiene que 00:34:04
estar en el 0, 0, 0. 00:34:06
Por tanto, por mucho que nos 00:34:08
empeñemos, aunque 00:34:10
nosotros, este 00:34:11
GameObject, lo voy a copiar, 00:34:13
me voy a mi jerarquía, yo lo pego ahí 00:34:16
se ha copiado en el 0 0 0 vale si yo lo muevo lo voy a mover y lo pongo aquí vale y está en el 46 00:34:17
y en el 10 que ocurre que ese game object cuando se arranca el juego dice yo es que mi animación 00:34:26
va del 0 a 10 vale pues él va a ir al 0 que es lo que le está diciendo vale aunque lo haya movido 00:34:33
ahí fíjate vale que es lo que hay que hacer jugar a nuestro favor y aquí dentro del hijo tiene ese 00:34:39
movimiento izquierda-derecha, ¿vale? Desde un punto. 00:34:47
Pero eso no quita que luego 00:34:50
el padre, que no tiene la animación, sino 00:34:51
que está moviendo al hijo que hay 00:34:53
dentro, tú lo puedas mover y colocarlo 00:34:55
donde te apetezca. Es decir, 00:34:57
el movimiento relativo 00:34:59
es el que da el padre, y fíjate que es el que cambia. 00:35:01
61-9, 37, 00:35:04
¿vale? El de dentro, 00:35:05
es que aunque lo cambiemos, lo que acabo de decir, va a 00:35:07
empezar en el 0-0-0 y va a ir 00:35:09
a lo que haya puesto aquí. 00:35:11
Bueno, no sé qué he puesto. Bueno, empieza del 20 00:35:13
al 10, al 0. Bueno, son 00:35:15
coordenadas absolutas, ahí 00:35:17
da igual lo que le digas, él dice yo tengo que ir al 00:35:19
0, 0, 0 y voy al 0, 0 00:35:21
es con este con el que le das el desfase de movimiento 00:35:23
y luego arrastras donde quieras 00:35:25
¿vale? entonces el prefab dale un padre 00:35:27
y de hecho yo te diría, normalmente 00:35:29
es bueno que los prefabs tengan un padre 00:35:31
precisamente por esto, ¿vale? porque 00:35:33
toda la lógica del prefab está 00:35:35
dentro de esa estructura 00:35:37
y siempre hay algo de orden superior que 00:35:39
solo sirve para recolocarlo 00:35:41
sí, sí, sí, tal cual 00:35:42
pues nada 00:35:45
gracias porque 00:35:47
porque no lo estaba pillando 00:35:48
no, es una cosa muy tonta 00:35:50
pero es que es la clave, además que 00:35:53
esa práctica 00:35:55
sí que la tenía bien clara 00:35:56
en todos los ejercicios he estado 00:35:58
procurando siempre eso 00:36:00
pero seguramente ese es el problema 00:36:02
que estoy teniendo también con el 00:36:05
con el tema del 00:36:07
personaje que se desliza sobre la plataforma 00:36:09
no, ahí seguramente 00:36:11
es decir, creo que es otra cosa 00:36:13
bueno, esto que es normal 00:36:14
claro, tú dices, yo estoy moviendo la plataforma 00:36:16
se mueve de izquierda a derecha, pues si la muevo 00:36:19
aquí, pues por qué no, claro, tú ten en cuenta eso 00:36:21
que son coordenadas absolutas, lo que está leyendo 00:36:23
¿vale? 00:36:25
esto es normal, digo que es parte del proceso 00:36:26
lo que le pasará al personaje, es verdad que 00:36:28
sin verlo, no sé qué método 00:36:31
estás usando, si el 00:36:33
que se sugiere, digamos 00:36:34
en el 00:36:37
en el enunciado, que es que 00:36:37
cuando toca 00:36:41
que cuando toca 00:36:41
vale cuando entra en colisión el personaje vale con otra plataforma móvil vale que tenga esta 00:36:45
etiqueta se hace se hace hijo hijo vale claro que ocurre que sí es hijo y lo que se está usando 00:36:52
fíjate que es el transformó vuelvo a las cinemáticas vale si se está moviendo mediante físicas pues ya 00:37:02
ahí hay problemas, ¿vale? 00:37:09
Es decir, lo que está cogiendo en todo 00:37:11
rato son las coordenadas. ¿Qué 00:37:13
puede ser la clave para que luego trastees? 00:37:15
Pues precisamente lo que te he dicho antes, que 00:37:17
la animación que está arrastrando 00:37:19
esa plataforma, aunque sea 00:37:21
un clip de animación, joder, aquí, ¿vale? 00:37:23
La animación 00:37:26
sea en 00:37:27
base al update y no mediante 00:37:29
las físicas. Entonces, claro, 00:37:31
aunque estén moviendo una cosa, 00:37:33
se está moviendo a una velocidad que no es la misma del personaje. 00:37:35
Igual eso puede ser, ¿vale? 00:37:37
puede ser una de las razones luego hay cosas que son más avanzadas y esto ya es darle vueltas y 00:37:39
ahí la idea os ayudaría más porque si no es muy enrevesado que es por ejemplo ahora me dice que 00:37:45
creo que quiere decir algo pero que cuando bueno justo deja esta plataforma pero que cuando pones 00:37:50
el efector este de la superficie para pasar de una otra claro hay un punto que hasta que no bueno que 00:37:56
hasta que no se posa 00:38:03
puede estar arrastrando al 00:38:05
personaje, porque en cuanto entra en colisión 00:38:07
y ahí está entrando en colisión 00:38:09
pues ya lo arrastra, ¿vale? 00:38:11
Entonces, ahí ya es donde 00:38:13
hay que ir discriminando cosas como, bueno, 00:38:15
igual que se hace para los dobles saltos, que se hace un 00:38:17
pues eso, un raycast 00:38:19
o un ground checker o algo así 00:38:21
aquí, pues por ejemplo, esta 00:38:22
línea que es 00:38:25
aparte, digo, para que se haga padre 00:38:27
y coja el movimiento del padre 00:38:29
¿vale? 00:38:31
está con este método 00:38:31
que dice 00:38:34
lo que quiere decir es 00:38:34
que esté debajo del personaje 00:38:37
la plataforma 00:38:39
¿por qué? porque si no empieza a arrastrar al personaje 00:38:40
y lo que queremos es que hasta que no se puse por arriba 00:38:44
no arrastre nada, simplemente está pasando 00:38:46
que es un movimiento un poco antinatural 00:38:47
que por un lado sí pueda pasar 00:38:49
y por otro no, que es lo que tiene ese efecto 00:38:51
entonces 00:38:53
mediante normales 00:38:55
las normales básicamente para que detecte 00:38:57
que algo está por encima 00:38:59
tiene que estar acercándose 00:39:00
a la unidad, ¿vale? Pues con eso 00:39:03
puedes discriminar que esté 00:39:04
recibiendo esa colisión desde un ángulo superior 00:39:05
¿vale? Entonces es lo que 00:39:08
discrimina que esa condición pues 00:39:10
de verdad lo haga padre, si no 00:39:12
le hace padre en cuanto empieza a atravesar la 00:39:14
plataforma. Sí. Claro, 00:39:16
ahí ya hay muchas cosas y muchos detalles que hay 00:39:18
que ir puliendo, ¿vale? Que eso es normal 00:39:20
digo, no se puede ver todo 00:39:22
pero bueno, que es ir buscando un poco la lógica 00:39:24
de por qué ocurre y en tu caso yo creo 00:39:26
que es eso, que son dos tiempos de ejecución que no 00:39:28
están funcionando del todo parejos sí porque al principio lo resolví con el collider de los pies 00:39:30
digamos diciendo que es que sólo cuando estuviese haciendo colisión con la plataforma el collider de 00:39:40
los pies vale sí también y y bien pero bueno yo no sé si tú el robot lo tienes también metido 00:39:49
dentro de un 00:39:58
de un anti-object 00:40:00
Sí, ahora te explico 00:40:02
Dices la detección del suelo, ¿no? 00:40:04
Bueno, o sea, en general 00:40:07
es que, como te digo 00:40:09
lo que me raya muchísimo es que 00:40:10
es solo 00:40:13
la plataforma que tiene una animación 00:40:15
la que hace 00:40:16
que se desplace 00:40:19
en las otras que van 00:40:21
por código, el personaje cae encima 00:40:23
efectivamente el collider de los pies 00:40:25
detecta la plataforma y se queda ahí clavado y si yo me muevo reproduce la animación se desplaza 00:40:27
etcétera pero en el otro es que es en el momento que entra en contacto se queda ahí y cuando se va 00:40:33
para la derecha del personaje resbala hacia la derecha y cuando se queda como en el sitio 00:40:38
no no se cae en el sitio y al moverse hacia la derecha el personaje se desliza sobre la 00:40:45
plataforma y se le suma se mueve más rápido de lo que debería y estando quieto y hay veces que 00:40:50
incluso he probado que sea no tenga velocidad horizontal sino que caiga desde arriba con 00:40:58
velocidad cero nada igual es como que no sé exactamente ahí claro siempre el código todo 00:41:06
es pensar, pero puede ser 00:41:16
que en algún momento 00:41:19
estés sumando, es decir 00:41:20
no solo lo estés haciendo hijo 00:41:22
sino que le estés sumando 00:41:24
una velocidad 00:41:26
un transfer, otra coordenada 00:41:28
o algo así 00:41:31
tiene que ser, luego hay otro 00:41:31
problema 00:41:34
del RECAS 00:41:35
es decir, de la detección de 00:41:38
colisiones, que es asegúrate 00:41:40
de que de verdad esa colisión la está detectando bien 00:41:42
y no va a saltos o algo así, aunque si lo que está 00:41:44
haciendo es añadir más movimiento 00:41:46
no va a ser por ahí, lo digo porque 00:41:47
si por ejemplo 00:41:50
¿cómo estás detectando tú el suelo? ¿cuál de los métodos 00:41:52
estás usando? ¿cuál de las fórmulas? 00:41:54
¿de lo que tienes ahí? 00:41:57
no, es decir, tú 00:41:59
en el tema hay varias 00:42:00
formas para que se pueda detectar 00:42:02
que el personaje se ha posado en un suelo 00:42:04
sí, no, yo igual que ahí 00:42:06
o sea, con 00:42:08
un tag 00:42:09
comparando un tag 00:42:11
Sí. Que bueno, en mi caso se llama como la plataforma, bueno, se llama diferente, pero pues eso, así como lo tienes tú. 00:42:13
Vale, ten cuidado 00:42:26
porque quizá tenga que ver 00:42:28
claro, aquí ahora mismo 00:42:31
tú estás viendo esto, pero en realidad 00:42:33
también hay otro factor 00:42:35
que es que para yo poder moverme 00:42:37
a ver, en mover 00:42:38
se tiene que cumplir 00:42:40
se tienen que cumplir condiciones 00:42:43
de que esté posado en un suelo 00:42:44
es decir, aparte de que esté detectando que hay una colisión 00:42:46
también 00:42:49
hay otra condición por ahí 00:42:51
que es la de 00:42:53
is grounded 00:42:54
¿vale? que esta es la que impide 00:42:57
los dobles saltos, que entiendo que algo habrás 00:42:59
hecho en ese sentido ¿verdad? 00:43:01
Sí, sí, sí, y de hecho 00:43:02
el suelo y las plataformas tienen 00:43:04
un layer 00:43:07
ground que también lo utilizo 00:43:09
vale 00:43:11
o sea, ya te digo 00:43:12
es que el suelo de las plataformas estáticas 00:43:15
y la plataforma que se mueve por código 00:43:17
funciona perfectamente 00:43:19
es en esta otra 00:43:21
Me da la sensación como que el offset que recibe con respecto al transform local de la plataforma, es lo que, o sea, por decirte, si cayese en el cero exacto, a lo mejor el muñeco no se movía. ¿Me explico? 00:43:22
Sí, prueba a mirar otra cosa, ¿vale? Que puede ser que también, digamos, la plataforma la hayas hecho más grande o más pequeña después. ¿Y qué ocurre? Que como es más grande o más pequeña, realmente el movimiento también se, digamos, se distorsiona un poco, porque está haciendo un cambio de escala y de movimiento. 00:43:41
a ver si va a ir por ahí y está cogiendo un transform 00:44:03
de algo que es más pequeño y por eso da 00:44:05
como esas variaciones 00:44:07
no lo sé 00:44:09
y si no mira en el código que no estés 00:44:10
añadiendo, es decir, que no 00:44:13
sea solo que le conviertes hijo 00:44:15
¿vale? 00:44:16
mira esa plataforma en la que te pase eso, a ver si hay 00:44:19
algo cambiado raro de la escala 00:44:21
que puede ir por ahí, pero 00:44:23
eso 00:44:25
en el código comprueba 00:44:27
que no haya algún momento en el que 00:44:28
No solo no se... Es decir, se puede hacer 00:44:31
de más formas. Es decir, aquí se hace 00:44:33
haciendo que coja de padre 00:44:35
y es como la jerarquía 00:44:37
de hacer lo hijo, ¿vale? 00:44:39
Como esto, ¿no? 00:44:40
Pero también hay otra forma... Es así, ¿no? 00:44:42
Como lo estás haciendo. Digo que también se puede hacer 00:44:45
coge exactamente el transform y 00:44:47
que lo añada. No, pues si es así 00:44:49
no debería dar ese problema. 00:44:51
Pues revisa eso, que el movimiento 00:44:53
cambia los modos 00:44:54
de update, ¿vale? Para 00:44:57
ver si... 00:44:59
prueba lo de la escala a ver si es que al cambiar la escala claro el movimiento relativo no es el 00:45:00
mismo que el aparente porque está cambiando a lo mejor el punto de eso puede ser porque además hice 00:45:08
la plataforma con un cuadrado o sea utilizando no utilizando el spray rosa sino o sea lo empecé 00:45:15
varias veces y... 00:45:28
Pero sí recuerdo que lo escalé. 00:45:30
A ver, voy a probarlo, ¿vale? Lo he hecho 00:45:32
más grande. Joder, en pasaje 00:45:34
me mato, pero voy a quitar todas las torres porque 00:45:36
si no esto se convierte en un tostón. 00:45:38
Estas torretas 00:45:43
eran... Estas, si no me equivoco. 00:45:44
A ver. 00:45:49
No, estas no eran... Vale, es esta. 00:45:51
Fuera. Vale. 00:45:54
Si... 00:45:57
Yo voy a esta 00:45:58
plataforma que le cambia la escala, si te fijas, 00:45:59
En teoría debería hacerlo bien 00:46:01
En teoría lo hace 00:46:04
Espera que no sé si está viendo algo 00:46:09
¿Ves que da como saltitos ahora? 00:46:10
Da, sí 00:46:15
Y en el pequeño no da esos saltitos igual 00:46:16
Bueno, lo está dando un poco por la 00:46:18
Porque nos estamos fijando 00:46:21
A ver, lo que sí que sería 00:46:22
Más evidente es 00:46:25
Si en X 00:46:26
Pero no es lo mismo que te pasa a ti 00:46:27
No sé, lo que te digo, si en X es mayor la escala 00:46:29
De la plataforma, a ver si 00:46:32
Te desliza el personaje sobre la plataforma 00:46:34
Es una cosa muy extraña 00:46:36
Pero bueno 00:46:40
Seguro que hay alguna chorradiña por ahí 00:46:40
Que es lo que está haciéndolo 00:46:43
Pero bueno 00:46:45
En principio pueden ser 00:46:46
Las posibilidades 00:46:48
¿Vale? 00:46:51
No sé si 00:46:53
Tienes alguna duda más 00:46:54
Porque si no quiero que veamos un par de cosas 00:46:57
¿Vale? 00:46:59
Vale 00:46:59
Pues arranca 00:47:00
Y si me sale algo te lo digo 00:47:02
después pero en principio no una chorrada bueno esta plataforma se queda ahí que no me interesa 00:47:05
aquí creo 00:47:12
está fuera está la que ha añadido a no con dónde está la que ha añadido ahora 00:47:16
no me gusta bueno es que está en la plataforma que empieza en un sitio y se va al otro lo que 00:47:24
hemos dicho, vale, esta es, vale 00:47:28
vale, simplemente 00:47:29
creo que en el tema lo pongo, que es 00:47:34
cuando el personaje a veces 00:47:36
digo, porque es un comportamiento 00:47:38
indeseado y es muy normal, cuando estamos caminando 00:47:40
y nos vamos a una plataforma y caminamos 00:47:42
hacia ese lado, si no hacemos una operación 00:47:43
se queda ahí como anclado 00:47:46
vale, lo voy a hacer con esto 00:47:47
a lo que me refiero es 00:47:49
me cargo esto, que es la solución, vale, puede pasar 00:47:51
que estemos en un juego 00:47:54
y estamos aquí, digo, vale, me voy a caer 00:47:55
pero yo sigo avanzando 00:47:58
hacia la plataforma, ¿vale? 00:48:00
estoy dando hacia la derecha, se queda ahí 00:48:02
atascado, ¿vale? esto no es 00:48:04
no es bueno y sobre todo además 00:48:06
si no se discrimina 00:48:08
el salto según que parte, también incluso se podría 00:48:09
saltar, lo cual si no es la mecánica que 00:48:12
queremos, pues no 00:48:14
facilitaría mucho pasarse el juego, ¿no? 00:48:15
entonces simplemente aquí 00:48:18
es donde tenemos que poner en juego 00:48:19
los material physics en la 00:48:21
plataforma y añadir una vale que sea de fricción 0 vale para resolver eso vale 0 y 0 eso es una 00:48:24
solución entonces como no hay nada de fricción digamos nada lo que agarrarse aunque avancemos 00:48:32
hacia ahí pues se cae para allá vale eso es importante otra otra cosita bueno lo de las 00:48:37
torretas que lo pongo como opcional porque verdad que tiene más chicha hay una cosa que me parece 00:48:45
interesante que veamos que es el método sendmessage que no sé si en tu caso lo has usado más avanzado 00:48:50
pero es conveniente conocerlo entonces voy a hacer un hay más dudas por tu parte voy a hacer 00:48:58
un pequeño repaso de qué hace ese método vale para que lo conozcamos no sé si lo has usado 00:49:02
te suena sendmessage enviar mensajes es como como una suscripción a eventos si en cierto modo es eso 00:49:09
es pues entre todos los métodos que haya envía un envía un mensaje que vaya repasando y el que 00:49:19
se llama igual me lo lanzas si es algo parecido entonces claro para estas torres del principio 00:49:26
si nos fijamos aquí no disparan hasta que yo llego a un punto y me empiezan a disparar todas 00:49:32
vale ya eso básicamente es porque en él en un cierto punto he añadido un collider vale un 00:49:38
trigger vale que marca un área para que cuando yo entre pues las torretas empiecen a disparar 00:49:46
vale bueno ya he hecho este collider estrellas y me meto aquí esto es lo que me interesa vale 00:49:52
si con el personaje vamos andando si entramos en ese trigger vale si cuando si es decir esto 00:49:58
lo tiene la trampa vale si lo que entra se llama robot vale como en nuestro caso activamos la 00:50:06
torreta vale y activar la torreta es algo que tenemos aquí que pasa que cuando salgo hago 00:50:12
exactamente lo mismo también activar la torreta y stop fire vale es el mismo método y le he pasado 00:50:20
un parámetro que es un nombre de un método esto está bien porque de esta forma cambiando aquí 00:50:25
digamos el string que tengamos luego podemos enviar este mensaje con el nombre del método 00:50:32
que sea, es decir, si nos metemos 00:50:38
en la torreta, ¿vale? Va a tener un 00:50:40
método preparado que se llama stopfire y otro starfire 00:50:42
y lo que discrimina que se lance uno 00:50:44
u otro es precisamente 00:50:46
el nombre. Entonces 00:50:48
con un message se puede fácilmente 00:50:50
activar 00:50:53
en remoto, digamos, en otro 00:50:55
script, métodos, ¿vale? Sin tener 00:50:56
que ir uno a uno discriminando mucho. 00:50:58
¿Qué se hace aquí 00:51:01
también? Hacer un 00:51:02
array, ¿vale? Esto, el problema que puede tener 00:51:04
es que trate todos los objetos, 00:51:06
todas las torretas que tenemos aquí como una sola 00:51:08
¿vale? tenemos todas estas torretas 00:51:10
aquí preparadas, si no 00:51:12
tendríamos que hacer 00:51:14
distintos, bueno pues 00:51:15
luego al lanzarlo distintos 00:51:18
delays o para que disparen 00:51:20
en distintos momentos, pero 00:51:22
el GameObject del FindObjects 00:51:23
with Tag, ¿vale? que nunca hemos 00:51:26
hablado de él, es un método muy conveniente para 00:51:28
meter y guardar en un array 00:51:30
¿vale? que tenemos aquí preparado en este caso 00:51:32
todos los objetos, que 00:51:34
podrían ser las plataformas, podrían ser las torretas 00:51:36
en este caso, que tengan el tag 00:51:38
torreta 00:51:40
torreta 1 00:51:41
¿vale? entonces 00:51:44
dentro de esa torreta 1 es donde está ese 00:51:46
script de disparar 00:51:48
o no disparar, ¿vale? que lo que 00:51:50
hace es lanzar la animación 00:51:52
de, pues que sale el fuego 00:51:54
¿vale? que ahí os dejé un 00:51:56
os dejé un 00:51:58
una hoja de sprites 00:52:00
del, bueno 00:52:02
la tienes vista por ahí, ¿vale? pero bueno 00:52:03
básicamente es la que hay ahí 00:52:05
Esta de torreta 1 00:52:08
Enseño simplemente por si alguien ve esto 00:52:09
Y tal, creo que es una torreta que 00:52:12
Si nos fijamos aquí está como 00:52:14
Está como disparando 00:52:15
¿Vale? 00:52:18
Sí, una animación de un destello 00:52:19
Eso es, e importante es 00:52:21
Que, ¿vale? 00:52:24
Porque esto a veces dice, oye, ¿cómo hago para que se lance 00:52:26
La bala en cierto momento? 00:52:28
Pues recordemos 00:52:31
Que en los propios clips de animación se pueden añadir 00:52:32
Eventos, ¿vale? Para que en cierto momento 00:52:34
Se dé una operación 00:52:36
Esto por código sería complicado, es decir, en tal fotograma que se lance. Por poder se puede todo, pero sería complicado. Entonces, recordemos que aquí, yo por ejemplo, en ese Starfire, he creado un método que lo que hace es instanciar un prefab de bala, que luego asocio aquí al evento, es este de Ballet, para que se lance, igual que se lanzaban las columnas en la UT2, con ya un movimiento, etc. 00:52:37
Si te fijas en tu caso, tenemos este método esperando aquí y hasta que no se lanza la orden de que empiece a ejecutarse la animación de Fire en el Animator Controller, no olvidemos que dentro del Animator Controller lo que hace es meterse distintos clientes de animación como este, asociamos por un lado que se empiece a ejecutar una animación, 00:53:03
Pero también, de manera vinculada, estamos haciendo que en cada repetición, a ver, lo coloco aquí, se lance un proyectil con este instantiate, ¿vale? Entonces, que es una lógica un poco enrevesada, pero es muy conveniente usar los eventos de las animaciones para, bueno, como os ponía en el tema, pues que cuando bote una bola, pues cuando en el fotograma justo en el que se posa, pues puede haber un método, ya veremos cómo se hace con los sonidos en el tema 7, 00:53:27
que lance el sonido de boing 00:53:56
del bote cuando toca ahí 00:53:59
claro, para que coincida justo con ese fotograma 00:54:00
no olvidemos que están los eventos 00:54:03
de animación 00:54:05
que vienen explicados en el tema 00:54:05
pero importante porque es una forma fina 00:54:08
de en un movimiento 00:54:11
en una animación pues indicar 00:54:13
que ocurra algo 00:54:14
a través de script 00:54:16
vale, entonces 00:54:18
también aquí se pone en juego 00:54:20
que esto es importante 00:54:23
y a primeras suele ser complicado 00:54:24
igual que hemos creado un array 00:54:27
que hemos dicho, todo lo que tenga 00:54:28
el tag torreta1 00:54:30
que se guarde en ese array, para usarlo 00:54:33
¿vale? bajo el nombre de torretas 00:54:35
claro, si en cierto momento 00:54:36
yo quiero que cada torreta de manera independiente 00:54:39
lance su 00:54:41
bala, ¿vale? 00:54:42
pues para ir yendo una a una 00:54:45
¿vale? hacemos un bucle por todas las torretas 00:54:47
que hemos metido en el array, existe el forEach 00:54:49
¿vale? que dice 00:54:51
dentro de torretas 00:54:52
en cada, y aquí creamos 00:54:54
una nueva variable 00:54:56
llamada torreta, como se puede llamar 00:54:58
canon 00:55:01
esto recordemos que es 00:55:02
cuando declaramos una variable 00:55:04
pues estamos diciendo 00:55:06
que 00:55:07
le estamos dando el nombre para que en este ámbito 00:55:08
se ejecute, pues eso 00:55:12
en ese cañón, dentro de cada uno de 00:55:13
esas torretas que se han metido 00:55:16
coge el script llamado 00:55:18
turret, y esto es lo de siempre 00:55:20
aquí ponemos un get component turret 00:55:22
y básicamente lo que estamos haciendo es ver 00:55:24
dentro de los componentes cuál se llama turret 00:55:26
y resulta que es un script, podría ser 00:55:28
animator, sprite renderer, ¿no? 00:55:30
y dentro de ese turret 00:55:31
que lo hemos guardado aquí, ¿vale? de ese script 00:55:33
mándame un mensaje 00:55:36
¿vale? con este nombre 00:55:37
stop fire o start fire 00:55:39
que es lo que hace básicamente, se mete ahí y en cada 00:55:41
torreta, cada game object independiente 00:55:44
pues empezará a lanzar el fuego 00:55:46
o lo parará, y cuando 00:55:48
se lanza ese fuego, además 00:55:50
en esa propia en ese propio clip de animación se instancia una bala en cierto momento se están 00:55:51
como encadenando distintos pasos pero de esto creo que es importante porque es la gracia de 00:55:58
ir usando un poco todo lo que vamos conociendo y a mí esto me cuesta un montón digo entiendo que 00:56:04
a todos nos cuesta en plan hilando y tal pero bueno es sobre todo ir hasta yéndose e ir viendo 00:56:12
los pasos y decir vale yo quiero que en cierto momento vale pero por ejemplo esto que igual 00:56:19
alguien intenta ir por otro camino de juego pues yo creo que la bala sea según se lanza el según 00:56:24
se empieza el fuego no digamos a los tres segundos con un inbox pues no se puede hacer directamente 00:56:31
con el clip de animación con un evento vale sino para una cosa tan tan específica esto es la mejor 00:56:37
opción claro por eso sobre la animación que si no me equivoco hace dos o tres tutorías me hablaste 00:56:45
creo que fuiste tú me preguntaste de cómo animar algo y te dije no no es que esto lo verás cuando 00:56:55
vayamos a los clip de animación que es donde igual que hacemos en premiere en after effects donde de 00:57:01
verdad podemos ser muy finos porque lo hacemos nosotros a nivel de fotograma puedes meter código 00:57:06
Eso es, poder meter momentos 00:57:14
Dentro de la línea temporal 00:57:17
De que se lance un código 00:57:19
¿Vale? Y luego otra cosa 00:57:21
Que bueno, es que esto sí que viene 00:57:23
Creo que he explicado en el enunciado 00:57:25
Claro, la torreta para que se vaya orientando 00:57:27
Hacia el personaje, todas están 00:57:29
Por defecto, enchufando hacia arriba 00:57:31
Pero si nos fijamos 00:57:33
Voy a cerrar esto 00:57:34
¿Vale? Se va moviendo buscando al personaje 00:57:37
¿Vale? Esta rotación 00:57:39
Hay una forma de hacerlo 00:57:41
que es con esto de decirle vale esto cada torreta tiene esto vale el transforma es decir la parte 00:57:43
hacia la que apunta hacia arriba vale que realmente apunta hacia donde yo le estoy diciendo en esto 00:57:50
anterior vale y bueno es una práctica normal que si tú coges un punto y le restas al que tiene que 00:57:55
mirar vale lo que hace ya esa orientación vale aquí bueno aquí he puesto un pequeño offset para 00:58:03
que vaya a la cabeza del jugador pero vamos se podría poner el jugador y si a esa posición se 00:58:10
le resta a la que quieren decir a la que quieren mirar se le resta la del propio objeto vale lo 00:58:15
que hace es mirar hacia allí y con esto combinaciones con lo que se hace vale por 00:58:22
la parte de arriba de la torreta del sprite va a estar mirando hacia donde yo le digo aquí que es 00:58:26
el que es el punto donde está el personaje vaya si bueno si está claro pues no sé si tienes así 00:58:31
algo más alguna duda quieres que veamos algo no ya me toca pelearme con esto para cerrarlo 00:58:40
básicamente y bueno esto esto no lo quita nadie y las tareas de hecho están planteadas para que 00:58:49
os peleéis un poco, porque 00:59:00
cuando haces un juego 00:59:01
es que no es fácil nunca, no es 00:59:03
directo nunca, bueno 00:59:05
pues el darle vueltas 00:59:07
y el de pronto que una condición que funcionaba 00:59:10
en cuanto añades otra acción del personaje 00:59:12
de pronto tienes que revisar 00:59:13
¿vale? pues es importante 00:59:15
de hecho, llegan puntos 00:59:17
por ejemplo aquí que para el salto 00:59:19
en mi caso, que bueno 00:59:21
puede hacerse, seguramente se puede hacer incluso 00:59:23
más eficiente, pero para que el salto se desencadene 00:59:25
y se, bueno, y se añada la fuerza 00:59:28
y se desencadena la animación 00:59:29
de salto, pues ya hay cuatro 00:59:32
cuatro booleanas 00:59:33
y son booleanas que se van activando 00:59:35
y desactivando, pues en cuanto 00:59:38
metes otro factor, normalmente 00:59:39
no es raro que te toque meter otra 00:59:41
booleana que se activa o se desactiva 00:59:44
bueno, pues ahí es donde 00:59:45
toca darle vueltas 00:59:47
al tema 00:59:50
yo eso lo he estado haciendo desde 00:59:50
desde la animación 00:59:53
¿El salto, por ejemplo? 00:59:57
Sí, casi todas las condiciones. Evidentemente en código hay algo también, ¿verdad? Pero quiero decir... 00:59:59
Ah, bueno. ¿Que lanzas eventos que activan y desactivan las booleanas? 01:00:07
No, que a nivel de las animaciones me refiero. 01:00:13
Ah, que lo usas para las animaciones. Sí, sí, claro. 01:00:18
No de la función como tal, sino en las animaciones, justamente ir combinando si está en el suelo, si tiene velocidad o no tiene velocidad y estas cuestiones. Pero bueno, que sí, que se va haciendo cada vez más complejo, sobre todo cuanto más fino lo quieres hacer, que al final es para conseguir que no se note nada de lo que estás haciendo. 01:00:20
si para que todo sea invisible bueno ahora es lo de siempre lo bueno es que en cuanto tenga la 01:00:50
lógica de este juego tú ya lo puedes hacer todo lo grande que quieras que es ir duplicando lo 01:00:56
ampliando lo complicado es hacer el código que funcione me explico igual que en el de la bola 01:01:00
pues ya teniendo dos niveles con distintas mecánicas pues puedes ir haciendo más niveles 01:01:05
y ponerle las barras en distintos puntos tal que al final es establecer bien la mecánica y 01:01:10
Y luego si es un juego de niveles, un arcade y tal 01:01:16
Pues así, casi más en lo visual 01:01:18
Ir metiendo más elementos 01:01:20
Sí, cambiando 01:01:22
Algunas configuraciones y tal 01:01:24
Yo por ejemplo lo de la dificultad 01:01:25
Lo dejé en un punto 01:01:28
Porque dije, esto es eterno 01:01:30
Materias:
Imagen y Sonido
Niveles educativos:
▼ Mostrar / ocultar niveles
  • Formación Profesional
    • Ciclo formativo de grado superior
      • Primer Curso
      • Segundo Curso
Subido por:
Daniel M.
Licencia:
Todos los derechos reservados
Visualizaciones:
1
Fecha:
11 de marzo de 2026 - 20:30
Visibilidad:
Clave
Centro:
IES CIFP a Distancia Ignacio Ellacuría
Duración:
1h′ 01′ 38″
Relación de aspecto:
1.78:1
Resolución:
1920x1080 píxeles
Tamaño:
599.35 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid