Files
survival-game/Assets/Mirror/Examples/TopDownShooter/Scripts/RespawnPortal.cs
2025-06-16 13:15:42 +00:00

52 lines
1.5 KiB
C#

using System.Collections;
using UnityEngine;
namespace Mirror.Examples.TopDownShooter
{
public class RespawnPortal : MonoBehaviour
{
public float rotationSpeed = 360f; // Degrees per second
public float shrinkDuration = 1f; // Time in seconds to shrink to zero
public AudioSource soundEffect;
private Vector3 originalScale;
private float shrinkTimer;
#if !UNITY_SERVER
void Awake()
{
// Store the original setup
originalScale = transform.localScale;
shrinkTimer = shrinkDuration;
}
void OnEnable()
{
// By using OnEnable, it shortcuts the function to be called automatically when gameobject is SetActive false/true.
// Here we reset variables, and then call the Portal respawn effect
transform.localScale = originalScale;
shrinkTimer = shrinkDuration;
StartCoroutine(StartEffect());
}
IEnumerator StartEffect()
{
soundEffect.Play();
while (shrinkTimer > 0)
{
transform.Rotate(Vector3.up, rotationSpeed * Time.deltaTime);
if (shrinkTimer > 0)
{
shrinkTimer -= Time.deltaTime;
float scale = Mathf.Clamp01(shrinkTimer / shrinkDuration);
transform.localScale = originalScale * scale;
yield return new WaitForEndOfFrame();
}
}
}
#endif
}
}