Desactivando Loop
Velocidad 0.2
Añadiendo nos sprites mas
El personaje y el controlador
Introducción: De la idea al desarrollo
Estructura de carpetas en Unity
Assets, Game Objects y Sprite Atlas
Animaciones desde un sprite map
Animation Controller y Transiciones
Plataformas y gravedad
Física en Unity
El script de control
Programando funciones en C# y Unity: Jump
Detectar el suelo con Raycast
Herramientas de debugging visual
Cambiar las animaciones según los estados
Reto: Terminando nuestras animaciones
Solución del reto
Hacer que el personaje camine
El manager del videojuego
Cómo funciona el Game Manager
El Singleton
El modo de juego
Input manager y juegos multiplataforma
Corrección del Bug del salto
La zona de muerte
Reiniciar la partida
Corrigiendo los bugs al reiniciar nuestro juego
Diseño procedural de niveles 2D
El diseño de niveles a mano
Configurando nuestros assets para el diseño procedural
Generación procedural de niveles
Creando la zona que eliminará bloques del nivel excedentes
Añadir un nuevo bloque de forma aleatoria
La cámara que sigue al jugador
Destrucción de bloques antiguos
Terminando de programar la destrucción de bloques antiguos
Solucionando el salto de la cámara al reiniciar el juego
HUD, menús y gameplay
El canvas en Unity
Uso de botones para crear un menú
La lógica de los menús
Ejercicio: Preparando el menú del juego
Programando el menú del juego
Los coleccionables del juego
Actualizar UI de coleccionables
Iniciando con pociones y maná
Pociones de vida y maná
Programando las barras de vida y maná
Calculando los puntajes con la distancia y el tiempo de juego
La lógica del maná
Enemigos y dificultad
Plataformas móviles
Iniciar movimiento de la plataforma con trigger
Enemigos móviles
Enemigos móviles: preparando nuestro enemigo para girar
Enemigos móviles: programando que gire al chocar
Arreglando el collider de nuestra roca
Programando la condición de muerte del personaje
Añadiendo música de fondo a nuestro videojuego
Añadiendo efectos de sonido y cierre del curso
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Juan Gabriel Gomila
Aportes 30
Preguntas 5
Desactivando Loop
Velocidad 0.2
Añadiendo nos sprites mas
yo hice esta solucion, modifique la animacion para que fuera mas lenta, despues
en el codigo meti en el update esto
animator.SetBool(STATE_IS_JUMPING, true);
^
Mi solución fue definir 3 estados de animaciones y pasar un parámetro como jumpVelocity de tipo float, de ahí definí 3 estados:
isOnTheGround false en todas.
Y de ahi
Animator.setFloat(“jumpVelocity”, rigidBody.velocity.y)
Lo solucioné utilizando un parametro boolean en el Animator, llamado isFalling, este se activa cuando la velocidad del RigidBody2D en su eje Y es menor a 0.
bool isFalling(){
if (rigid.velocity.y < 0.5f)
return true;
else
return false;
}
No se complico mucho la vida y era mas facil desactivar el Loop time desde el principio y en el Animator alargar el tiempo entre cada movimiento?
Hice otra animacion de la caida y que se active unicamente cuando la velocidad sea negativa
En la clase anterior: "Al dividir el salto, para el jump del medio solo va 1 sprite"
En esta clase: “No se puede hacer una animación con 1 sprite” 🤣
Mi solución:
1. Dividir la animación en dos partes: **Jump **y Fall
2. Crear un parámetro booleano en el controlador de animación de Player
3. Cambiar la animación de entrada por la de **Fall **(ya que el PJ siempre inicia cayendo)
4. Agregar una función para verificar cuando el PJ está cayendo
bool IsFalling()
{
return rigidBody.velocity.y < 0;
}
5. Agregar en el método Update ésta línea:
animator.SetBool(STATE_IS_FALLING, IsFalling());
6. Inicializar en el método Start los booleanos isFalling y isOnTheGround
animator.SetBool(STATE_ON_THE_GROUND, false);
animator.SetBool(STATE_IS_FALLING, true);
6. Actualizar las transiciones en el Animator y la velocidad de las animaciones
Así me quedó:
nota de experiencia propia.
hola les recomiendo que se arriesguen a equivocarse y no vean este video directamente e intenten encontrar la respuesta
yo probe de dos formas, con la misma animación le quite el Loop y la alargue un poco para que se viera mejor cada frame, e hice el reto y cree 3 animaciones de saltos y las uni con una condicion booleana
Con este reto se puede profundizar con la implementación de la ventana de animator recordando la creación de parametros, la ejecución de transiciones y los parametros de las animaciones en el inspector.
A su vez, aprender a utilizar la ventana animation para la creación y edicion de nuevos clips para unirlos a la animacion del personaje
Sí se pueden crear animaciones con un solo sprite. Se debe crear en la ventana de animation del personaje y te da un timeline vació donde puedes arrastrar los sprites (o EL sprite). Para abrir esa ventana denle doble click a una de sus animaciones ya hechas.
mi personaje es una bolita al saltar solo hace 3 sprites con quitar el loop quedo bien
Esta solución es mas fácil de lo que creía
El sprite del inicio es simplemente la animación Idle
Yo pensé en simplemente cambiar algunos sprites y quitar el loop 😐
Simple, Hago la animacion más lenta y le desactivo el looptime Xd
Mi solución es la siguiente:
Es similar a la del profesor, pero también hay una transisión de la animación de caminar a la última animación del estado porque un personaje puede bajar de una plataforma y su animación debería ser esa última sección del salto sin el cominezo ni el medio.
También puse la transición de muerte desde el Any State al Die State para mejorar la lectura del grafo.
Mi solucion fue sencilla usando el Animator sin usar codigo. Es una solucion que cabe en este caso.
¿Alguien sabe quitar eso? uso visual Studio Code
No entiendo porque no me sale, fluido, se demora en hacer las animaciones cuando salta
hice tres animaciones y disminui la velocidad de las animaciones ![](
Asi quedo mi grafo. Agregue un estado para que el personaje este parado cuando no se le aplique nigunga fuerza.
Muy buen reto para iniciar.
genial
Me quedó sonando lo que dijeron de usar un número para la animación, así que creé una variable para la velocidad en y y se la asigno en el FixedUpdate por cada cambio que detecta. Si está en un rango entre -2 y 2 se queda con la animación de en el aire y sino a la de bajando.
Me gustó el efecto pero creo que la solución del profe es mejor, en el sentido de que no se tienen que mantener números mágicos en algún sitio diferente al código que se está trabajando. Saludos
void FixedUpdate()
{
anim.SetFloat(STATE_VELOCITY_UP, playerRigidBody.velocity.y);
}
Mi solución fue agregar esta linea de codigo
if((rigigbody.velocity.y == 0) && isTouchingTheGround())
{
animator.SetBool(STATE_ONTHEGROUND, true);
}
en la cual detecta si la velocidad en Y es mayor a 0 y al mismo tiempo si esta tocando el suelo con el metodo ya creado, si es verdad cambia el valor de la variable isOnTheGround a true, lo que inicia la animación de correr nuevamente.
Lo que hize fue crear las tres animaciones con las transiciones y todo, pero en la animacion de muerte se queda en un loop, si alguien me ayuda?
yo también solo desactive el loop time y le baje la velocidad a las animaciones
donde se encuentra el loop time?
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?