Files
Fishing2/Packages/com.waveharmonic.crest/Shared/Scripts/TimedDestroy.cs
2026-01-08 22:30:55 +08:00

63 lines
1.6 KiB
C#

// Crest Water System
// Copyright © 2024 Wave Harmonic. All rights reserved.
using UnityEngine;
namespace WaveHarmonic.Crest.Examples
{
/// <summary>
/// Simple utility script to destroy the gameobject after a set time.
/// </summary>
#if !CREST_DEBUG
[AddComponentMenu("")]
#endif
sealed class TimedDestroy : MonoBehaviour
{
[SerializeField, HideInInspector]
#pragma warning disable 414
int _Version = 0;
#pragma warning restore 414
[SerializeField]
float _LifeTime = 2.0f;
// this seems to make motion stutter?
// [SerializeField]
// float _ScaleToOneDuration = 0.1f;
[SerializeField]
float _ScaleToZeroDuration = 0.0f;
Vector3 _Scale;
float _BirthTime;
void Start()
{
_BirthTime = Time.time;
_Scale = transform.localScale;
}
void Update()
{
var age = Time.time - _BirthTime;
if (age >= _LifeTime)
{
Helpers.Destroy(gameObject);
}
else if (age > _LifeTime - _ScaleToZeroDuration)
{
transform.localScale = _Scale * (1.0f - (age - (_LifeTime - _ScaleToZeroDuration)) / _ScaleToZeroDuration);
}
/*else if (age < _ScaleToOneDuration && _ScaleToOneDuration > 0.0f)
{
transform.localScale = _Scale * age / _ScaleToOneDuration;
}*/
else
{
transform.localScale = _Scale;
}
}
}
}