콘텐츠 파일 >> 우클릭 >> 애니메이션 블루프린트

파일 이름은 An_character 아니면 본인 편한걸로
캐릭터를 만들때 스켈레톤들이 뜨는데 본인이 쓸 리깅 되어있는 캐릭터들을 넣으면 된다


애니메이션 브라우저를 열면 에셋 브라우저가 보이는데 이곳에 뜨는것은 애니메이션 파일
콘텐츠 브라우저에 애니메이션 파일이 임포트 되어있다면 알아서 뜬다
단 1의 캐릭터의 애니메이션을 2의 캐릭터가 사용하지 못한다
애니메이션 블루프린트에는 이벤트 그래프, 애님그래프 총 2개가 있다

예시)Idie포즈를 연결하면

캐릭터가 잡힌 애니메이션 포즈로 바뀐다
단 지금까지는 아직 애니메이션 포즈만 잡힌거지 게임에서 움직이는 캐릭터가 이 포즈를 하는것이 아니다
캐릭터 블루프린트로 이동 후

젤 높은걸 눌러주고 디테일 창에서 anim을 검색해준다

젤 윗쪽에 애님 클래스가 나오는데 저기서 애니메이션 블루프린트를 연결해준다
예시 이미지의 경우 ABP_Bot을 눌러주면 된다

플레이를 해보면 적용이 되어있는 모습

초록색:애니메이션 시퀀스
주황색:블렌드 스페이스 타입
몽타주와 시퀀스의 차이점
시퀀스:단일 모션만 들어있다
몽타주:여러 개의 모션이 들어가는 게 가능합니다.
캐릭터 뛰고 걷고 만들기
블루프린트 폴더를 그대로 쓰지 말고
Anim 이라는 이름으로 새 폴더를 하나 만들어준다
폴더에서 우클릭후

애니메이션 블렌드 스페이스를 누른다

그럼 사용할 스켈레톤을 미리 세팅을 하는데 본인이 쓰는 스켈레톤 메쉬(캐릭터)를 선택
이름은 BS_RunWork
블랜드스페이스를 열면

중앙에 이렇게 생긴 검정색 베이스 칸이 보이는데 이게 그래프이다
Y축과 X축 2개를 사용하는 그래프

축 세팅은 왼쪽에 에셋 디테일 패널에서 볼 수 있다
여기서는 일단 새로축만 사용

새로 축의 이름을 Speed로 변경
최대 축 값을 500정도로 늘려준다 100도 크게 문제는 없지만 넉넉하게 500정도로

가로축을 사용하지 않을거라서 가로축 그리드를 2개 정도로 줄인다
미세해서 안보이지만 그래프에 선인데 잘 안보인다
그래프 세팅은 이렇게 하면 끝이다

에셋 브라우저에서 가만히 있는 포즈와 뛰는 모습의 애니메이션을 그래프에 넣어준다.

아까 새로축의 이름을 Speed로 이름을 바꿨기에 그래프에 Speed로 이름이 바뀌었다 속도가 느리면 Idle포즈 빠르면 달리는 모습

Ctrl을 누르고 그래프에 마우스를 대고 확인을 해보면 테스트를 해볼수 있다
여기서는 걷고 서있고 2개를 했지만 서있고 걷고 뛰고 3개도 가능

시프트 키를 누르면 점이 선이랑 맞춰서 딱 딱 맞춰짐 미세한 조정할떄는 시프트 키 안누르고 하면 됨
블랜드 스페이스는 섞어서 자연스럽게 보여준다라고 생각하면 편하다 두개의 다른 애니메이션 일지라도 두개를 넣으면
자연스럽게 모션이 취해진다
블랜드 스페이스에서 설정이 끝났다면 저장 후 애니메이션 블루프린트로 다시 이동한다

에셋 브라우저에서 방금 설정해둔 블렌드 스페이스를 애님그래프에 넣고 애니메이션 포즈를 연결해준다

이렇게 되면 아까 세팅한 가로 축 세로 축이 있다
근데 세로 축 값에 아무것도 없기때문에 속도 값을 찾는 방법
애니메이션 블루프린트에서 이벤트 그래프로 이동

이렇게 2개가 뜨는데 전부 다 사용

변수를 하나 만들어줘야한다.

변수의 이름을 Speed로 변경 플로트로 선택

그리고 애님 그래프에 스피트 변수를 그대로 마우스로 끌고 당겨서 놓으면 Get 아니면 Set으로 뜨는데 Get Speed를 선택
이렇게 하면 Speed에 아무런 값이 없지만 만약에 값이 담긴다면 블랜드 스페이스에 있는 그래프에 있는 Speed를 사용한다 이런 뜻

노드는 이렇게 연결해준다
이벤트 그래프로 다시 돌아와서
Speed변수를 다시 이벤트 그래프로 드래그해서 이번에는 Set Speed로 한다
설정하는 캐릭터의 Get Velocity를 가지고 온다

속도를 가지고 오고 우리가 필요한건 XY Z는 위쪽이다 그럼으로 우리가 필요한것은 XY축만 필요하다
GetVelocity라는 이 노드에서는 XYZ값이 다 들어있다 Relurn Value 핀 분활을 해준다
알면 좋은 갑작스러운 짧은 토막 상식
백터라는 것은
힘의 크기와 방향성을 띄고 있는 속도(방향도 포함)
스칼라 값은
힘의 크기만 나타내는 것
다시
수학에 백터 make vector을 선택

노드를 연결 X랑 Y를 받는 새로운 백터를 만들어 줘야한다
새로 만든 백터의 길이를 구하기 위해서 vector length을 연결 해준다

외워야 할것
백터의 길이는 스칼라다

아까 만들어둔 Speed 노드도 연결

그리고 실행할수 있게 이벤트 노드랑 연결을 해준다
이렇게 확인했을때 하나가 빠져있다
is valid를 검색해서 ?가 있는걸 찾아서 추가
왜 이것을 추가를 하냐?
프로그래밍을 할때 항상 무언가의 방어 장치가 필요하기 때문이다
애니메이션이 실행이 될떄 혹시나 뭔가 에러라든지 예상할 수 없는 그런 상황이 발생을 해서 이 블루프랜트가 존재하지 않는다는
지 같은 문제점들이 유효한지 안한지 먼저 체크를 해주는것

노드는 이렇게 총 연결해주면 된다.
그리고 지금부터는 스테이트 머신 사용법
스테이트 머신(State Machine)
상태(State)+기계(Machine)라는 두 단어가 결합된 말
상태(State)는 시스템(또는 객체)이 현재 어떤 조건에 ㄶ여 있는지를 뜻합니다.
기계(Machine)는 이벤트에 따라 내부적으로 작동하거나 변환이 일어나는 장치
소프트웨어 게임 개발,전차 회로 설계 등 다양한 분야에서 정해진 여러 상태 중 하나에 있으면서 특정 입력이나 사건에 의해 다른
상태로 전이한다라는 모렐을 가리킬 때 널리 사용된다.

여기서부터 간단하게 스테이트 머신을 만든다

애니메이션 블루프린트 애님그래프에는 현제 블랜드 스페이스 하나만 적용된 모습이다.
이제 여기서 스테이트 머신을 적용을 할 예정
우클릭 후 State Machine(애니메이션에 있음) >> New State Machine 더블클릭해서 들어간다 >>


우클릭 후 스테이트 추가 클릭 후 Idle
두번째 스테이트 추가는 Run
그리고 만들어진것에서 Idle 더블클릭 해서 들어간다

오른쪽에서 있는 Idle 가만히 서 있는 애니메이션 시퀀스를 오른쪽으로 끌어 넣는다 그리고 연결 후 저장
Run달리는 애니메이션은 블랜드 스페이스를 끌고와서 연결하고 Speed변수도 연결 해주어야한다

뛰는 상태인 경우에는 블렌드 스페이스 애니메이션이 실행되도록 세팅
Idle에서 뛴다는것은 바로 속도가 0에서 500으로 가는것이 아니고 속도가 1만 되도록 움직이는거
블랜드 스페이스에 Run을 안 넣는 이유는
만약에 우리가 스테이트 머신에서 움직이자마자 바로 런해서 뛴다고 하면 중간에 천천히 걷다가 뛰는 모션들이 없어지고
바로 뛰어나가는 모션이 나온다

그리고 스테이트 머신으로 돌아가서 노드를 연결해준다
Idle은 걸을수 있고
Run은 멈출수가 있다 라고 생각하면 편함
동그란 화살표들은 상태가 변경되는 조건이다

화살표에 올려보면 트랜지션 룰 이라고 뜬다 트랜지션 룰은 어떻게 설정을 하냐
화살표를 더블클릭 해준다
'

그럼 블리언값이 뜨는데 블리언값은 True, False 두가지의 값을 가지고 있고 맞거나 틀리거나다
만약에 Idle에서 Run으로 뛸 때 어떠한 조건이 참(True)이라면 상태가 변경이 된다
어떤 조건을 넣어야될까라 하면 속도와 관련된 조건이다
변수에서 Speed변수를 넣어준다 Greater ( > )이라고 검색을 한다

0보다 클때는 가만이 올라갈수록 캐릭터가 움직인다 그리고 여기서 부터 속도가 0보타 크거나의 노드를 연결
다시 뒤로 돌아가서

달리다가 가만히 멈추는 형태를 유지할려면
밑에 화살표를 더블클릭해서 들어간다
당연히 여기도 속도와 관련이 있는데 여기는 검색해서 Less Equal를 추가한다
방금 Greater이였는데 0이 포함되어있지 않은 값이였고 지금은 0이 포함된 값

속도가 0보다 작다면 멈춰있는 상태다 라는 값 뒤로 가는것도 포함이다
여기서부터 다시 Anim Graph로 돌아간다
그리고 원래 연결되어 있던 블렌트 스페이스를 삭제하고
새롭게 만든 스테이트 머신을 연결해준다

여기서 정상적으로 동작하는지 확인해준다
그리고 계속 점프에 관한 설정을 계속해서 변경해주고있었다 내부적으로 캐릭터 컴포넌트가
그래서 점프에 관한 값으로 상태를 하나 추가해서 애니메이션 적용
점프에 관한 상태는 블루프린트 캐릭터 무브먼트 컴포넌트에서 디테일과 이벤트 그래프에서 사용했던 노드와 설정을
그래도 사용하면 된다
애니메이션 이벤트 그래프로 돌아와서
속도값을 체크하고 있었는데 이제는 점프하는 값을 체크한다,
변수를 하나 만들어준다
변수를 추가하고 이름을 IslnAir로 적어준다 그리고 부울로 설정

노드추가
변수에서 땡겨서 Set In Air 추가 >> Try Get Pawn Owner Value 땡겨서 Get movement Component >> Is Falling >> Set In Air (실행핀 연결 안되어있음 연결) >> Flow Control에 있는 sequence 선택
[Get movement Component는 캐릭터 무브먼트의 값을 가지고 온것]

Try Get Pawn Owner Value은 겹처서 지웠음
여기서 애님 그래프로 이동 스테이트 머신에 적용을 해줘야한다
스테이트 에일리어스 추가
에일리어스는 2가지의 상태를 대신해서 처리해줄수 있다
Idle/Run 이렇게 이름을 지어준다
스테이트 추가 Jump
떨어지고 있는 상태 Fall 스테이트 추가해서 만들어준다
스테이트 추가 Land


Idle/Run을 선택하고 디테일에서 Idle 그리고 Run을 체크해준다.
그리고 각각의 상태에 아까처럼 애니메이션을 추가해주면된다
Jump뛰는 애니메이션
Fall 떨어지는 애니메이션
Land 착지하는 애니메이션

애니메이션이 계속반복되길 원한다면 디테일창에 애니메이션 루프를 선택해주면 된다

이렇게 연결 해주면된다.
그리고 Idle/Run과 Jump가운데 동그란 방향표를 더블클릭해서 트루의 조건을 넣어준다

Get Is in Air

그리고 점프를 하면 계속 떠있는게 아니라 떨어지는거라 선택되어있는 화살표를 클릭하고

자동 룰 세팅이있다 스테이트 시권스라고 적힌 저것을 체크해준다,
이것을 쉽게 말하면 애니메이션이 끝나면 자동으로 Fall로 넘어간다는 뜻이다

그리고 여기 Fall에서 Land 여기도 화살표 동그란거를 더블클릭해서 들어간다
Fall에서 Land로는 더 이상 공중에 있지 않는 조건이지때문에
변수에서 Get Is in Air를 꺼내고 >> 링크를 떙겨서 Not Boolean >>

그리고 다시 뒤로 돌아가서 마지막으로 Land 땅으로 돌아간다면 다시 Idle포즈로 돌아가야하니깐 마지막으로 노드를

이 이미지처럼 연결해주면 된다.

그리고 Idle상태로 돌아가는것도 자동 조건으로 아까 체크처럼 해준다