También pueden usar esta línea de código para hacer el giro al sprite:
GetComponent<SpriteRenderer>().flipX = true;
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 fire 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
Aún no tienes acceso a esta clase
Crea una cuenta y continúa viendo este curso
Aportes 6
Preguntas 1
También pueden usar esta línea de código para hacer el giro al sprite:
GetComponent<SpriteRenderer>().flipX = true;
FixedUpdate: se utiliza para actualizar el motor de física, con intervalos establecidos
Esta linea de codigo sirve para girar 180º:
this.transform.eulerAngles = new Vector3(0, 180, 0);
Dirección del enemigo
{
rigidbody2D = GetComponent<Rigidbody2D>();
startPosition = this.transform.position;
}
// Start is called before the first frame update
void Start()
{
this.transform.position = startPosition;
}
private void FixedUpdate()
{
float currentRunnningSpeed = runningSpeed;
if (movementDirection == MovementDirection.horizontal)
{
rigidbody2D.constraints = RigidbodyConstraints2D.FreezePositionY;
if (facingRight)
{
currentRunnningSpeed = runningSpeed;
this.transform.eulerAngles = new Vector3(0, 180, 0);
}
else
{
currentRunnningSpeed = -runningSpeed;
this.transform.eulerAngles = Vector3.zero;
}
}
if (movementDirection == MovementDirection.vertical)
{
rigidbody2D.constraints = RigidbodyConstraints2D.FreezePositionX;
if (facingUp)
{
currentRunnningSpeed = runningSpeed;
this.transform.eulerAngles = new Vector3(0, 0, -90);
}
else
{
currentRunnningSpeed = -runningSpeed;
this.transform.eulerAngles = new Vector3(0, 0, 90);
}
}
if (GameManager.sharedInstance.currentGameState == GameState.inGame)
{
if (movementDirection == MovementDirection.horizontal)
{
rigidbody2D.velocity = new Vector2(currentRunnningSpeed, rigidbody2D.velocity.y);
}
if (movementDirection == MovementDirection.vertical)
{
rigidbody2D.velocity = new Vector2(rigidbody2D.velocity.x, currentRunnningSpeed);
}
}
}
}
Otra forma para girar el sprite al ver hacia la derecha o izquierda en lugar de los “euler angles” seria “transform.localScale” por ejemplo:
transform.localScale = new Vector2(-1, transform.localScale.y);
Al igual que otros puntos del setting del videojuego hay varias formas de querer realizar tal o cual acción, mi pregunta seria de nuevo… EulerAngles o LocalScale? 😄
Usaremos FixedUpdate(se ejecuta a intervalos fijos de tiempo) siempre que necesitemos el motor de físicas (fuerzas, aceleraciones, velocidades) - de esta manera evitaremos tener desfaces visuales.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.