GitHub: https://github.com/tyt0815
tyt0815 - Overview
tyt0815 has 4 repositories available. Follow their code on GitHub.
github.com
Notion: https://www.notion.so/tyt0815/a16514d41cb240f08aa19fe5b4c0ab86?pvs=4
언리얼 엔진
Unreal Engine 5 C++ The Ultimate Game Developer Course
www.notion.so
※노션에 기존에 작성하던 글이 있으니 참고
이전 글에서는 무기의 히트박스를 활성화만 해 두었는데 이경우, 무기를 들고만 있어도 닿으면 히트가 됩니다. 그래서 공격애니메이션 몽타주가 실행될때만 히트박스가 활성화되도록 해 봅니다.
무기 클래스
이전 글에서 무기의 CollisionEnabled를 생성자에서 QueryOnly로 설정하였었는데 NoCollision으로 변경하여 평소에는 히트박스가 활성화되지 않게 합니다.
AWeapon::AWeapon()
{
// 무기 히트박스
WeaponBox = CreateDefaultSubobject<UBoxComponent>(TEXT("Weapon Box"));
WeaponBox->SetupAttachment(GetRootComponent());
WeaponBox->SetGenerateOverlapEvents(true);
WeaponBox->SetCollisionEnabled(ECollisionEnabled::NoCollision); // <---수정된 부분
WeaponBox->SetCollisionResponseToAllChannels(ECollisionResponse::ECR_Overlap);
WeaponBox->SetCollisionResponseToChannel(ECollisionChannel::ECC_Pawn, ECollisionResponse::ECR_Ignore);
BoxTraceStart = CreateDefaultSubobject<USceneComponent>(TEXT("BoxTraceStart"));
BoxTraceStart->SetupAttachment(GetRootComponent());
BoxTraceEnd = CreateDefaultSubobject<USceneComponent>(TEXT("BoxTraceEnd"));
BoxTraceEnd->SetupAttachment(GetRootComponent());
}
그리고 히트박스를 만약 private또는 protected로 설정하였다면 Getter를 만들어 줍니다. 플레이어 캐릭터 클래스에서 히트박스를 호출해 사용할 것 입니다.
public:
FORCEINLINE UBoxComponent* GetWeaponBox() const { return WeaponBox; }
플레이어 캐릭터 클래스
캐릭터 클래스에서 무기의 히트박스의 CollisionEnabled를 설정하는 함수를 만듭니다. BlueprintCallable로 만들어 줍니다.
public:
UFUNCTION(BlueprintCallable)
void SetWeaponCollsionEnable(ECollisionEnabled::Type CollisionEnabled);
void ABaseCharacter::SetWeaponCollsionEnable(ECollisionEnabled::Type CollisionEnabled)
{
CurrentWeapon->GetWeaponBox()->SetCollisionEnabled(CollisionEnabled);
}
노티파이 설정
컴파일하고 블루프린트로 와서 공격 몽타주로 갑니다.
트랙에서 히트박스를 활성화 시킬 구간에 노티파이를 추가해 줍니다.
캐릭터의 애니메이션 블루프린트로 가서 노티파이가 호출될때 히트박스를 활성/비활성화 해 줍니다.
컴파일하고 실행해서 확인해 봅니다.
'언리얼 엔진 > 기초' 카테고리의 다른 글
[Unreal Engine5] 디버깅 (0) | 2023.08.24 |
---|---|
[Unreal Engine5] 무기 매커니즘 만들기(3) - 다단히트 없애기 (1) | 2023.08.24 |
[Unreal Engine5] 무기 매커니즘 만들기(1) - Box Trace (0) | 2023.08.24 |
[Unreal Engine5] 이동 + 공격 상하체 따로 움직이기(Layered blend per bone) (0) | 2023.08.23 |
[Unreal Engine5] C++에서 몽타주(Montage) 플레이하기 (0) | 2023.08.23 |