using UnityEngine; // À¯´ÏƼ ¿£ÁøÀÇ ±âº» ±â´ÉÀ» ºÒ·¯¿Ã°Å¿¡¿ä -> UnityEngineÀ» /// /// Ç÷¹À̾îÀÇ ½Ã°¢(VFX) ¹× û°¢(SFX) È¿°ú¸¦ Àü´ãÇÏ´Â ½ºÅ©¸³Æ® /// public class PlayerEffects : MonoBehaviour // Ŭ·¡½º¸¦ ¼±¾ðÇÒ°Å¿¡¿ä -> MonoBehaviour¸¦ »ó¼Ó¹Þ´Â PlayerEffects¸¦ { [Header("--- ½Ã°¢ È¿°ú (VFX) ---")] // ÀνºÆåÅÍ Ã¢¿¡ Á¦¸ñÀ» Ç¥½ÃÇÒ°Å¿¡¿ä -> --- ½Ã°¢ È¿°ú (VFX) --- ¸¦ [SerializeField] private GameObject[] slashEffects; // ¹è¿­À» ¼±¾ðÇÒ°Å¿¡¿ä -> º£±â ÀÌÆåÆ® ÇÁ¸®ÆÕµéÀ» [SerializeField] private Transform slashSpawnPoint; // º¯¼ö¸¦ ¼±¾ðÇÒ°Å¿¡¿ä -> ÀÌÆåÆ® »ý¼º À§Ä¡¸¦ [Header("--- û°¢ È¿°ú (SFX) ---")] // ÀνºÆåÅÍ Ã¢¿¡ Á¦¸ñÀ» Ç¥½ÃÇÒ°Å¿¡¿ä -> --- û°¢ È¿°ú (SFX) --- ¸¦ [SerializeField] private AudioClip[] swingSounds; // ¹è¿­À» ¼±¾ðÇÒ°Å¿¡¿ä -> Èֵθ£´Â ¼Ò¸® Ŭ¸³µéÀ» private AudioSource _audioSource; // º¯¼ö¸¦ ¼±¾ðÇÒ°Å¿¡¿ä -> ¿Àµð¿À ¼Ò½º ÄÄÆ÷³ÍÆ®¸¦ private void Awake() // ÇÔ¼ö¸¦ ½ÇÇàÇÒ°Å¿¡¿ä -> ½ºÅ©¸³Æ® ½ÃÀÛ ½Ã Awake¸¦ { _audioSource = GetComponent(); // ÄÄÆ÷³ÍÆ®¸¦ °¡Á®¿Ã°Å¿¡¿ä -> ¿Àµð¿À ¼Ò½º¸¦ if (_audioSource == null) _audioSource = gameObject.AddComponent(); // ¾øÀ¸¸é Ãß°¡ÇÒ°Å¿¡¿ä -> ¿Àµð¿À ¼Ò½º ÄÄÆ÷³ÍÆ®¸¦ } /// /// ¾Ö´Ï¸ÞÀÌ¼Ç À̺¥Æ®¿¡¼­ È£ÃâÇÒ ÇÔ¼ö /// /// ÇöÀç °ø°Ý ÄÞº¸ ¹øÈ£ (0~2) public void PlaySlashEffect(int comboIndex) // ÇÔ¼ö¸¦ ¼±¾ðÇÒ°Å¿¡¿ä -> º£±â ÀÌÆåÆ®¸¦ Àç»ýÇÏ´Â PlaySlashEffect¸¦ { // 1. »ç¿îµå Àç»ý if (swingSounds.Length > comboIndex && swingSounds[comboIndex] != null) // Á¶°ÇÀÌ ¸ÂÀ¸¸é ½ÇÇàÇÒ°Å¿¡¿ä -> ÇØ´ç À妽ºÀÇ ¼Ò¸®°¡ ÀÖ´Ù¸é { _audioSource.PlayOneShot(swingSounds[comboIndex]); // Àç»ýÇÒ°Å¿¡¿ä -> ÇØ´ç ¿Àµð¿À Ŭ¸³À» } // 2. ÀÌÆåÆ® »ý¼º if (slashEffects.Length > comboIndex && slashEffects[comboIndex] != null && slashSpawnPoint != null) // Á¶°ÇÀÌ ¸ÂÀ¸¸é ½ÇÇàÇÒ°Å¿¡¿ä -> ÇØ´ç À妽ºÀÇ ÀÌÆåÆ®¿Í »ý¼º À§Ä¡°¡ ÀÖ´Ù¸é { GameObject slash = Instantiate(slashEffects[comboIndex], slashSpawnPoint.position, slashSpawnPoint.rotation); // »ý¼ºÇÒ°Å¿¡¿ä -> ÀÌÆåÆ® ¿ÀºêÁ§Æ®¸¦ »ý¼º À§Ä¡¿¡ Destroy(slash, 1.0f); // ÆÄ±«ÇÒ°Å¿¡¿ä -> »ý¼ºµÈ ÀÌÆåÆ®¸¦ 1ÃÊ µÚ¿¡ } } }