[Unity] 유한상태머신(FSM)에 대해서

김소연·2025년 3월 21일

플레이어가 움직이거나 뛰거나, 가질 수 있는 상태는 유한하다
상태와 상태 간의 전환을 기반으로 동작하는 동작 기반 시스템

구성요소

상태
전환조건
동작

동작 원리

초기 상태에서 시작
입력/시간/조건에 따라 상태 전환
상태 전환 시 이전 상태 동작을 중단하고 새로운 상태의 진입 동작 수행

  • FSM의 예시: 플레이어 상태 관리
    • 상태: 정지 상태, 이동 상태, 점프 상태
    • 전환 조건: 이동 입력, 점프 입력, 충돌 등의 조건
    • 동작: 이동 애니메이션 재생, 점프 처리, 이동 속도 조정 등

❓ 어떻게 활용할까?

1. Switch-Case문
장점 : 가장 간단하다.
단점 : 상태가 많아지고 조건이 복잡하면 코드가 길어진다.
유지보수가 어렵다.
상태가 추가되면 새로운 분기를 작성해야 하고, 중복된 코드가 많아진다.

2. State Pattern (상태패턴)
State Machine에 올라탈 각각의 스크립트를 작성하는 것
(BaseState 스크립트를 상속하는 walk, attack, idle 에 대한 스크립트를 각각 작성하고, 상태에 따라 state machine에 넣어준다)

장점 : 객체지향의 다형성을 활용
상태를 명확하게 정의, 상태 간 전환 일관된 관리
상태와 전환조건으로 나누어 구현하기 때문에 유지 보수에 용이
다양한 동작을 조합해서 원하는 동작을 구현

0개의 댓글