FSM
- 유한상태 기계
- 유한한 갯수의 상태들로 구성된 기계 및 패턴
- 상태와 상태 간의 전환을 기반으로 동작
구성 요소
- 상태: 시스템이 취할 수 있는 다양한 상태
- 전환 조건: 상태 간 전환을 결정하는 조건
- 동작: 상태에 따라 수행되는 동작 또는 로직
동작 원리
- 초기 상태에서 시작하여 입력 또는 조건에 따라 상태 전환
- 상태 전환은 조환 조건 충족 시 발생, 전환 조건은 입력/시간/조건 등으로 결정
- 상태 전환 시 이전 상태의 종료 도작과 새로운 상태의 진입 동작 수행
구현
- Switch-Case문 -> 상태가 많아지고 조건이 복잡해지면 코드가 너무 길어진다.
- State Pattern -> 객체지향, 상태 간 전환을 일관되게 관리할 수 있다.
Character Controller
- 이동: 이동방향과 이동 속력을 설정할 수 있다.
- 중력: 중력과 점프 기능은 직접 개발이 필요
- 충돌 처리: 물리 엔진 사용 x
- 바닥 검출: 캐릭터가 바닥 위에 놓이도록 바닥 검출, 레이
- 움직임 제한: 지정된 영역 내에서 움직이게
- Slope Limit: 경사 제한
- Step Offset: 오를 수 있는 높이 제한
- Skin Width: 껍데기..
Cinemachine
BrainCamera가 여러 개의 virtual Camera를 관리
- 가상 카메라: 실제 카메라가 없는 상태에서도 여러 가상 카메라의 시점과 속성 조작
- 카메라 블렌딩: 여러 가상 카메라 간 전환 자연스럽게 블렌딩 기능 제공
- 트랙링과 추적: 오브젝트를 추적하여 자동으로 카메라를 따라가도록
- 애니메이션 연동: 애니메이션 시스템과 연동하여 카메라의 속성을 애니메이션과 동기화
- 렌즈 세트: 렌즈 조작
Vector3.SmoothDamp: 서서히 감속
AnimatorStateInfo currentInfo = animator.GetCurrentAnimatorStateInfo(0); // 해당 레이어에서 진행되고 있는 애니메이션 불러오기
sqrMagnitude: 두 위치 사이의 거리 제곱만 한 값. 자주 연산해야하는 상황에서 magnitude보다 좋다.