2024-06-24 09:54:47 +00:00
|
|
|
using System.Collections;
|
2025-02-10 02:13:46 +00:00
|
|
|
using DDD.Audios;
|
|
|
|
using DDD.Items;
|
|
|
|
using DDD.Utility;
|
|
|
|
using DDD.Players;
|
2024-06-23 20:37:15 +00:00
|
|
|
using UnityEngine;
|
|
|
|
|
2025-02-10 02:13:46 +00:00
|
|
|
namespace DDD
|
2024-06-23 20:37:15 +00:00
|
|
|
{
|
|
|
|
public class SpineDamageableProps : DamageableProps
|
|
|
|
{
|
|
|
|
[SerializeField]
|
|
|
|
private SpineController _spineController;
|
|
|
|
|
|
|
|
[SerializeField]
|
|
|
|
private string _idleAnimationName;
|
|
|
|
|
|
|
|
[SerializeField]
|
|
|
|
private string _touchAnimationName;
|
|
|
|
|
|
|
|
[SerializeField]
|
|
|
|
private string _dieAnimationName;
|
|
|
|
|
2024-06-24 09:54:47 +00:00
|
|
|
private Coroutine _touchCoroutineInstance;
|
|
|
|
|
2024-06-23 20:37:15 +00:00
|
|
|
private void Awake()
|
|
|
|
{
|
|
|
|
_spineController = GetComponent<SpineController>();
|
|
|
|
}
|
|
|
|
|
2025-02-24 11:55:35 +00:00
|
|
|
protected override void Start()
|
2024-06-23 20:37:15 +00:00
|
|
|
{
|
2025-02-24 11:55:35 +00:00
|
|
|
base.Start();
|
2024-06-23 20:37:15 +00:00
|
|
|
_spineController.PlayAnimation(_idleAnimationName, true);
|
|
|
|
}
|
|
|
|
|
|
|
|
private void OnTriggerEnter(Collider other)
|
|
|
|
{
|
2025-02-24 02:55:22 +00:00
|
|
|
if (!other.CompareTag("Player") || CurrentHealthPoint <= 0 || string.IsNullOrEmpty(_touchAnimationName)) return;
|
2024-06-23 20:37:15 +00:00
|
|
|
|
2024-06-24 09:54:47 +00:00
|
|
|
Utils.StartUniqueCoroutine(this, ref _touchCoroutineInstance, TouchCoroutine());
|
2024-06-23 20:37:15 +00:00
|
|
|
}
|
2024-06-24 09:54:47 +00:00
|
|
|
|
|
|
|
private IEnumerator TouchCoroutine()
|
2024-06-23 20:37:15 +00:00
|
|
|
{
|
2024-06-24 09:54:47 +00:00
|
|
|
var touchTrack = _spineController.PlayAnimation(_touchAnimationName, false);
|
|
|
|
while (!touchTrack.IsComplete)
|
|
|
|
{
|
|
|
|
if (CurrentHealthPoint == 0) yield break;
|
|
|
|
|
|
|
|
yield return null;
|
|
|
|
}
|
2024-06-23 20:37:15 +00:00
|
|
|
_spineController.PlayAnimation(_idleAnimationName, true);
|
|
|
|
}
|
|
|
|
|
|
|
|
public override void Die()
|
|
|
|
{
|
|
|
|
if (!string.IsNullOrEmpty(DieSfxName))
|
|
|
|
{
|
|
|
|
AudioManager.Instance.PlaySfx(DieSfxName);
|
|
|
|
}
|
|
|
|
|
|
|
|
_spineController.PlayAnimation(_dieAnimationName, false);
|
2024-06-29 15:59:31 +00:00
|
|
|
|
2024-08-22 10:39:15 +00:00
|
|
|
if (!string.IsNullOrEmpty(CharacterIdx))
|
2024-06-29 15:59:31 +00:00
|
|
|
{
|
2025-02-10 02:13:46 +00:00
|
|
|
//ItemManager.Instance.ItemDropRandomPosition(CharacterIdx, transform.position, 0f);
|
2024-06-29 15:59:31 +00:00
|
|
|
}
|
2024-06-23 20:37:15 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|