Contents
접기
728x90
기본 개념
EnemyTransitionConditions.cs 안에서 이런 코드가 나온다.
이 코드를 공부해보았다.
public static Func<bool> PlayerInChaseRange(EnemyController e) =>
() => Vector3.Distance(e.transform.position, e.Player.position) < e.Data.chasingRange;
1. EnemyController e란?
- 그냥 적 하나를 가리키는 매개변수
- 이 적의 위치(e.transform.position)와 플레이어 위치(e.Player.position)를 비교하는 용도
2. Func<bool>이란?
- 실행하면 true/false를 돌려주는 작은 함수
- 즉, “조건 검사 공식”을 함수로 만들어둔 것
Func<bool> condition = () => true;
if (condition()) Debug.Log("조건 만족!");
3. 왜 bool이 아니라 Func<bool>을 쓸까?
- bool → 지금 즉시 한 번만 계산
- Func<bool> → 조건 함수를 저장해두고 필요할 때마다 실행
FSM에서는 상태 전환 조건을 매 프레임마다 반복 확인해야 하므로,
Func<bool>로 만들어두면 관리하기 훨씬 편하다.
요약
- EnemyController e → 검사할 적 객체
- Func<bool> → 조건을 나중에도 계속 실행할 수 있는 함수
- FSM에서는 Func<bool>이 적합 (전이 조건을 계속 체크 가능)
728x90
'GameDevelop > Unity기초쌓기' 카테고리의 다른 글
| OnDrawGizmos를 이용해 범위 시각화하기 (0) | 2025.05.29 |
|---|---|
| Unity GetComponent<Renderer>() 간단 정리 (0) | 2025.05.28 |
| URP 핑크색 되돌리기 (6) | 2025.05.22 |
| Unity Scene 창 초기화 & Game 뷰와 일치시키기 (0) | 2025.05.21 |
| Unity Font에서 Font Asset만들기 (0) | 2025.05.19 |