using System.Collections; using BlueWater.Audios; using BlueWater.Items; using BlueWater.Players; using BlueWater.Utility; using UnityEngine; namespace BlueWater { public class SpineDamageableProps : DamageableProps { [SerializeField] private SpineController _spineController; [SerializeField] private string _idleAnimationName; [SerializeField] private string _touchAnimationName; [SerializeField] private string _dieAnimationName; private Coroutine _touchCoroutineInstance; private void Awake() { _spineController = GetComponent(); } protected override void OnEnable() { base.OnEnable(); _spineController.PlayAnimation(_idleAnimationName, true); } private void OnTriggerEnter(Collider other) { if (!other.CompareTag("Player") || CurrentHealthPoint <= 0) return; Utils.StartUniqueCoroutine(this, ref _touchCoroutineInstance, TouchCoroutine()); } private IEnumerator TouchCoroutine() { var touchTrack = _spineController.PlayAnimation(_touchAnimationName, false); while (!touchTrack.IsComplete) { if (CurrentHealthPoint == 0) yield break; yield return null; } _spineController.PlayAnimation(_idleAnimationName, true); } public override void Die() { if (!string.IsNullOrEmpty(DieSfxName)) { AudioManager.Instance.PlaySfx(DieSfxName); } _spineController.PlayAnimation(_dieAnimationName, false); if (CharacterIdx != 0) { ItemManager.Instance.ItemDropRandomPosition(CharacterIdx, transform.position, 0f); } } } }