UE4 Simple FPS/Shooting

Simple FPS/Shooting) 무기/장비 변경

PJNull 2022. 5. 12. 17:21
728x90
반응형

무기/장비 변경

게임속에서 무기 및 장비 교체는 매우 빈번하게 일어나는 상황이다. 게임속 뿐 만 아니라 개발과정에서도 모델러나 아티스트가 아님에도 캐릭터가 착용하고 있는 것을 교체해야 되는 상황은 빈번하게 일어난다. 이번 포스팅에서는 엔진에서 스켈레톤 매쉬를 이용하여 간단하게 장비를 교체하는 기본틀에 대해서 포스팅하고자 한다.  

 

 

 

 

 

 

 

1.장비 등록

먼저 필요한 장비와 불필요한 장비를 선택해야된다.

현재 장비
변경할 장비

 

다음으로 캐릭터에 새로 장비시킬 Gun의 Actor와 블루프린트를 생성하고 캐릭터에 상속시켜야한다.

Actor생성
Gun_Actor 블루프린트 생성

 

 

Actor는 생성하면 DefaultSceneRoot만을 가지고 있기 때문에 RootComponent와 StaticMeshComponent를 생성해주어야한다.

//Gun_Actor.h


private:
	UPROPERTY(VisibleAnywhere)
		USceneComponent* RootComp;
	UPROPERTY(VisibleAnywhere)
		USkeletalMeshComponent* Mesh;

 

※USkeletalMeshComponent를 쓴 이유는 해당 메쉬가 SkeletalMesh였기 때문이다. 대부분의 메쉬는 UStaticMeshComponent가 일반적이라 생각한다.

SkeletalMesh

 

 

//Gun_Actor.cpp

AGun_Actor::AGun_Actor()
{
 	RootComp = CreateDefaultSubobject<USceneComponent>(TEXT("Root"));
	SetRootComponent(RootComp);
	Mesh = CreateDefaultSubobject<USkeletalMeshComponent>(TEXT("Gun"));
	Mesh->SetupAttachment(RootComp);
}

기본적인 컴포넌트들 생성 결과

 

 

기본적인 컴포넌트가 생성되었으면 메쉬에 필요한 모델을 적용시키면 된다.

메쉬 적용

 

 

 

 

 

2. 불필요한 장비 숨기기/착용

 

장비를 교체하기 위해서는 먼저 기존의 장비를 숨기고 해당 엑터를 착용해야한다.

먼저 교체하고 싶은 스켈레톤을 찾아야한다.

 

 

장비의 스켈레톤 계층
해당 스켈레톤

 

해당 스켈레톤에 소켓을 추가한다.

스켓 추가

 

 

그리고 월드에 해당 엑터를 스폰하고 플레이어에 부착시켜준다.

//Player_Character.h

UPROPERTY(EditDefaultsOnly)
		TSubclassOf<class AGun_Actor> GunClass;

UPROPERTY()
		 class AGun_Actor* Gun;

 

//Player_Character.cpp

Player_Character:::BeginPlay()
{
	Super::BeginPlay();

	Gun=GetWorld()->SpawnActor<AGun_Actor>(GunClass);//새로운 장비 생성
	GetMesh()->HideBoneByName(TEXT("weapon_l"),EPhysBodyOp::PBO_None);//기존 장비(weapon_l)를 숨김
	Gun->AttachToComponent
    	(
        	GetMesh(),
            FAttachmentTransformRules::KeepRelativeTransform,
            TEXT("Weapon_Soket")
         );//새로운 장비(Weapon_Soket) 부착
	Gun->SetOwner(this);//소유권을 플레이어로 줌
}

 

 

 

3.적용된 모습

기존 권총 모습
적용되어서 라이플을 들고 있다.

 

 

728x90
반응형