[Unity]01. 상호작용 타입 별 처리

정국경·2024년 6월 26일
0

Unity

목록 보기
3/8

FSM 설계를 통해 게임 개발을 해보려 한다. 전 게임 할 때 부족한 설계로 인한 시간 낭비를 경험했기에 이번에는 전과는 다르게 진행하려 한다.

참고한 프로젝트는 Unity Open Project 'Chop Chop' 이고, 이 프로젝트에서 FSM 설계를 이해할 수 있었다.

StateMachine과 그 아래의 Actions, Conditions를 만들고 그것을 Scriptable Object로 만들어 개발자가 보기 쉬운 구조를 만들어 놓았다. 전체 StateMachine의 구조는 TransitionTableSO에서 쉽게 관리 가능하다.

위를 바탕으로 이번에 구현하고자 하는 것은 인력과 척력을 사용하는 게임 특성 상 Interact하는 것의 Type에 따라 다른 Action을 취해야 한다.

일단은 이렇게 짜봤다. Push와 Pull은 언제든 사용 가능하다는 기획이기 때문에 All State와 연결된다. 그런데 이게 좋은 설계인지에 대해 고민 중이다.

프로젝트 예시에서 Attack을 다루는 것과 비슷하다고 생각해 살펴보니

Attack에 대해서 IdleAttacking, WalkAttacking, JumpAscendingAttacking, JumpDescendingAttacking 처럼 예상 가능한 Attack 순간에 대한 모든 State를 구현해 놓았다.
따라서 위의 Diagram을 수정하여

이렇게 설계를 해봤다. Push와 Pull로 가는 Condition만 제대로 설계하면 괜찮을 것 같다. 현재로서는.

이 Condition 설정을 위해 Player.cs에 bool isHoldingSomethingType holdingType 변수를 추가해서 이것의 상태를 추적하는 Condition을 만들면 될 것 같다.

0개의 댓글