기존에 사용했던 MyActor, MyPawn은 삭제하자(코드자체를 삭제 후 언리얼 재빌드)
우선 기존코드의 이런 문제가 있었다.
AMyCharacter::AMyCharacter()
{
// ...
// 메쉬가 변경되면 매번 코드를 변경해야할까?
// 거기에 앞서 이런 하드코딩은 좋지못한 코딩습관이다.
static ConstructorHelpers::FObjectFinder<USkeletalMesh> SM(TEXT("SkeletalMesh'/Game/ParagonGreystone/Characters/Heroes/Greystone/Meshes/Greystone.Greystone'"));
if (SM.Succeeded())
{
GetMesh()->SetSkeletalMesh(SM.Object);
}
}
블루프린트로 해결해보자
캐릭터를 상속받아 BP_MyCharacter 블루프린트를 만들어보자
블루프린트의 Skeletal Mesh를 원하는 캐릭터로 지정하자
- SpringArm, Camera 설정
- 컴포넌트 추가 -> SpringArm, Camera를 추가하고 SpringArm 밑에 Camera를 넣자
- SpringArm의 설정을 아래와 같이 하자
참고로 아래와 같이 블르프린트 내에 변수를 선언할 수 있다.
이벤트 그래프 설정 - BeginPlay
간단하게 설명하자면 ArmLength라는 블루프린트에 설정한 변수를 받아서 BeginPlay시점에 SET해줘라 SpringArm에
이제 블루프린트 클래스를 기본 Pawn으로 설정해보자
AMyGameModeBase::AMyGameModeBase()
{
//DefaultPawnClass = AMyCharacter::StaticClass();
static ConstructorHelpers::FClassFinder<ACharacter> BP_Char(TEXT("Blueprint'/Game/Blueprints/BP_MyCharacter.BP_MyCharacter_C'"));
if (BP_Char.Succeeded())
{
DefaultPawnClass = BP_Char.Class;
}
}
이제 키보드, 마우스 입력을 받아보자
C++과 동일하게 생성! But 성능상의 문제 + 코드가 복잡해 질경우 블루프린트가 더 복잡할 수 있다는 단점이 있다