Unity/기능

[Unity] 회피 구현하기

turbulence93 2025. 9. 12. 23:27

회피식

 bool isHit = false;

 if (GetTotalEvasion() <= 0)
 {
     isHit = true;
 }
 else
 {
     float calculEva = acc / (acc + Mathf.Max(1, GetTotalEvasion()));

     float hitChance = Random.value;
     isHit = (hitChance < calculEva);
 }
  • acc : 공격하는 대상의 명중률
  • GetTotalEvasion : 공격 받는 캐릭터의 스텟 및 추가 회피율을 합산한 총 회피율
  • acc 와 eva가 같을 경우 50%
  • acc와 eva가 비율 계산을 통해 1과 0으로 수렴하여 스텟 수치에 비례하여 완만한 곡선형 분포 설정

장점

 

  • 레이팅 기반 분수식으로 안정성과 상대적 밸런싱이 뛰어남.
  • 고정 % 회피보다 플레이/디자인 모두에서 장점이 큼.

 

주의점

 

  • 괄호 필수: acc / (acc + eva) (우선순위 실수 방지).
  • float 연산 보장: 1 대신 1f 사용.
  • Random.Range(0, 1)(int) 금지 → 항상 0. Random.value 또는 Random.Range(0f,1f).
  • 상대방의 스텟과 현재 스텟을 계산함으로 정확한 %수치로 표시해 주기 어려움

 

'Unity > 기능' 카테고리의 다른 글

[Unity] 매개변수 params  (1) 2025.08.08
[Unity] Find 함수  (2) 2025.08.07
[Unity] CPU 와 GPU  (1) 2025.08.05
[Unity] New Input System 사용하기3  (0) 2025.07.18
[Unity] 람다의 캡처와 클로저 개념  (2) 2025.07.17