El personaje y el controlador

1

Introducci贸n: De la idea al desarrollo

2

Estructura de carpetas en Unity

3

Assets, Game Objects y Sprite Atlas

4

Animaciones desde un sprite map

5

Animation Controller y Transiciones

6

Plataformas y gravedad

7

F铆sica en Unity

8

El script de control

9

Programando funciones en C# y Unity: Jump

10

Detectar el suelo con Raycast

11

Herramientas de debugging visual

12

Cambiar las animaciones seg煤n los estados

13

Reto: Terminando nuestras animaciones

14

Soluci贸n del reto

15

Hacer que el personaje camine

El manager del videojuego

16

C贸mo funciona el Game Manager

17

El Singleton

18

El modo de juego

19

Input manager y juegos multiplataforma

20

Correcci贸n del Bug del salto

21

La zona de muerte

22

Reiniciar la partida

23

Corrigiendo los bugs al reiniciar nuestro juego

Dise帽o procedural de niveles 2D

24

El dise帽o de niveles a mano

25

Configurando nuestros assets para el dise帽o procedural

26

Generaci贸n procedural de niveles

27

Creando la zona que eliminar谩 bloques del nivel excedentes

28

A帽adir un nuevo bloque de forma aleatoria

29

La c谩mara que sigue al jugador

30

Destrucci贸n de bloques antiguos

31

Terminando de programar la destrucci贸n de bloques antiguos

32

Solucionando el salto de la c谩mara al reiniciar el juego

HUD, men煤s y gameplay

33

El canvas en Unity

34

Uso de botones para crear un men煤

35

La l贸gica de los men煤s

36

Ejercicio: Preparando el men煤 del juego

37

Programando el men煤 del juego

38

Los coleccionables del juego

39

Actualizar UI de coleccionables

40

Iniciando con pociones y man谩

41

Pociones de vida y man谩

42

Programando las barras de vida y man谩

43

Calculando los puntajes con la distancia y el tiempo de juego

44

La l贸gica del man谩

Enemigos y dificultad

45

Plataformas m贸viles

46

Iniciar movimiento de la plataforma con trigger

47

Enemigos m贸viles

48

Enemigos m贸viles: preparando nuestro enemigo para girar

49

Enemigos m贸viles: programando que gire al chocar

50

Arreglando el collider de nuestra roca

51

Programando la condici贸n de muerte del personaje

52

A帽adiendo m煤sica de fondo a nuestro videojuego

53

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

Curso de C# para Videojuegos

Curso de C# para Videojuegos

Juan Gabriel Gomila

Juan Gabriel Gomila

Soluci贸n del reto

14/53
Recursos

Aportes 30

Preguntas 5

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

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:

  1. jumpVelocity > 1
  2. jumpVelocity < 2 y jumpVelocity < -2
  3. jumpVelocity < 2.1

isOnTheGround false en todas.
Y de ahi
Animator.setFloat(鈥渏umpVelocity鈥, 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: 鈥淣o 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贸:

Soluci贸n reto

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?