몬스터 스킬 코드 복구

This commit is contained in:
Mingu Kim
2025-06-01 21:57:00 +09:00
parent 8d940a0892
commit 9dccef7995
3 changed files with 99 additions and 2 deletions

View File

@@ -21,6 +21,8 @@ namespace TON
public int defencePower; public int defencePower;
// 몬스터 스킬 ID // 몬스터 스킬 ID
public int monsterSkillID; public int monsterSkillID;
// 몬스터 스킬 ID Two
public int monsterSkillIDTwo;
// 골드 // 골드
public int Gold; public int Gold;
// 경험치 // 경험치

View File

@@ -19,6 +19,8 @@ namespace TON
private PlayerData _playerData; private PlayerData _playerData;
private MonsterData _monsterData; private MonsterData _monsterData;
private MonsterSkillData _monsterSkillData;
private MonsterSkillData _monsterSkillDataTwo;
private Animator _animator; // 몬스터 애니메이터 private Animator _animator; // 몬스터 애니메이터
private string currentAnimationState; // 현재 애니메이션 상태 private string currentAnimationState; // 현재 애니메이션 상태
private float moveSpeed = 2f; private float moveSpeed = 2f;
@@ -39,6 +41,19 @@ namespace TON
// public AudioClip _attackSound; // public AudioClip _attackSound;
public AudioClip _deathSound; public AudioClip _deathSound;
public AudioClip _hitSound; 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() private void Start()
{ {
@@ -152,7 +167,7 @@ namespace TON
} }
} }
public void Attack() public void Attack(GameObject player)
{ {
// 데미지 계산 (현재 임시 값) // 데미지 계산 (현재 임시 값)
DamageCalculator damageCalculator = new DamageCalculator(); DamageCalculator damageCalculator = new DamageCalculator();
@@ -169,6 +184,12 @@ namespace TON
// SoundManager.instance.SFXPlay("Attack", _attackSound); // SoundManager.instance.SFXPlay("Attack", _attackSound);
// Debug.Log($" 몬스터 공격! 최종 데미지: {damage}"); // 데미지 출력 // Debug.Log($" 몬스터 공격! 최종 데미지: {damage}"); // 데미지 출력
} }
public void PlayerAttack()
{
var target = GameObject.FindGameObjectWithTag("Player");
Attack(target);
}
public void SetOppositionDirection() public void SetOppositionDirection()
{ {
@@ -201,5 +222,79 @@ namespace TON
SoundManager.instance.SFXPlay("Death", _deathSound); SoundManager.instance.SFXPlay("Death", _deathSound);
Destroy(gameObject); // 몬스터 파괴 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; // 기본 쿨다운
}
} }
} }

View File

@@ -208,7 +208,7 @@ namespace TON
private void Attack() private void Attack()
{ {
_monsterBase.ChangeAnimationState(AniAttack); _monsterBase.ChangeAnimationState(AniAttack);
_monsterBase.Attack(); _monsterBase.PlayerAttack();
} }
public void Exit() public void Exit()