1. 무기 추가
플레이어블 캐릭터와 AI 캐릭터가 공통적으로 가져야 하는 것을 상위 클래스인 AuraCharacterBase에 추가한다.
두 캐릭터들 모두 무기를 들고 있다. 보통 무기는 캐릭터 본에 부착될 수 있도록 스켈레탈 메쉬를 사용한다.
(1) 코드
protected:
virtual void BeginPlay() override;
UPROPERTY(EditAnywhere, Category="Combat")
TObjectPtr<USkeletalMeshComponent> Weapon;
TObjectPtr은 기존의 원시 포인터를 대체한다.
AAuraCharacterBase::AAuraCharacterBase()
{
PrimaryActorTick.bCanEverTick = false;
Weapon = CreateDefaultSubobject<USkeletalMeshComponent>("Weapon");
Weapon->SetupAttachment(GetMesh(), FName("WeaponHandSocket"));
Weapon->SetCollisionEnabled(ECollisionEnabled::NoCollision);
}
(1-1) CreateDefaultSubobject 에서 TEXT 매크로를 사용하지 않는 이유?
- FName과 FString의 차이
FName은 일반적인 문자열을 사용할 때 큰 따옴표를 묶어서 사용한다.
FString은 와이드 문자열으로의 암시적 변환을 사용한다. TEXT 매크로를 이용한다.
각 함수가 받는 인자의 타입이 FName인지 FString인지에 따라서 TEXT 매크로를 사용하면 된다.
(1-2) 소켓 추가
캐릭터 베이스의 뼈대에 손 부위에 무기를 장착할 수 있도록 임의의 소켓을 추가한다. 또한 추가된 무기가 캐릭터와 충돌하지 않도록 콜리전을 NoCollision으로 설정한다.
(2) 플레이어블 캐릭터 블루프린트
(2-1) BP_AuraCharacter 설정
아래와 같은 폴더 계층구조가 되도록 폴더를 생성한다.
그리고 AuraCharacter를 상속하는 블루프린트를 생성한다.
메쉬를 클릭하여 디테일에서 SKM_Aura 메시를 할당한다.
위치를 캡슐에 맞게 이동하고 화살표에 전방이 행하도록 회전한다.
(2-2) 스켈레탈 메쉬에 소켓 생성하기
- 위의 디테일 창의 스켈레탈 메시 에셋에 폴더 브라우저 아이콘을 클릭한다(해당 에셋의 위치를 컨텐츠 서랍에서 찾아간다).
- SKM_Aura를 더블 클릭하여 연다.
- Aura의 대부분 애니메이션은 왼손을 기준으로 설정되어 있으므로 무기 소켓을 왼손에 설정할 것이다.
- hand_l 본을 찾아 우클릭 - 소켓 추가 - F2 눌러 이름을 WeaponHandSocket으로 설정한다.
- 소켓을 우클릭하여 프리뷰 에셋으로 SKM_Staff를 설정한다.
- 스킬 애니메이션을 확인하기 위해 프리뷰 컨트롤러와 애니메이션을 할당하여 애니메이션을 확인한다.
- 아무 지점에서 일시 정지하고, 애니메이션에 알맞도록 소켓의 위치를 조정한다.
- BP_AuraCharacter로 돌아와 Weapon에 SKM_Staff 스켈레탈 메시를 적용한다.
(3) 몬스터 캐릭터 블루프린트
위의 플레이어블 캐릭터 블루프린트 과정을 그대로 따라하여 BP_Goblin_Spear 블루프린트 캐릭터를 생성한다.
애니메이션 블루프린트 등의 내용은 GAS와 크게 상관 없으므로 생략한다.
'UE 5 스터디 > Gameplay Ability System(GAS)' 카테고리의 다른 글
1-6. 마우스로 적 외곽선 표시하기 (2) - 포스트 프로세스 볼륨 (Post-Process Volume) (0) | 2024.08.14 |
---|---|
1-5. 마우스로 적 외곽선 표시하기 (1) - 인터페이스 클래스 (Interface Class) (0) | 2024.08.14 |
1-3. 기본 캐릭터 클래스 (Base Character Class) (1) (0) | 2024.08.13 |
1-2. 디버그 설정 (0) | 2024.08.13 |
1-1. 기본 설정 (0) | 2024.08.13 |