50 lines
1.5 KiB
C#
50 lines
1.5 KiB
C#
|
using UnityEngine;
|
||
|
|
||
|
// ReSharper disable once CheckNamespace
|
||
|
namespace BlueWaterProject
|
||
|
{
|
||
|
public class CombatStatus : MonoBehaviour
|
||
|
{
|
||
|
[field: SerializeField] public bool IsStunned { get; private set; }
|
||
|
[field: SerializeField] public bool IsSlowedMoveSpeed { get; private set; }
|
||
|
[field: SerializeField] public float MoveSpeedCoefficient { get; private set; }
|
||
|
|
||
|
private Coroutine stunCoolDownCoroutine;
|
||
|
private Coroutine slowMoveSpeedCoolDownCoroutine;
|
||
|
|
||
|
public void Stun(float duration)
|
||
|
{
|
||
|
IsStunned = true;
|
||
|
|
||
|
if (stunCoolDownCoroutine != null)
|
||
|
{
|
||
|
StopCoroutine(stunCoolDownCoroutine);
|
||
|
}
|
||
|
stunCoolDownCoroutine = StartCoroutine(Utils.CoolDown(duration, EndStun));
|
||
|
}
|
||
|
|
||
|
private void EndStun()
|
||
|
{
|
||
|
IsStunned = false;
|
||
|
stunCoolDownCoroutine = null;
|
||
|
}
|
||
|
|
||
|
public void SlowMoveSpeed(float duration, float moveSpeedCoefficient)
|
||
|
{
|
||
|
IsSlowedMoveSpeed = true;
|
||
|
MoveSpeedCoefficient = moveSpeedCoefficient;
|
||
|
|
||
|
if (slowMoveSpeedCoolDownCoroutine != null)
|
||
|
{
|
||
|
StopCoroutine(slowMoveSpeedCoolDownCoroutine);
|
||
|
}
|
||
|
slowMoveSpeedCoolDownCoroutine = StartCoroutine(Utils.CoolDown(duration, EndSlowMoveSpeed));
|
||
|
}
|
||
|
|
||
|
private void EndSlowMoveSpeed()
|
||
|
{
|
||
|
IsSlowedMoveSpeed = false;
|
||
|
slowMoveSpeedCoolDownCoroutine = null;
|
||
|
}
|
||
|
}
|
||
|
}
|