반응형

캐릭터 블루프린트에서는 통상적으로 세 가지 이벤트를 분류하여 처리하게 되는데, Event Graph / Tick Graph / Input Graph가 그것입니다.

  • Event Graph - Begin 이벤트를 필두로, 사전에 얻어와야할 정보를 미리 등록하는 곳이라 생각하면 좀더 이해가 편할것이다. 캐릭터의 정보를 저장하기 위해 만든 Enum 값이나 Structure등 미리 데이터를 읽어와야 하는 것들을 변수로 지정하거나 하는등의 작업을 통해 사전 빌드업을 처리하는 이벤트 공간이다.
  • Tick Graph - 말 그대로 Tick 단위로 실행되는 이벤트로서 게임플레이중 실시간으로 실행되는 영역이다. 이 부분에서는 너무 과도한 계산식이 무리하게 들어가다보면 랙이 발생할 수 있으므로 항상 과부하되는 지점이 없는지 항상 체크하여야 하는 영역이다.
  • Input Graph - 키보드나 게임패드등 외부에서 입력이 들어왔을 때 처리하는 영역이다. 최근에 언리얼쪽에서 Input 쪽을 좀더 프리시졀하게 작동하도록 여러가지를 도입하고 있는 추세이다.

캐릭터 BP에서 처리되는 모든 내용은 결국 Anim BP 가 처리하는데 용이한 정보를 업데이트하는데 주력하고 있다는 것입니다.

1. ALS_Base_CharacterBP 의 이벤트 그래프 처리에 대한 설명.

  • 굉장히 길고 복잡한 설명이 될 수 있으므로 숨을 크게 들이쉬고, 하나하나 정확하게 작동하는지 확인해 보시길 추천드립니다. 너무 내용이 길어질 수 있어 폴딩형으로 정리합니다. 자세한 확인은 아래를 펼쳐보시길 바랍니다.
  • BeginPlay 이벤트 - 아래 펼쳐보기
더보기
 BeginPlay 이벤트
  • Begin Event에서 가장 기본적인 정보들을 읽어오는 부분을 On Begin Play라는 함수로 처리되었다.  
    • On Begin Play 처리 내용
  • Add Tick Prerequisite Actor - Target인 Mesh Component는 Self 노드(Base Character BP)의 Tick이 실행되고 나서 Tick을 실행하도록 한다.
  • Get Anim Insatnce - 현재 사용되는 캐릭터 BP의 애님 인스턴스와 통신한다.
    • et Movement Model - 현재 사용되는 모델의 데이터 테이블과 통신하도록 설정한다. 아래의 데이터 테이블 정보가 결국 캐릭터 무브먼트의 이동 속도 등을 결정하게 하기 위한 것이다.

      • 캐릭터에 구성되는 각각의 Enum 정보값을 읽어와서 변수로 통신하도록 설정한다. 그 정보는 각각 아래와 같다.
        • ALS_Gait : Walk/ Run/ Sprint
        • ALS_RotataionMode : Velocity Direction / Looking Direction / Aiming 
        • ALS_Stance : Standing / Crouching
        • ALS_OverlayState : 각각의 무기별 혹은 체형별로 구분
          • 이곳은 추후에 AnimBP에서 캐릭터의 Additive 모션을 오버레이로 처리하기 위한 사전 공간이다.
  • Set default rotation values :
  • 이곳은 Velocity Direction 모드를 사용할 경우 현재의 로테이션의 방향을 추출하여 해당되는 모션을 뿌리기 위해 현재의 캐릭터 각도 정보를 얻어오는 공간이다. Begin에서 선언된 이후 상황에 따라 주기적으로 로테이션 값을 새로 셋팅하게 된다.

 

  • State Event - 아래 펼쳐보기
더보기
On Pawn Movement Mode Changed - Ground / In Air / Mantling / Ragdoll 인지를 얻어오는 이벤트와 함수
  • 여기서 사용되는 Enum 값은 'ALS_MovementState'을 참조한다. 




  • Crouch / UnCrouch - 앉기 상태를 얻어오는 이벤트와 함수
    • Stance 상태를 읽어와서 앉기인지 서기인지를 구분시켜 준다.
      • 이때 메크로 기능까지 사용하여 현 재상태의 Local값 / World값 / Transform값 / DoWhile 인지까지 판단하여 캐릭터 상태를 지속적으로 체크하는 기능을 사용한다.






  • State Changes - 앉기와 비슷한 맥락으로 구성되어 있으며 Begin Event에서 ALS_Gait  / ALS_RotataionMode  / ALS_OverlayState  등등의 함수에서 초기 셋팅되었던  각각의 스테이트값을 이벤트가 생길 때 마다 새로 셋팅하는 기능을 갖추게 한다.
    • 여기서도 역시나 메크로 기능을 통해 각각의 상태 값을 디테일하게 가지게 된다.
    • 이 곳에서 꾀나 많은 작업이 일어나게 되므로 세세하게 기능을 확인하고 넘어가야 할 중요한 기능 구현 단계이다.
    • 각각의 On Changed 함수 파악하기
      • On Movement State Changed : 무브먼트 상태가 에어일 경우에 대한 분기로 들어와 에어가 아니면 그라운드 부분을 처리하고, Rolling 일경우에는 Ragdoll 이 시작하게 되어 있다. Ragdoll 에 대한 정의는 아직 알수가 없는것이 메인 캐릭터를 아직 자식으로 넣어놓지 않은 상태라 아직 상태체크가 불가하다.
  • On Movement Action Changed : Crouch 인지 아닌지를 판단하고 상태에 따라 Rolling 모션이 처리하게 하는 기능을 한다. 이 기능도 아직 자식으로 스켈레탈 캐릭터를 연결하지 않았기 때문에 완벽히 확인이 힘들다. Crouch가 잘 작동하는지만 확인해 보자.
  •  On Rotation Mode Changed : 현재 1인칭 모드(Looking Direction)인지 3인칭 모드(Velocity Direction)인지를 감시한 후 View Mode가 First인지 Third인지 알려주게 된다. 카메라 제어할 때 정보를 보내기 위한 용도이다.

  •  
  •  On Gait Changed : Walk / Run / Spint 인지를 감시한다.
  • On View Mode Changed - 위 On Rotation Mode Changed 에서 Bpi Set View Mode의 정보를 얻어와서 현재의 뷰모드를 통해 Rotation Mode를 결정한다.

 

 

  • Movements Events : 아래 펼쳐보기
    • 점프 / 착지 / Falling / Mantle / Rolling 상황등의 특수 상황 처리 내역. 
더보기

On Landed : 땅에 착지 하는 여러가지 순간에 맞게 마찰 인수 제동에 변화를 주는 시스템입니다. 착륙시 제동 마찰을 일시적으로 증가시켜 착륙의 정확성을 올리는 역할을 합니다.

 

On Jumped : 속도가 100이상인 경우 새로운 In Air Rotation 을 속도 회전으로 설정하는 기능을 부여합니다.

 

Breakfall / Roll : 루트모션 몽타주가 재생되어야 할 타이밍에 몽타주 플레이시켜줌. Roll

 

Mantle Timeline : 이 타임라인은 MantleStart 함수에서 트리거되며 캐릭터를 새 위치로 이동시키는 함수를 업데이트하는 기능입니다.벽넘기 이벤트에 사용됩니다.

 

 

 

현 상태에서 각각의 변수를 감시하도록 하고, 플레이를 한다음 여러가지 상태변화를 주면서 정상적으로 블루프린트가 작동하는지 체크한 후에 다음 단계로 넘어가는 것이 중요하다. 현 상태에서 잘작동하지 않는 상태에서 계속해서 그냥 넘어가면 나중에 문제를 체크하는 것이 상당히 어려워 진다. 

 

 

 

반응형

+ Recent posts