인생언리얼TPS

3.1-3 플레이어 메시 적용

UNREAL 2023. 12. 12. 02:53

BP_TPSPlayer를 열어보면 4개의 컴포넌트가 이미 포함되어 있습니다. 

Capsule Component : 콜리전 담당

Arrow : 방향을 나타내는 화살표

Mesh : 외관을 표시하는 메시

Character Movement : 이동과 물리시뮬레이션을 담당

ThirdPerson캐릭터 불러와서 적용시키기

컨텐트드로워 +Add후 다음과 같이 ThirdPerson 블루프린트를 선택하고

AddtoProject를 누르면 블루프린트만 임포트됩니다.  프로젝트만들때 선택하면 C++클래스까지 포함됩니다.

이제 Mesh카테고리에서 Skeletal Mesh Asset을 클릭해서 SK_Mannequin을 선택할수 있습니다.

선택후 뷰포트에는 인형이 보이는데 떠 있고 화살표 방향을 보고 있지 않습니다. 트랜스폼을 Z로케이션 로테이션을 -90으로 변경해 맞추어 줍니다.
스켈레톤메시 설정하기

언리얼은 C++클래스를 컴파일하면 UClass가 먼저 만들어지고 언리얼에디터가 실행하면 생성자코드를 실행하여 클래스기본객체 CDO인스턴스를 생성합니다.

https://blog.naver.com/jokorat/222835529448

 

[Unreal] UCLASS, 언리얼 오브젝트

1. 기본포맷 ClassName.generated.h : 언리얼 헤더 툴(Unreal Header Tool:UHT), 모든 #include에...

blog.naver.com

 

C++코드에서 메시 불러오기

매니의 메시경로를 복사하기 위해 Characters>Mannequin_UE4>Meshes 폴더로 들어가 SK_Mannequin을 Ctrl-C해서 코드에서 사용하다. 예제와 같이 좀 정리해야한다 아니면 ' '  작은 다옴표 안에만 사용한다.

교재의 AnimationPack이 UE4 매니 스켈레톤을 사용해기 때문입니다 .UE5를 사용하고 싶으신분은 리타게팅을 하시면 됩니다.

ConstructorHelpers::FObjectFinder<USkeletalMesh> 를 이용해 CDO 인스턴스를 로딩할수 있습니다.

FClassFinder가 아닌 FObjectFinder라는데 주의하셔야 합니다. 인스턴스를 잘 불려졌다면 GetMesh()에 지정해줘야 합니다. Character Class는 자신의 skeletalMeshComponent를 GetMesh()로 접근할수 있습니다.

#include "TPSPlayer.h"
#include "TPSProject.h"

// Sets default values
ATPSPlayer::ATPSPlayer()
{
	PRINT_LOG(TEXT("%s"), TEXT("TPSPlayer Loading"));
	ConstructorHelpers::FObjectFinder<USkeletalMesh> tempMesh(
    TEXT("SkeletalMesh'/Game/Characters/Mannequins/Meshes/SKM_Manny.SKM_Manny'"));
	if (tempMesh.Succeeded()) {
		GetMesh()->SetSkeletalMesh(tempMesh.Object);
		GetMesh()->SetRelativeLocationAndRotation(FVector(0, 0, -90), FRotator(0, -90, 0));
	}
}