몬스터 스킬 코드 복구
This commit is contained in:
@@ -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;
|
||||||
// 경험치
|
// 경험치
|
||||||
|
|||||||
@@ -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; // 기본 쿨다운
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user