프로젝트 PF - StateComponent (1)

지용현·2023년 7월 18일

프로젝트PF

목록 보기
6/30

1. 계획

Playable Character의 State를 관리 할 Actor Component를 제작한다.
이름은 CStateComponent

2. 설계

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함수를 사용하도록 한다.

3. 구현

  • 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 대입 -> 델리게이트 브로드캐스트 )
profile
게임 개발자 지망생

0개의 댓글