Learning
When: 1학년 9월 18일
How:
FSM에 대해 학기 중반부터 들어는 봤지만, 내용이 너무 어려워서 공부를 못하고 있었는데, 수업 시간에 배우니까 알 것 같아서 공부하게 되었습니다.
Understanding:
- 개념 : FSM은 Finite State Machine의 약자로, 유한 상태 기계라는 뜻입니다. 사실 전 영어로 보나 한국어로 보나 이해가 안되긴 마찬가지인데, 저도 2번 정도 공부할 때까지 FSM에 대해 이해하지 못했기 때문에 일단 먼저 엄청 쉽게 설명하자면 에너미나 플레이어 등의 상태를 정의해서 코드를 짜는 방식입니다. 사실 그렇게 코드를 짜서 애니메이션을 만든다고 싶기는 하지만 애니메이션 말고도 공격을 하거나 공격을 받는 등 다른 기능과도 연관성이 깊기 때문에 일단 상태를 정의한 후, 상황에 맞게 '현재의 상태'를 전이(바꾸기)하여 '현재의 상태'에서 해야 할 일을 계속 반복한다고만 알고 있다면 될 것 같습니다.
- 필요한 클래스 : FSM은 간단하게 switch를 사용하는 방법, 클래스로 복잡하고 긴 상태를 정의하기 때문에 확장성도 높 방법이 있습니다. 복잡한 방법을 사용하면 switch는 바로 이해 가능하니 일단 클래스를 이용한 방법을 소개하겠습니다.
- StateMachine : 상태를 저장하고 바꾸는 역할을 합니다.
- Brain : 상태를 추가, 실행하는 역할을 합니다.
- State(abstract, interface) :
- '현재의 상태'가 특정한 상태(플레이어 쫓기, 도망가기, 가만히 있기 등)로 바뀌었을 때 해야 하는 일('가만히 있기' 상태에서 '플레이어 쫓기' 상태가 되어 쫓는 애니메이션을 실행하기)
- '현재의 상태'가 그 상태일 때 해야 하는 일('플레이어 쫓기' 상태일 때는 플레이어의 위치를 받아서 자신으로 부터 플레이어의 위치의 방향으로 계속 움직여야 합니다.)
- '현재의 상태'가 그 상태에서 다른 상태로 전이될 때 해야 하는 일(플레이어에게 맞아서 몸이 하얗게 된 후, hitTime이 끝나서 다른 상태로 넘어갈 때는 색을 원래대로 바꿔야 합니다.)
Result: 저는 FSM을 개념만 배웠을 때는 이해도 안 되고 머리에 하나도 안 들어갔고, 직접 코드를 써보고 계속 반복 학습을 하니까 FSM이 무엇인지 제대로 알게 되었기 때문에 이 글만 읽고 이해가 되지 않는다고 해도 괜찮은 것 같습니다.
'UnityEngine' 카테고리의 다른 글
| [Unity] FSM_원리 (StateMachine) (0) | 2025.09.20 |
|---|---|
| [Unity] FSM_원리 (State) (0) | 2025.09.19 |
| [Unity] UnityEvent (0) | 2025.09.17 |
| [Unity] UI 선택 판정 버그 (0) | 2025.09.12 |
| [Unity] 2D에서 Light를 다루는 기본적인 방법 (0) | 2025.09.09 |