이번 글에서는 움직이는 캐릭터에 애니메이션을 추가해주려 한다.
애니메이션을 직접 만들 수도 있지만, 거기까진 힘든 경우가 많고
보통 마켓플레이스에서 추가한 에셋에 캐릭터가 있다면, 애니메이션도 기본적으로
제공되는 경우가 많다.
그럼 애니메이션을 추가해보자.
먼저 Anim Class를 만들어 줘야한다.
아래와 같이 만들 경로에서 마우스 우클릭->새 C++ 클래스

이후 모든 클래스 클릭->animinstance 검색 후 생성

해당 클래스는 MyCharacter 처럼 앞으로 추가될 애니메이션들에 부모 클래스이다.
아래와 같이 해당 클래스를 부모로 가지는 블루프린트를 만들어 준다.(MyCharacter에서 BP_Shinbi를 만들때와 방법은 같다. 앞으로도 이런 식으로 블루프린트를 만들어 줄거다.)


여기서 Skeleton이라는 개념이 나오기 시작하는데, 그냥 캐릭터의 뼈대를 선택한다고 생각하면 된다.
다만 주의 할 점은 이 뼈대를 내 캐릭터가 아닌 다른 캐릭터의 뼈대로 선택하게되면,
당연하겠지만 애니메이션이 적용되지 않는다. 반드시 본인의 캐릭터의 Skeleton을 선택해주자.
나는 Shinbi를 사용하기 때문에 Shinbi를 선택해줬다.
이후 아래처럼 블루프린트 설정 창에서 클래스 세팅->디테일에 클래스 옵션->부모 클래스를
아까 만들어준 MyAnimInstance로 바꿔준다.(위에서 만든 AnimInstance의 명칭으로 바꿔주면 된다.)

이제 캐릭터가 가만히 서있을때의 모션을 찾아서 넣어줄거다.
먼저 아래 처럼 에셋 브라우저(오른쪽 메뉴 아래쪽에 있다.)에서 보통 가만히 서있을때 모션은 Idle을 검색하면 나오는데,
하나를 선택해서 더블클릭하면 해당 모션을 볼 수 있다.

원하는 모션을 선택한 후에 드래그 하여 AnimGraph에 넣어주고
흰색 팔벌린 사람 모양을 드래그하여 최종 애니메이션 포즈에 연결해준 후

컴파일하면, 아래와 같이 모션이 적용된 걸 확인 할 수 있다.


이후 내 캐릭터에 적용하려면,
전에 만든 캐릭터 블루프린트에서 메쉬를 선택한 후,
아래 처럼 애니메이션 항목에 애님 클래스를 방금 만들어준 Anim 블루프린트로 바꿔준다.

그리고나서 컴파일 하면,

짜잔~ 목각 인형에서 이제는 Idle 애니메이션이 적용된 캐릭터로 변해있다!
여기서 끝내면 서운하니,
이동 모션과 점프 모션도 한번 넣어보자.
먼저 점프 키를 넣어줘야 하니,
프로젝트 세팅에서 Space를 키맵핑 해주자.

이후 MyAnimInstance.h에
public:
UMyAnimInstance();
virtual void NativeUpdateAnimation(float DeltaSeconds) override;
private:
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Pawn, Meta = (AllowPrivateAccess = true))
float CurrentPawnSpeed;
MyAnimInstance.cpp에
UMyAnimInstance::UMyAnimInstance()
{
CurrentPawnSpeed = 0.0f;
}
void UMyAnimInstance::NativeUpdateAnimation(float DeltaSeconds)
{
Super::NativeUpdateAnimation(DeltaSeconds);
auto Pawn = TryGetPawnOwner();
if (::IsValid(Pawn))
{
CurrentPawnSpeed = Pawn->GetVelocity().Size();
}
}
추가해준다. 그리고 저장 후 컴파일.
이후 애니메이션 블루프린트롤 보면 아래와 같이 내가 만든 CurrentPawnSpeed가 추가되어 있는걸 볼 수 있다.

이제 블루프린트를 수정하여, CurrentPawnSpeed가 0보다 크면 이동모션이, 아니면 Idle 모션이 적용되게 해볼거다.

완성된 모습은 위와 같다. 일일히 캡처해서 보여주는게 쉽지 않아서 이렇게 코멘트를 달아서 설명하는게 나을것 같다.
여기까지 한 후 컴파일하고 실행하면, (원격 수업을 듣고 있는 중이라 그런지 사운드에 치지직 소리가 들어갔다..)
이렇게 이동 모션이 들어갔는데, 뭔가 이동하는게 이상해서 한참을 찾아해맸는데..

컨트롤러 회전 요 사용, 이게 체크되어 있어서 그랬던 거였다..오랜만에 처음부터 하느라 뭔가 있었다는건 알았는데,
생각이 안나서 한참을 찾았다..해당 옵션을 체크 해제하고 다시 플레이 해보면,
이렇게 잘 움직인다..
이거때문에 삽질을 너무해서..일단 여기까지 하고
다음 글에서 점프 애니메이션을 추가해보도록 하겠다.
'언리얼엔진' 카테고리의 다른 글
언리얼 엔진 활용하기 - 6. Animation Montage(공격 모션 추가) (0) | 2023.02.20 |
---|---|
언리얼 엔진 활용하기 - 5. 캐릭터 애니메이션 추가하기2 점프 추가 (0) | 2023.02.20 |
언리얼 엔진 활용하기 - 3. 캐릭터 이동하기 (0) | 2023.02.11 |
언리얼 엔진 활용하기 - 2. 캐릭터 추가하기 (0) | 2023.02.04 |
언리얼 엔진 활용하기 - 1. 프로젝트 만들기 (0) | 2023.02.04 |