카테고리 없음
알고리즘) 더디 플래그 (Dirty Flag & Dirty Bit)
테샤르
2025. 4. 19. 19:53
더디 플래그 (Dirty Flag & Dirty Bit)
Dirty Flag는 어떤 객체나 상태가 변경되었음을 매번 업데이트하지 않고
특정 순간에서만 확인을 하기 위한 플래그를 말한다.
반응형
< 예시 코드 >
적의 위치가 변경이되는 순간에 dirty flag를 통해서 업데이트하는 시점을 판단하는 코드이다.
using UnityEngine;
public class EnemyAI : MonoBehaviour
{
public Transform player;
private Vector3 lastPlayerPosition;
private bool isPlayerPositionDirty = true;
private float cachedDistance;
void Start()
{
if (player != null)
lastPlayerPosition = player.position;
}
void Update()
{
// 플레이어 위치가 바뀌었는지 확인
if (player.position != lastPlayerPosition)
{
isPlayerPositionDirty = true;
lastPlayerPosition = player.position;
}
if (isPlayerPositionDirty)
{
RecalculateDistance();
isPlayerPositionDirty = false;
}
// 거리 기반 추적 또는 공격 판단 등
if (cachedDistance < 5f)
{
Debug.Log("Enemy is chasing player!");
}
}
void RecalculateDistance()
{
cachedDistance = Vector3.Distance(transform.position, player.position);
Debug.Log($"[Recalculated] Distance to player: {cachedDistance}");
}
}
★★☆☆☆
반응형