<aside>
💡 캐릭터 애니메이션

이벤트 그래프에서 받은 데이터를 바탕으로 명령을 내리는 곳. 애님 그래프에서 **상태 기계(State Machine)**와 블렌드 스페이스가 조립됩니다.
💡 상태 기계(State Machince)
<aside>
💡 블렌드 스페이스(Blend Space)
여러 애니메이션을 입력 값에 따라 자연스럽고 부드럽게 섞어주는(Blending) 기능

좌측 Asset Details 패널에서 하단 그래프의 X, Y축을 설정할 수 있다. 현재 Walk, Run을 넣은 상태
애님 그래프에서 제작한 블렌드 스페이스 연결하기

캐릭터 애니메이션에 달리는 움직임(BS)을 넣어주고 speed 값 변수를 만들어 연결했다
애니메이션 블루프린트 이벤트에서 노드 작성하기

Try Get Pawn Owner → Get Velocity 를 통해 캐릭터의 벡터를 가져와 X, Y 축의 수치만을 사용한 벡터를 다시 생성한다.
Try Get Pawn Owner가 가져온 대상이 존재 및 유효한지 검사
Get Velocity에서 나온 값을 따로 모아 새로운 벡터를 만든다.
Speed라는 변수에 저장한다.<aside>
벡터: 방향성을 가진 힘 스칼라: 힘만 가짐 ****💡 = 벡터의 길이는 스칼라
</aside>

정상적으로 Run 애니메이션이 나오는 걸 볼 수 있다.
</aside>
<aside>
사용할 액터 블루프린트 컴포넌트에 InterpToMovement를 추가해준다.

해당 컴포넌트 디테일 패널을 들어가면 Control에 Control Points라고 있다. 해당 패널에서 움직일 값을 지정해 줄 수 있다.

z축(위,아래)방향으로 1000만큼 움직이게 설정해줬다.

위로 움직이는 걸 볼 수 있다.

Behaviour Type을 Ping Pong으로 설정해주면 계속 반복하는 걸 볼 수 있다.
.gif)
Y값도 1000만큼 움직이게 만들었다.
</aside>
<aside>
노드에 작성하기 전에 필요한 변수를 먼저 만든다.

노드 작성

1-2.1 Get Actor Location으로 시작하자마자 현재 위치를 시작 위치(Start Location)으로 지정한다.
<aside>
💡 만약 반복해서 A, B지점을 왔다 갔다 하지 않고 앞으로 계속 나아갈 거면 굳이 위 1-2.1을 작성할 필요가 없다. 해당 노드는 처음으로 돌아올 때 위치를 기억하기 위해 작성한 것이다.
</aside>

1-2.2 매 프레임(Tick)마다 이동한 거리를 위치로 지정한다.
Delta Seconds: 지난 프레임과 현재 프레임 사이의 시간 간격(초**)**. 컴퓨터 성능(FPS)에 상관없이 물체가 일정한 속도로 움직이게 만드는 '보정 값' 역할을 한다.
Set Actor Location: 계산된 새로운 위치로 물체를 옮긴다.
💡 Add Actor Local Offset을 사용해 훨씬 간결하게 작성하기!
위 노드로 실행하면 멈추지 않고 계속 앞으로 나아간다. 일정 거리를 가면 다시 반대로 움직이게 노드를 수정해보자.

1-2.3 시작 위치(Start location)에서 현재 위치(Get actor Location)이 이동한 거리(Move Distance)보다 커지면 속도(Velocity)를 반대로(Negate Vector) 속도(Velocity)만큼 뒤집는다.
True), 다음 단계를 실행한다.Vector의 모든 값(X, Y, Z)에 -1을 곱한다.
특정 거리까지 이동하면 다시 반대로 움직인다. (반복)
</aside>
<aside>
💡 Set Actor Location 대신 Add Actor Local Offset을 알게 되면서 노드를 더 간결하게 작성하면서 가독성도 좋아지고 추후 스파게티 코드? 라는 것을 방지할 수 있을 듯 하다.
</aside>