728x90
반응형
무기 시스템
무기는 게임에 있어서 캐릭터만큼이나 중요한 요소이다. 보통 무기를 구현할때는 enum을 이용하여 구현을 한다.
무기 액터 생성
먼저 무기로 쓸 액터를 생성하고,
기본적으로 필요한 컴포넌트들(스켈레톤,충돌에 필요한 컴포넌트)을 추가하고 오브젝트와 콜리젼 설정을 해준다.
//Weapon.h
private:
UPROPERTY(VisibleAnywhere,Category="Weapon")
USkeletalMeshComponent* WeaponMesh;
UPROPERTY(VisibleAnywhere, Category = "Weapon")
class USphereComponent* AreaSphere;
//Weapon.cpp
#include "Components/SphereComponent.h"
AWeapon::AWeapon()
{
PrimaryActorTick.bCanEverTick = false;
bReplicates = true;//리플리케이션용 프로퍼티를 사용
WeaponMesh = CreateDefaultSubobject<USkeletalMeshComponent>(TEXT("WeaponMesh"));
WeaponMesh->SetupAttachment(RootComponent);
SetRootComponent(WeaponMesh);
WeaponMesh->SetCollisionResponseToAllChannels(ECollisionResponse::ECR_Block);
WeaponMesh->SetCollisionResponseToChannel(ECollisionChannel::ECC_Pawn,ECollisionResponse::ECR_Ignore);
WeaponMesh->SetCollisionEnabled(ECollisionEnabled::NoCollision);
AreaSphere= CreateDefaultSubobject<USphereComponent>(TEXT("AreaSphere"));
AreaSphere->SetupAttachment(RootComponent);
AreaSphere->SetCollisionResponseToAllChannels(ECollisionResponse::ECR_Ignore);
AreaSphere->SetCollisionEnabled(ECollisionEnabled::NoCollision);
}
void AWeapon::BeginPlay()
{
Super::BeginPlay();
if (GetLocalRole() == ENetRole::ROLE_Authority)//로컬에 대한 통제권이 있다면
{
AreaSphere->SetCollisionEnabled(ECollisionEnabled::QueryAndPhysics);
AreaSphere->SetCollisionResponseToChannel(ECollisionChannel::ECC_Pawn,ECollisionResponse::ECR_Overlap);
}
}
기본설정을 마쳤다면 enum class를 이용하여 무기상태를 생성해준다
Enum에 관한 글
C++복습) Modern C++/ enum class
열거형 C++에는 많은 자료형이 존재하는데, 열거형은 가능한 모든 값이 기호 상수로 정의되는 자료형이다. 이 열거형은 C++11이 나오기 전까지 enum(Unscoped Enum) 키워드를 통해 정의되었다. C++11에 들
pjnull.tistory.com
UEUM과 UMETA에 관한 글
All UENUM and UMETA Specifiers
Both main and meta specifiers, including undocumented ones.
benui.ca
//Weapon.h
UENUM(BlueprintType)
enum class EWeaponState :uint8
{
EWS_Initial UMETA(DisplayName="Initial State"),
EWS_Equipped UMETA(DisplayName="Equipped"),
EWS_Dropped UMETA(DisplayName="Dropped"),
EWS_MAX UMETA(DisplayName="DefaultMAX"),
};
private:
UPROPERTY(VisibleAnywhere, Category = "Weapon")
EWeaponState WeaponState;
그후 무기의 블루프린트를 생성하고, mesh를 설정해준다.
728x90
반응형
'UE5 > UE5 MultiPlayerGame' 카테고리의 다른 글
MultiPlayerGame) 20. 줍기 시스템 (0) | 2022.06.22 |
---|---|
MultiPlayerGame) 17. SeamLess Travel / Non-SeamLess Travel (0) | 2022.06.16 |
MultiPlayerGame) 16. 애니메이션 리타겟팅 (0) | 2022.06.16 |
MultiPlayerGame) 15. UE5프로젝트 이전/플러그인 이식 (0) | 2022.06.16 |
MultiPlayerGame) 14. 플레이어 추적을 위한 게임모드/게임스테이트 (0) | 2022.06.14 |
댓글