Playable Character의 State를 관리 할 Actor Component를 제작한다.
이름은 CStateComponent
UEnum 으로 선언 한 State의 관리만을 담당하며 Getter와 Setter 함수, 현재 State가 무엇인지 체크하는 Is 함수, State가 변경되면 연관되어 있는 클래스들에게 바뀐 State를 뿌려줄 DELEGATE 등으로 구성 할 계획이다.
UENUM은 Idle, Walk, Run, Attacking, Casting 일단 5개로 구성했다.Jumping의 추가는 고민중인데, 내가 생각하고 있는 Jumping 상태 체크는 Tick으로 CharacterMovementComponent의 IsFalling함수를 사용하여 체크하는 것인데, 이렇게 하면 공중에서 사용하는 기본공격이나 스킬을 시전했을 때 Tick에 의해 바로 다시 Jumping상태가 되어버리기 때문이다. 그래서 일단 Jumping 상태의 체크는 State에 추가하지 않고 그 때마다 IsFalling함수를 사용하도록 한다.
- CStateComponent 생성
(ProjectPF/Character/ActorComponents 폴더에 추가)
- UENUM ( EPlayableCharacterState ) 생성
( Idle, Walking, Running, Attacking, Casting 으로 구성 (추후 추가))
- DELEGATE 추가( DYNAMIC MULTICAST TwoParams )
( 이름은 FPlayableCharacterStateChanged , TwoParams(EPlayableCharacterState In PrevState, EPlayableCharacterState InNewState )
- Getter, Setter, Is 함수와 델리게이트, State 변수 생성
( SetState 함수 내용 : prevState에 현재 State 대입 -> State를 새로 입력받은 InState 대입 -> 델리게이트 브로드캐스트 )