https://inradestrt.tistory.com/15?category=1033838
여기서 이어서 진행 합니다.
만들어놓은 엑터 세팅에 큐브를 지우고 좌측 컴포넌트 창에서 메시를 누르고 받아온 애니메이션 케릭터 파일의 스켈레탈 메시를 적용시킵니다.
그러면 원하는 케릭터 파일이 적용됩니다.
적용 후에 동작사항을 확인하고, 애니메이션 블루프린트를 위 이미지와 같이 만들어줍니다.
저는 콘텐츠 -> Blueprint -> anaimations 파일을 만들어 해당 파일 안에 만들어 주었습니다.
그 후에 애니메이션 블루프린트 파일을 더블클릭하면 이런 창이 열리게 되는데, 여기에서 원하는 애니메이션을 적용 할 수 있습니다.
에셋 브라우저 창에서 에니메이션을 적용시켜 올려줄 수 있고, 조금더 고등 에니메이션을 적용 하기 위해서는.
빈 공간을 클릭하고 새 스테이트 머신 추가 를 찾아 추가해줍니다.
그리고 스테이트 머신을 더블 클릭하면,
이렇게 창이 바뀌게 되는데, 요 창에서 원하는 에니메이션의 동작사항을 만들어 줄 수 있습니다.
간단하게 대기모션, 그리고 달리는 모션을 적용 해 줍니다.
대강 위 이미지와 같이 에셋 브라우저에서 클릭을 유지한 채로 끌고와서 놓아주면 배치가 됩니다.
Entry 의 화살표를 클릭하고 유지한채로 idle에 끌어다 놓으면 위와같이 연결되고 idle의 테두리를 클릭하고 유지한채로 run에 끌고가면 위와같이 연결됩니다. 상단 이미지의 3번째 이미지와 같이 연결 해 줍니다.
이렇게 배치가 되었다면, 이제 애니메이션의 구동방식에 대해 생각해보아야 합니다.
우리가 해야할 애니메이션의 동작사항은
Entry -> idle 로 이동하여 기본 대기상태로 동작하다가. 캐릭터의 이동이 감지되면, run으로 이동하고 이동이 감지되지 않으면, 다시 idle로 이동해야 합니다.
즉,
캐릭터 대기 -> 이동 -> 대기
idle -> run -> idle 로 이동합니다.
조건식을 추가해봅시다.
저 동그란 모양을 더블클릭하면 조건식을 추가하는 창으로 이동합니다.
위 이미지와 같이 Get Owning Actor 을 받아와 동작하는 엑터를 가져옵니다. 해당 엑터가 어떠한 행동을 하면 해당되는 행동에 대한 데이터를 받아올 수 있습니다. 타깃은 self임으로 자기자신을 의미합니다.
우리는 가져온 엑터에 대한 속도를 가져와야하니 Velocity를 Get하여 타깃의 속도를 가져옵니다.
가져온 타깃의 속도는 Vector값으로 리턴되기 때문에 Vector 을 리턴시키는걸 일정 값으로 바꿔주어야 합니다.
Vector Length를 통해 받아온 Vector값을 길이로 구해주어 속도값을 float로 받아옵니다.
이때 정지해있을 때의 리턴값은 0이고 이동하면 무조건 0.1보다 커짐으로 비교를 0.1로 추가해줍니다.
가져온 데이터가 0.1보다 크거나 같으면 결과값에 true를 반환시켜줍니다.
이제 우리는 idle에서 run으로 이동하는 조건을 추가하였습니다.
반대로 run에서 idle로 이동하는 조건을 추가해봅시다.
다시 run에서 idle로 가는 조건문을 더블클릭 해주고,
run과 가져올 데이터값은 같으니 똑같은 블루프린트를 복사 붙여넣기 해줍니다.
즉, 해당 이미지와 같이 만들어지게 됩니다. 위 run으로 이동하는 조건값이 크거나 같음 임 으로 다시 idle로 돌아가는 조건을 0.1보다 작음으로 바꾸어 줍니다.
위 영상과 같이 나온다면 성공입니다.
이렇게 애니메이션이 출력될 수도 있는데, 이것은 애니메이션 데이터에 캐릭터의 무브먼트가 같이 포함되어 있어서 발생하는 일입니다.
문제되는 애니메이션은 달리기 임 으로 달리기 파일을 찾아 더블클릭 해줍니다.
에셋 브라우저에서 찾아도 되고 본문 창에서 ctrl + space 를 눌러서 애니메이션 파일을 검색해도 좋습니다.
그러면, 열심히 달려나가는 케릭터를 보실 수 있는데, 여기서 좌측 에셋 디테일 창에서, 루트 강제 잠금을 체크해주시면 됩니다.
그러면 이렇게 공중에 떠서 약간 위를 바라보고 있게 되는데,
좌측 디테일 창에서 루트모션 강제잠금위의 루트모선 루트 락 의 고정 위치를 에니메이션 첫 시작부분으로 설정해 주시면 됩니다.
그리고 세이브 후 동작을 하면 정상동작이 이루어 집니다.