Files
UltimateFishing/Assets/Scripts/Assembly-CSharp/TeleportTransitionBlink.cs
2026-02-21 16:45:37 +08:00

41 lines
1.2 KiB
C#

using System.Collections;
using UnityEngine;
public class TeleportTransitionBlink : TeleportTransition
{
[Range(0.01f, 2f)]
[Tooltip("How long the transition takes. Usually this is greater than Teleport Delay.")]
public float TransitionDuration = 0.5f;
[Tooltip("At what percentage of the elapsed transition time does the teleport occur?")]
[Range(0f, 1f)]
public float TeleportDelay = 0.5f;
[Tooltip("Fade to black over the duration of the transition")]
public AnimationCurve FadeLevels = new AnimationCurve(new Keyframe(0f, 0f), new Keyframe(0.5f, 1f), new Keyframe(1f, 0f));
protected override void LocomotionTeleportOnEnterStateTeleporting()
{
StartCoroutine(BlinkCoroutine());
}
protected IEnumerator BlinkCoroutine()
{
base.LocomotionTeleport.IsTransitioning = true;
float elapsedTime = 0f;
float teleportTime = TransitionDuration * TeleportDelay;
bool teleported = false;
while (elapsedTime < TransitionDuration)
{
yield return null;
elapsedTime += Time.deltaTime;
if (!teleported && elapsedTime >= teleportTime)
{
teleported = true;
base.LocomotionTeleport.DoTeleport();
}
}
base.LocomotionTeleport.IsTransitioning = false;
}
}