몬스터 스킬 코드 복구
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;
|
||||
@@ -40,6 +42,19 @@ namespace TON
|
||||
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()
|
||||
{
|
||||
_animator = GetComponent<Animator>(); // 애니메이터 컴포넌트 초기화
|
||||
@@ -152,7 +167,7 @@ namespace TON
|
||||
}
|
||||
}
|
||||
|
||||
public void Attack()
|
||||
public void Attack(GameObject player)
|
||||
{
|
||||
// 데미지 계산 (현재 임시 값)
|
||||
DamageCalculator damageCalculator = new DamageCalculator();
|
||||
@@ -170,6 +185,12 @@ namespace TON
|
||||
// Debug.Log($" 몬스터 공격! 최종 데미지: {damage}"); // 데미지 출력
|
||||
}
|
||||
|
||||
public void PlayerAttack()
|
||||
{
|
||||
var target = GameObject.FindGameObjectWithTag("Player");
|
||||
Attack(target);
|
||||
}
|
||||
|
||||
public void SetOppositionDirection()
|
||||
{
|
||||
_direction *= -1; // 이동 방향 반전
|
||||
@@ -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