플레이어가 움직이거나 뛰거나, 가질 수 있는 상태는 유한하다
상태와 상태 간의 전환을 기반으로 동작하는 동작 기반 시스템
상태
전환조건
동작
초기 상태에서 시작
입력/시간/조건에 따라 상태 전환
상태 전환 시 이전 상태 동작을 중단하고 새로운 상태의 진입 동작 수행
1. Switch-Case문
장점 : 가장 간단하다.
단점 : 상태가 많아지고 조건이 복잡하면 코드가 길어진다.
유지보수가 어렵다.
상태가 추가되면 새로운 분기를 작성해야 하고, 중복된 코드가 많아진다.
2. State Pattern (상태패턴)
State Machine에 올라탈 각각의 스크립트를 작성하는 것
(BaseState 스크립트를 상속하는 walk, attack, idle 에 대한 스크립트를 각각 작성하고, 상태에 따라 state machine에 넣어준다)
장점 : 객체지향의 다형성을 활용
상태를 명확하게 정의, 상태 간 전환 일관된 관리
상태와 전환조건으로 나누어 구현하기 때문에 유지 보수에 용이
다양한 동작을 조합해서 원하는 동작을 구현