본문 바로가기

Unity/Knowledge

float.MaxValue; Time.deltaTime?

private float timeSinceLastAttack = float.MaxValue;

 

게임 개발이나 다른 실시간 시스템에서 흔히 사용하는 패턴 중 하나로,

다음 공격까지의 대기 시간을 나타내기 위해 사용됩니다.

 

[ 코드 분석 ]

  • private: 이 변수는 클래스 내부에서만 접근할 수 있습니다.
  • float timeSinceLastAttack: 공격 이후 경과 시간을 저장하는 float 타입의 변수
  • float.MaxValue: float 타입이 가질 수 있는 가장 큰 값으로, 이는 약 3.40282347E+38

 

[ 의미와 목적 ]

이 변수는 게임에서 플레이어 또는 NPC의 공격 간의 시간을 추적하는 데 사용될 수 있습니다.

초기값을 float.MaxValue로 설정하는 이유는 다음과 같습니다:

  • 초기화
  • 이 값은 게임이 시작되었을 때 또는 캐릭터가 처음 생성되었을 때 아직 공격을 하지 않았음을 나타냅니다. float.MaxValue로 설정함으로써, 첫 번째 공격을 언제든지 할 수 있도록 합니다.

 

  • 조건 검사
  • 공격 로직에서 timeSinceLastAttack 값을 사용하여 특정 조건을 검사할 수 있습니다. 예를 들어, 공격 쿨다운(cooldown)이 끝났는지 확인하기 위해, 현재 시간과 timeSinceLastAttack의 차이가 일정 시간(쿨다운 시간)보다 큰지 확인합니다. 초기값이 float.MaxValue이면 첫 번째 검사에서 이 조건이 항상 참이 되어 첫 번째 공격을 즉시 허용합니다.

 

  • 리셋
  • 공격을 한 후에는 timeSinceLastAttack 값을 다시 초기화하거나 갱신하여 다음 공격까지의 시간을 추적합니다.

 

[ 예시 ]

이 예시에서

timeSinceLastAttack 변수는 Update 메서드에서 매 프레임마다 증가하며,

플레이어가 공격 버튼을 눌렀을 때와 공격 쿨다운 시간이 지났을 때 공격을 수행합니다.

공격 후 timeSinceLastAttack을 0으로 재설정하여 다음 공격까지의 시간을 다시 추적합니다.

초기값이 float.MaxValue인 것은 첫 번째 공격이 항상 즉시 가능하게 하기 위함입니다.

 

* Time.deltaTime은 프레임마다 정해진 고유 값

게임이 초당 60 프레임으로 실행된다면, 각 프레임 사이의 시간은 대략 1/60초, 즉 약 0.01667초가 됩니다.

게임이 초당 30 프레임으로 실행된다면, 각 프레임 사이의 시간은 대략 1/30초, 즉 약 0.03333초가 됩니다.

'Unity > Knowledge' 카테고리의 다른 글

Rigidbody2D - Body Type  (0) 2024.05.24
Vector, 몬스터가 플레이어를 추격 하는 로직 및 정규화  (0) 2024.05.14
Prefes와 Static 차이점  (0) 2024.05.12
공격 시스템 구축  (0) 2024.05.10
조준(Aim) 시스템 구축  (0) 2024.05.09