본문 바로가기
유니티/3D RPG

008 플레이어 FSM

by 노오오오오옹 2019. 12. 22.

 기능

Player 클래스를 기능별로 분할하고, FSM 문서에 따라 구현한다.

※ 참고 사항

1. Player -> PlayerInteract(물체와 상호작용), PlayerBehavior(FSM와 연계, 애니메이션 재생 유무 판단)로 분할한다.

2. 대기(Idle) : 초기상태로, 캐릭터가 가만히 있는 상태다. 

3. 이동(Move) : 조이스틱이나 방향키를 통해 이동하고 있는 상태다.

4. 낙하(Fall) : 공중에서 떨어지고 있는 상태다.

5. 착지(Land) : 낙하 이후 지면과 부딪치면 발생되는 상태다. 

6. 회피(Roll) : 몬스터의 공격을 회피하는 상태다.

7. 일반 공격(Normal Attack) : 플레이어가 공격 버튼을 통해 발동되는 상태다.

8. 재생 유무는 PlayerBehavior에서 관리를 한다. 재생이후 bool 값들은 애니메이터에서 관리한다. 관리하는 시점은 Animator Enter, Stay, Exit 3가지 시점으로 구분된다. 

 

! 주의 사항

1. 회피는 모든 상태를 덮어쓸 수 있어야한다.

2. 콤보 공격 순서가 하나씩 발동되어야 한다.

3. 모든 상태는 대기상태로 돌아와야한다.

 

 코드

더보기
PlayerBehavior 클래스에서는 애니메이션을 재생할지 말지 정한다. 콤보 가능시간(CanCombo), 현재 콤보 순서(ComboCount), 콤보당 2회 입력 방지(IsDoubleAttack) 으로 콤보 공격을 순서대로 발동시킨다.
Animator에서 관리하는 클래스로, 애니메이션 진입, 유지, 퇴장 3가지 시점으로 구분한다. 

Animator에서 관리하는 클래스로, 애니메이션 진입, 유지, 퇴장 3가지 시점으로 구분한다. 공격 가능 시간처럼 x초후 값을 바꿔야 하는 경우 코루틴을 사용한다. 다만 코루틴은 MonoBehavior에서만 사용가능하여, PlayerBehavior 클래스에서 구현한다.

 

 

 구현 영상

 

 

 리펙토링

 

 

'유니티 > 3D RPG' 카테고리의 다른 글

010 아이템 구매 및 수정  (0) 2019.12.23
09 내 정보 화면(스텟+인벤토리)  (0) 2019.12.22
07 아이템 상점&툴팁  (0) 2019.12.16
06 자동 테스트 구현  (0) 2019.12.15
05 대화 시스템  (0) 2019.12.14

댓글