Closed SalasJuan closed 10 months ago
LateUpdate
es un método en Unity que se utiliza para realizar actualizaciones de comportamiento después de que Unity haya actualizado la posición y la rotación de todos los objetos en la escena. Se llama después de que se hayan realizado las actualizaciones de Update
y antes de que se dibuje la escena en el fotograma actual. Esto es útil en situaciones donde deseas asegurarte de que tu comportamiento se ejecute después de que todos los objetos hayan realizado sus movimientos y actualizaciones de transformación.
Algunas de las situaciones en las que LateUpdate
puede ser útil incluyen:
Seguimiento de cámaras: Cuando necesitas que la cámara siga a un objeto en movimiento, es común hacerlo en LateUpdate
para asegurarte de que la cámara siga la posición final del objeto después de todas las actualizaciones de movimiento.
Interacciones entre objetos: Si tienes objetos que interactúan entre sí, es posible que desees realizar cálculos o comprobaciones en LateUpdate
después de que los objetos hayan realizado sus actualizaciones en Update
.
Animaciones: En el caso de animaciones complejas, es posible que desees sincronizar ciertos eventos de animación o transiciones en LateUpdate
para garantizar que se ejecuten en el momento adecuado después de que se hayan realizado las actualizaciones de transformación.
En resumen, LateUpdate
es útil para controlar el comportamiento que debe ocurrir después de que se hayan realizado todas las actualizaciones de transformación en la escena, lo que puede ser esencial para lograr un comportamiento suave y predecible en tu juego o aplicación en Unity.
using UnityEngine;
public class Parallex : MonoBehaviour { private Transform cameraTransform; private Vector3 previousCameraPosition; private float spriteWidth, startPosition; //Almacena el Tamaño del Sprite y su Posicion Inicial. [Serializefield] private float ParallaxMultiplier;
void start()
{
cameraTransform = Camera.main.Transform;
previousCameraPosition = cameraTransform.Position;
spriteWidth = GetComponent<SpriteRenderer>().bounds.size.x;
startPosition = cameraTransform.position.x;
}
void LateUpdate()
{//LateUpdate sirve para realizar actualizaciones luego de haber realizado todos los cambios de Posiciones de los Objetos.
float DeltaX = (cameraTransform.position.x - previousCameraPosition.x)* ParallaxMultiplier; //Se resta la posicion de la camara actual menos la anterior
float MoveAmount(camera.Transform.position.x * (1 - ParallaxMultiplier))//Movimiento de la Camara con respecto a la Capa.
transform.Translate(new Vector3(DeltaX,0,0));
previousCameraPosition = cameraTransform.position;//Asignar la nueva posicion de la camara
if(MoveAmount > startPosition + spriteWidth)
{//Si la posicion de la camara supera el borde del sprite se reposicionara
transform.Translate(new Vector3(spriteWidth,0,0));
startPosition += spriteWidth;
}
else if(MoveAmount < startPosition - spriteWidth)
{
transform.Translate(new Vector3(-spriteWidth,0,0));
startPosition -= spriteWidth;
}
}
}
Investigar e Implementar el EFECTO PARALLEX. //Guardar Informacion sobre el Funcionamiento