회피식
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).
- 상대방의 스텟과 현재 스텟을 계산함으로 정확한 %수치로 표시해 주기 어려움