/// <summary> /// Rotate the camera towards the destination rotation, slowing down while reaching it. /// </summary> /// <returns></returns> private IEnumerator NormalLerpRotating(CameraTarget target, TargetParameters.StaticTargetRotationParameters parameters) { while (Quaternion.Angle(transform.rotation, target.transform.rotation) > parameters.LerpThreshold) { transform.rotation = Quaternion.Slerp(transform.rotation, target.transform.rotation, parameters.LerpSpeed * Time.deltaTime); yield return(null); } CameraEventSystem.CameraTargetRotationReached(target, parameters); }
/// <summary> /// Move the camera towards the destination, slowing down while approaching. /// </summary> /// <returns></returns> private IEnumerator NormalLerpPositioning(CameraTarget target, TargetParameters.StaticTargetPositionParameters parameters) { while (Vector3.Distance(transform.position, target.transform.position) > parameters.LerpThreshold) { transform.position = Vector3.Lerp(transform.position, target.transform.position, parameters.LerpSpeed * Time.deltaTime); yield return(null); } CameraEventSystem.CameraTargetPositionReached(target, parameters); }
/// <summary> /// Rotate the camera towards the destination rotation at constant speed, reaching in the given time. /// </summary> /// <returns></returns> private IEnumerator ConstantLerpRotating(CameraTarget target, TargetParameters.StaticTargetRotationParameters parameters) { float elapsedRotatingLerpTime = 0; Quaternion startingRotation = transform.rotation; float step; while (elapsedRotatingLerpTime < parameters.Duration) { step = elapsedRotatingLerpTime / parameters.Duration; elapsedRotatingLerpTime += Time.deltaTime; transform.rotation = Quaternion.Slerp(startingRotation, target.transform.rotation, step); yield return(null); } CameraEventSystem.CameraTargetRotationReached(target, parameters); }
/// <summary> /// Move the camera towards the destination at constant speed, reaching in the given time. /// </summary> /// <returns></returns> private IEnumerator ConstantLerpPositioning(CameraTarget target, TargetParameters.StaticTargetPositionParameters parameters) { float elapsedPositioningLerpTime = 0; Vector3 startingPosition = transform.position; float step; while (elapsedPositioningLerpTime < parameters.Duration) { step = elapsedPositioningLerpTime / parameters.Duration; elapsedPositioningLerpTime += Time.deltaTime; transform.position = Vector3.Lerp(startingPosition, target.transform.position, step); yield return(null); } CameraEventSystem.CameraTargetPositionReached(target, parameters); }
public void SetDynamicCameraTarget(CameraTarget cameraTarget, TargetParameters.DynamicTargetPositionParameters posParameters, TargetParameters.DynamicTargetRotationParameters rotParameters) { CameraEventSystem.SetCameraDynamicTargetPosition(cameraTarget.gameObject, posParameters); CameraEventSystem.SetCameraDynamicTargetRotation(cameraTarget.gameObject, rotParameters); }
public void SetStaticCameraTarget(CameraTarget cameraTarget, TargetParameters.StaticTargetPositionParameters posParameters, TargetParameters.StaticTargetRotationParameters rotParameters) { CameraEventSystem.SetCameraStaticTargetPosition(cameraTarget, posParameters); CameraEventSystem.SetCameraStaticTargetRotation(cameraTarget, rotParameters); }
public void SetStaticCameraTarget(CameraTarget cameraTarget, TargetParameters.StaticTargetRotationParameters parameters) { CameraEventSystem.SetCameraStaticTargetRotation(cameraTarget, parameters); }
/// <summary> /// Immediately rotate the camera to match the target rotation. /// </summary> private void ImmediateRotating(CameraTarget target, TargetParameters.StaticTargetRotationParameters parameters) { transform.rotation = target.transform.rotation; CameraEventSystem.CameraTargetRotationReached(target, parameters); }