체력이 있는 오브젝트 사망 시, 적의 인식 대상에서 해제되도록 변경
This commit is contained in:
@@ -219,6 +219,14 @@ namespace Northbound
|
||||
return;
|
||||
}
|
||||
|
||||
// 타겟이 사망했는지 확인
|
||||
IDamageable damageable = targetPlayer.GetComponentInParent<IDamageable>();
|
||||
if (damageable != null && damageable.IsDead())
|
||||
{
|
||||
OnLostTarget();
|
||||
return;
|
||||
}
|
||||
|
||||
float distanceToPlayer = Vector3.Distance(transform.position, targetPlayer.transform.position);
|
||||
Vector3 chaseReferencePoint = (aiType == TeamType.Monster) ? _chaseStartPosition : _originPosition;
|
||||
float distanceFromReference = Vector3.Distance(transform.position, chaseReferencePoint);
|
||||
@@ -251,6 +259,14 @@ namespace Northbound
|
||||
return;
|
||||
}
|
||||
|
||||
// 타겟이 사망했는지 확인
|
||||
IDamageable damageable = target.GetComponentInParent<IDamageable>();
|
||||
if (damageable != null && damageable.IsDead())
|
||||
{
|
||||
OnLostTarget();
|
||||
return;
|
||||
}
|
||||
|
||||
// 핵심: ClosestPoint를 사용해 '벽 표면'까지의 실제 거리 계산
|
||||
float distance = GetDistanceToTarget(target);
|
||||
|
||||
@@ -312,6 +328,9 @@ namespace Northbound
|
||||
IDamageable damageable = col.GetComponentInParent<IDamageable>();
|
||||
if (damageable == null) continue;
|
||||
|
||||
// 이미 사망한 타겟은 제외
|
||||
if (damageable.IsDead()) continue;
|
||||
|
||||
ITeamMember teamMember = col.GetComponentInParent<ITeamMember>();
|
||||
bool isAttackable = (teamMember != null && teamMember.GetTeam() == TeamType.Player) || (teamMember == null);
|
||||
if (!isAttackable) continue;
|
||||
@@ -371,7 +390,17 @@ namespace Northbound
|
||||
private GameObject GetTargetPlayer()
|
||||
{
|
||||
// 1순위: 물리적 참조 (장애물/서버 전용)
|
||||
if (_cachedTargetPlayer != null && _cachedTargetPlayer.activeInHierarchy) return _cachedTargetPlayer;
|
||||
if (_cachedTargetPlayer != null && _cachedTargetPlayer.activeInHierarchy)
|
||||
{
|
||||
// 사망 상태 체크
|
||||
IDamageable damageable = _cachedTargetPlayer.GetComponentInParent<IDamageable>();
|
||||
if (damageable == null || damageable.IsDead())
|
||||
{
|
||||
ClearTargetPlayer();
|
||||
return null;
|
||||
}
|
||||
return _cachedTargetPlayer;
|
||||
}
|
||||
|
||||
// 2순위: 네트워크 ID 검색
|
||||
if (_targetPlayerId.Value != 0)
|
||||
@@ -379,6 +408,13 @@ namespace Northbound
|
||||
if (NetworkManager.Singleton.SpawnManager.SpawnedObjects.TryGetValue(_targetPlayerId.Value, out NetworkObject networkObject))
|
||||
{
|
||||
_cachedTargetPlayer = networkObject.gameObject;
|
||||
// 사망 상태 체크
|
||||
IDamageable damageable = _cachedTargetPlayer.GetComponentInParent<IDamageable>();
|
||||
if (damageable != null && damageable.IsDead())
|
||||
{
|
||||
ClearTargetPlayer();
|
||||
return null;
|
||||
}
|
||||
return _cachedTargetPlayer;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user