using System.Collections; using DDD.Audios; using DDD.Items; using DDD.Utility; using DDD.Players; using UnityEngine; namespace DDD { 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 Start() { base.Start(); _spineController.PlayAnimation(_idleAnimationName, true); } private void OnTriggerEnter(Collider other) { if (!other.CompareTag("Player") || CurrentHealthPoint <= 0 || string.IsNullOrEmpty(_touchAnimationName)) 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 (!string.IsNullOrEmpty(CharacterIdx)) { //ItemManager.Instance.ItemDropRandomPosition(CharacterIdx, transform.position, 0f); } } } }