SkeletalMeshComponent 는 USkeletalMesh 의 인스턴스를 만드는 데 사용됩니다. 스켈레탈 메시 (외형)에는 복잡한 스켈레톤 (서로 연결된 본)이 안에 있어, 스켈레탈 메시의 버텍스 각각을 현재 재생중인 애니메이션에 일치시키도록 도와줍니다. 그 덕에 SkeletalMeshComponent 는 캐릭터, 동물, 복잡한 기계, 복합적인 동작을 보이거나 변형이 필요한 것에 적합합니다. - 언리얼 공식문서 -
즉 캐릭터, 동물 등 애니메이션이 있는 매쉬를 사용하기 위해 내부에 본이 들어간 매쉬를 위한 컴포넌트이다.
1. Skeletal Mesh
이러한 작업 된 스캘레탈 메쉬는 마야, 블랜더 등에서 작업되어 넘어온다. (본을 삽입하고 움직이는 과정을 블랜더에서는 리깅이라고 한다)
2. Skeletal Mesh Component
위에서 확인한 스켈레탈 매쉬를 사용하기 위해 해당 컴포넌트를 생성하고 스캘레탈 매쉬를 할당해보자
Bird.h
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Pawn.h"
#include "Bird.generated.h"
UCLASS()
class TEST01_API ABird : public APawn
{
GENERATED_BODY()
public:
ABird();
virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override;
virtual void Tick(float DeltaTime) override;
protected:
// Called when the game starts or when spawned
virtual void BeginPlay() override;
private:
UPROPERTY(VisibleAnywhere)
class UCapsuleComponent* Capsule;
// 여기
UPROPERTY(VisibleAnywhere)
class USkeletalMeshComponent* BirdMesh;
};
Bird.cpp
// Fill out your copyright notice in the Description page of Project Settings.
#include "Components/CapsuleComponent.h"
#include "Components/SkeletalMeshComponent.h"
#include "Bird.h"
ABird::ABird()
{
PrimaryActorTick.bCanEverTick = true;
//생성자 위치에서 Capsule의 변수를 설정해줌
Capsule = CreateDefaultSubobject<UCapsuleComponent>(TEXT("Capsule"));
Capsule->SetCapsuleHalfHeight(20.f);
Capsule->SetCapsuleRadius(15.f);
// 폰의 최상위 컴포넌트를 Capsule로 바꿔준다.
SetRootComponent(Capsule);
BirdMesh = CreateDefaultSubobject<USkeletalMeshComponent>(TEXT("Bird"));
BirdMesh->SetupAttachment(GetRootComponent());
}
void ABird::BeginPlay()
{
Super::BeginPlay();
}
void ABird::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
}
void ABird::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
Super::SetupPlayerInputComponent(PlayerInputComponent);
}
아직 뷰포트에는 까마귀의 매쉬가 보이지 않는다.
좌측 하단에 보면 X, Y, Z가 보인다. X가 정면이므로 지금 까마귀는 측면을 보고 있는 것
까마귀를 회전시켜주자
그리고 까마귀를 아래로 내려 캡술과 일치시키자
애니메이션을 추가해보자
하늘을 나는 캡슐 까마귀 완성
'기타 > UnReal Engine' 카테고리의 다른 글
CapsuleComponent, Include header (0) | 2023.12.03 |
---|---|
함수의 노출 (UFUNCTION, templateFunction) (0) | 2023.11.21 |
멤버변수의 노출(UPROPERTY) (0) | 2023.11.21 |
멤버변수의 추가와 sin함수 (1) | 2023.11.21 |
오브젝트의 이동 (초당 이동거리, Persistent, AddActorWorldOffser) (0) | 2023.11.21 |