fiore 9b1709b92c DEG-95 원거리 마법사 보스 패턴 설계 시작
- 근접 몬스터 전투 패턴 리팩토링
- 전략 패턴과 템플릿 메서드 패턴을 조합
2025-04-25 15:17:27 +09:00

52 lines
1.5 KiB
C#

using UnityEngine;
public class EnemyStateFlee :IEnemyState
{
private EnemyController _enemyController;
private Transform _detectPlayerTransform;
private const float MaxDetectPlayerInCircleWaitTime = 0.2f;
private float _detectPlayerInCircleWaitTime = 0f;
private float _fleeDistance = 5f; // 도망치는 거리
private float _attackRange = 7f; // 공격 범위
public void Enter(EnemyController enemyController)
{
_enemyController = enemyController;
Debug.Log("## Flee 상태 진입");
_detectPlayerTransform = _enemyController.TraceTargetTransform;
if (!_detectPlayerTransform)
{
_enemyController.SetState(EnemyState.Idle);
return;
}
}
public void Update()
{
// 도망치는 방향 계산
Vector3 fleeDirection = (_enemyController.transform.position - _detectPlayerTransform.position).normalized;
Vector3 fleeTarget = _enemyController.transform.position + fleeDirection * _fleeDistance;
_enemyController.Agent.SetDestination(fleeTarget);
float distance = Vector3.Distance(_enemyController.transform.position, _detectPlayerTransform.position);
// 일정 범위 안으로 플레이어가 접근하면 공격 시퀸스
if (distance <= _attackRange)
{
return;
}
}
public void Exit()
{
_detectPlayerTransform = null;
_enemyController = null;
}
}