캐릭터가 자연스러운 애니메이션을 표현하려면 각 애니메이션 사이에 애니메이션 전환 조건을 정해야 한다. 이를 위해 이동 속도, 가속도, 점프, 낙하 여부 등의 정보를 가져와야 한다. 하지만 이런 캐릭터의 정보를 직접 가져오기 전에 먼저 Character Movement Component 객체를 변수화해야 한다.
Get Owning Actor 노드를 추가하고 Target을 'self' 로 설정한다. Get Owning Actor의 반환값을 Cast To Character 노드의 Object 입력 핀에 연결한다. Cast To Character 노드의 As Character 출력 핀을 SET Character 노드에 연결한다. Character 변수를 만들어 저장한다. Character 변수에서 Character Movement를 가져와 SET Character Movement 노드에 연결한다. Character Movement Component 변수를 저장해서 이후 애니메이션 로직에서 활용할 수 있도록 한다.Character 변수가 유효한지(Is Valid) 확인한 후, 유효할 경우에만 가져온다.Character 변수가 유효하지 않다면(Is Not Valid), 이후 로직을 실행하지 않는다.Sequence 노드를 사용해서 여러 개의 상태 업데이트를 순차적으로 실행한다.Then 0, Then 1, Then 2로 분기해서 각각 이동 속도, 이동 여부, 낙하 여부를 계산하는 로직을 실행한다.Character Movement Component에서 Velocity(속도 벡터) 값을 가져온다. Velocity는 X, Y, Z 축의 이동 속도를 포함하는 벡터로 표현된다. Vector Length XY 노드를 사용해서 X, Y 평면에서의 속도만 추출한다. Ground Speed 변수에 저장해서 이후 애니메이션 상태 전환에 활용한다. Ground Speed 값이 3.0보다 큰지 비교한다. Ground Speed > 3.0 → TRUE (이동 중) Ground Speed ≤ 3.0 → FALSE (정지 상태) Character Movement Component에서 Get Current Acceleration을 사용하여 현재 가속도 벡터를 가져온다. (0,0,0) 벡터와 비교하여 캐릭터가 힘을 받고 있는지 판단한다. Acceleration == (0,0,0) → TRUE (멈춰 있음) Acceleration ≠ (0,0,0) → TRUE (이동 중) AND 노드를 사용해서 "Ground Speed가 3.0보다 크다" AND "가속도가 0이 아니다" 조건을 체크한다. Should Move 변수를 TRUE(이동 중) 으로 설정한다. Character Movement Component에서 Is Falling 함수를 호출해서 캐릭터가 공중에 있는지 확인한다. Is Falling의 반환 값을 bIsFalling 변수에 저장해서 이후 애니메이션 상태 전환에 활용한다.