Files
Ultimate-Fishing-Simulator-…/Assets/Scripts/Assembly-CSharp/HoldAction.cs
2026-03-04 09:37:33 +08:00

57 lines
916 B
C#

using System;
using Obvious.Soap;
using UnityEngine;
public class HoldAction : MonoBehaviour
{
[SerializeField]
private FloatVariable _ActionVariable;
public float HoldTimeMultiplier = 1f;
private bool _IsHolding;
public float CurrentValue => _ActionVariable.Value;
public event Action OnComplete;
public void Hold()
{
_IsHolding = true;
}
public bool IsZero()
{
if (!_IsHolding)
{
return _ActionVariable.Value == 0f;
}
return false;
}
public void ResetHold()
{
_ActionVariable.Value = 0f;
_IsHolding = false;
}
private void Update()
{
float value = _ActionVariable.Value;
if (_IsHolding)
{
_ActionVariable.Value += Time.deltaTime * HoldTimeMultiplier;
if (value >= 1f)
{
this.OnComplete?.Invoke();
}
_IsHolding = false;
}
else
{
_ActionVariable.Value -= Time.deltaTime * HoldTimeMultiplier;
}
value = Mathf.Clamp(value, 0f, 1f);
}
}