Degulleo3D/Assets/Scripts/Character/Enemy/PldDogController.cs

91 lines
2.3 KiB
C#

using System;
using System.Collections;
using Unity.VisualScripting;
using UnityEngine;
public class PldDogController : EnemyController
{
[Header("공격 패턴 관련")]
[SerializeField] private float patternInterval = 3f;
private float _patternTimer = 0f;
private int _currentPatternIndex = 0;
private bool _isPatternRunning = false;
[Header("각종 데미지 이펙트 세트")]
[SerializeField] private GameObject chariotSlashWarning;
[SerializeField] private GameObject chariotSlash;
[Space(10)]
[SerializeField] private GameObject verticalWarning;
[SerializeField] private GameObject verticalSlash;
[Space(10)]
[SerializeField] private GameObject horizontalWarning;
[SerializeField] private GameObject horizontalSlash;
// 몬스터의 행동 스크립트
// IsBoos = 보스몬스터 여부
// IsInBattle = 전투중인지 여부
protected override void Awake()
{
base.Awake();
IsBoss = true;
}
private void Update()
{
base.Update();
if (IsInBattle && !_isPatternRunning && CurrentState == EnemyState.Attack)
{
_patternTimer += Time.deltaTime;
if (_patternTimer >= patternInterval)
{
ExecutePattern(0);
}
}
}
private void ExecutePattern(int patternIndex)
{
_isPatternRunning = true;
switch (patternIndex)
{
case 0:
{
ChariotSlashPattern();
break;
}
case 1:
{
break;
}
case 2:
{
break;
}
}
}
private void ChariotSlashPattern()
{
Debug.Log("ChariotSlashPattern: 보스가 차지 슬래시를 사용합니다.");
EnemyAnimator.SetBool("VertiAttack", true);
var warning = Instantiate(chariotSlashWarning, transform.position, Quaternion.identity)
.GetComponent<ChariotAoeController>();
DamageEffectData effectData = new DamageEffectData()
{
damage = (int)attackPower,
radius = 7.5f,
delay = 2.5f,
targetLayer = TargetLayerMask,
explosionEffectPrefab = chariotSlash
};
warning.SetEffect(effectData, this);
}
}