몬스터 스킬 코드 복구
This commit is contained in:
		@@ -21,6 +21,8 @@ namespace TON
 | 
			
		||||
        public int defencePower;
 | 
			
		||||
        // 몬스터 스킬 ID 
 | 
			
		||||
        public int monsterSkillID;
 | 
			
		||||
        // 몬스터 스킬 ID Two
 | 
			
		||||
        public int monsterSkillIDTwo;
 | 
			
		||||
        // 골드
 | 
			
		||||
        public int Gold;
 | 
			
		||||
        // 경험치
 | 
			
		||||
 
 | 
			
		||||
@@ -19,6 +19,8 @@ namespace TON
 | 
			
		||||
 | 
			
		||||
        private PlayerData _playerData;
 | 
			
		||||
        private MonsterData _monsterData;
 | 
			
		||||
        private MonsterSkillData _monsterSkillData;
 | 
			
		||||
        private MonsterSkillData _monsterSkillDataTwo;
 | 
			
		||||
        private Animator _animator; // 몬스터 애니메이터
 | 
			
		||||
        private string currentAnimationState; // 현재 애니메이션 상태
 | 
			
		||||
        private float moveSpeed = 2f;
 | 
			
		||||
@@ -39,6 +41,19 @@ namespace TON
 | 
			
		||||
        // public AudioClip _attackSound;
 | 
			
		||||
        public AudioClip _deathSound;
 | 
			
		||||
        public AudioClip _hitSound;
 | 
			
		||||
        
 | 
			
		||||
        // 몬스터 스킬 프리팹
 | 
			
		||||
        public GameObject smallFirePrefab;
 | 
			
		||||
        public GameObject DragonBreathPrefab;
 | 
			
		||||
        public GameObject IceBlastPrefab;
 | 
			
		||||
        public GameObject PumpkinCrashPrefab;
 | 
			
		||||
        public GameObject TrollChargePrefab;
 | 
			
		||||
        public GameObject TrollCrashPrefab;
 | 
			
		||||
        public GameObject TrollThundePrefab;
 | 
			
		||||
        public GameObject WolfEnergyWavePrefab;
 | 
			
		||||
        public GameObject WolfPunchPrefab;
 | 
			
		||||
        public GameObject DragonShockWavePrefab;
 | 
			
		||||
        public GameObject FireImpactPrefab;
 | 
			
		||||
 | 
			
		||||
        private void Start()
 | 
			
		||||
        {
 | 
			
		||||
@@ -152,7 +167,7 @@ namespace TON
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void Attack()
 | 
			
		||||
        public void Attack(GameObject player)
 | 
			
		||||
        {
 | 
			
		||||
            // 데미지 계산 (현재 임시 값)
 | 
			
		||||
            DamageCalculator damageCalculator = new DamageCalculator();
 | 
			
		||||
@@ -169,6 +184,12 @@ namespace TON
 | 
			
		||||
            // SoundManager.instance.SFXPlay("Attack", _attackSound);
 | 
			
		||||
            // Debug.Log($" 몬스터 공격! 최종 데미지: {damage}"); // 데미지 출력
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        public void PlayerAttack()
 | 
			
		||||
        {
 | 
			
		||||
            var target = GameObject.FindGameObjectWithTag("Player");
 | 
			
		||||
            Attack(target);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void SetOppositionDirection()
 | 
			
		||||
        {
 | 
			
		||||
@@ -201,5 +222,79 @@ namespace TON
 | 
			
		||||
            SoundManager.instance.SFXPlay("Death", _deathSound);
 | 
			
		||||
            Destroy(gameObject); // 몬스터 파괴
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        public void MonsterSkillLaunch(int skillNumber = 1)
 | 
			
		||||
        {
 | 
			
		||||
            try
 | 
			
		||||
            {
 | 
			
		||||
                var target = GameObject.FindGameObjectWithTag("Player");
 | 
			
		||||
                if (target == null)
 | 
			
		||||
                {
 | 
			
		||||
                    Debug.LogWarning("타겟을 찾을 수 없습니다!");
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                _spriteRenderer.flipX = target.transform.position.x < transform.position.x;
 | 
			
		||||
        
 | 
			
		||||
                MonsterSkillData skillData = skillNumber == 1 ? _monsterSkillData : _monsterSkillDataTwo;
 | 
			
		||||
                if (skillData == null)
 | 
			
		||||
                {
 | 
			
		||||
                    Debug.LogError($"스킬 데이터를 찾을 수 없습니다. SkillNumber: {skillNumber}");
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                GameObject skillPrefab = GetSkillPrefab(skillData.skillId);
 | 
			
		||||
                if (skillPrefab == null)
 | 
			
		||||
                {
 | 
			
		||||
                    Debug.LogError($"스킬 프리팹을 찾을 수 없습니다. SkillID: {skillData.skillId}");
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                GameObject newSkill = Instantiate(skillPrefab, transform.position + new Vector3(0, 1f, 0), Quaternion.identity);
 | 
			
		||||
                MonsterSkill monsterSkill = newSkill.GetComponent<MonsterSkill>();
 | 
			
		||||
                if (monsterSkill != null)
 | 
			
		||||
                {
 | 
			
		||||
                    monsterSkill.Initialize(this, skillData);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            catch (System.Exception e)
 | 
			
		||||
            {
 | 
			
		||||
                Debug.LogError($"스킬 발사 중 오류 발생: {e.Message}");
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        private GameObject GetSkillPrefab(int skillId)
 | 
			
		||||
        {
 | 
			
		||||
            // skillId에 따라 적절한 프리팹 반환
 | 
			
		||||
            switch (skillId)
 | 
			
		||||
            {
 | 
			
		||||
                case 1: return smallFirePrefab;
 | 
			
		||||
                case 2: return DragonBreathPrefab;
 | 
			
		||||
                case 3: return IceBlastPrefab;
 | 
			
		||||
                case 4: return PumpkinCrashPrefab;
 | 
			
		||||
                case 5: return TrollChargePrefab;
 | 
			
		||||
                case 6: return TrollCrashPrefab;
 | 
			
		||||
                case 7: return TrollThundePrefab;
 | 
			
		||||
                case 8: return WolfEnergyWavePrefab;
 | 
			
		||||
                case 9: return WolfPunchPrefab;
 | 
			
		||||
                case 10: return DragonShockWavePrefab;
 | 
			
		||||
                case 11: return FireImpactPrefab;
 | 
			
		||||
                
 | 
			
		||||
                default: return null;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        public float GetSkillCooldown(int skillNumber)
 | 
			
		||||
        {
 | 
			
		||||
            if (skillNumber == 1 && _monsterSkillData != null)
 | 
			
		||||
            {
 | 
			
		||||
                return _monsterSkillData.cooldown;
 | 
			
		||||
            }
 | 
			
		||||
            else if (skillNumber == 2 && _monsterSkillDataTwo != null)
 | 
			
		||||
            {
 | 
			
		||||
                return _monsterSkillDataTwo.cooldown;
 | 
			
		||||
            }
 | 
			
		||||
            return 5f; // 기본 쿨다운
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -208,7 +208,7 @@ namespace TON
 | 
			
		||||
        private void Attack()
 | 
			
		||||
        {
 | 
			
		||||
            _monsterBase.ChangeAnimationState(AniAttack);
 | 
			
		||||
            _monsterBase.Attack();
 | 
			
		||||
            _monsterBase.PlayerAttack();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void Exit()
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user