Estoy moviendo mi cámara desde el origen hasta el destino, todo funciona bien, pero el problema es que no hay una entrada/salida fluida desde el origen hasta el destino. ¿Cómo logro una entrada suave cuando la cámara está en movimiento y una salida suave cuando la cámara llega al destino? Es necesario tener totalMovementTime ya que quiero que mi cámara llegue al destino en unos segundos.
public IEnumerator MoveToDestination () { float totalMovementTime = 2f; float currentMovementTime = 0f; while (Vector3.Distance (transform.localPosition, destinationCamPos) > 0) { currentMovementTime += Time.deltaTime; transform.localPosition = Vector3.Lerp (transform.localPosition, destinationCamPos, currentMovementTime / totalMovementTime); yield return null; } }Puede usar AnimationCurve para una aceleración "fácil" :) Cree un campo serializado en su secuencia de comandos de tipo AnimationCurve. En el inspector, juegue con él haciendo la curva de aceleración deseada (también hay ajustes preestablecidos listos para usar). Luego, para el paso (progreso) de su lerp, necesita "evaluar" usando su curva AnimationCurve.Evaluate Asegúrese de que está usando el valor normalizado para el progreso de Lerp.
[SerializedField] AnimationCurve curve; ... var normalizedProgress = currentMovementTime / totalMovementTime ; // 0-1 var easing = curve.Evaluate(normalizedProgress); transform.localPosition = Vector3.Lerp (transform.localPosition, destinationCamPos, easing);