* 구현
1. 줍줍할수 있는애들 MyCollective
엔진-콜리전-새 오브젝트, 새 프로파일
캐릭터랑만 겹침판정 => 겹치면 이벤트 발생
캐릭터에서도 겹칩설정해주기
2. MyWeapon-> 트리거변수 => 충돌영역지정 박스
※캐릭터->줍기부분 주석처리
트리거는 UBoxComponent 타입임
AMyWeapon::AMyWeapon()
{
// Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it.
PrimaryActorTick.bCanEverTick = true;
//3.무기 만들어줌
Weapon = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("WEAPON"));
Trigger = CreateDefaultSubobject<UBoxComponent>(TEXT("TRIGGER"));
//2.경로에가서 매쉬찾아옴, SW에 저장
static ConstructorHelpers::FObjectFinder<UStaticMesh>SW(TEXT("StaticMesh'/Game/ParagonGreystone/FX/Meshes/Heroes/Greystone/SM_Greystone_Blade_01.SM_Greystone_Blade_01'"));
if (SW.Succeeded())
{
//4. 무기에 매쉬붙여줌
Weapon->SetStaticMesh(SW.Object);
}
Weapon->SetupAttachment(RootComponent);
Trigger->SetupAttachment(Weapon);
Trigger->SetBoxExtent(FVector(30.f, 30.f, 30.f));
트리거->웨펀->루트 구조로 붙여주기
충돌범위박스 설정
3.모든컴포넌트 초기화 이후 => (이벤트발생->함수호출)
PostInitializeComponents이후 Trigger가 오버랩되면 OnCharacterOverlap함수를 실행하라.
void AMyWeapon::PostInitializeComponents()
{
Super::PostInitializeComponents();
Trigger->OnComponentBeginOverlap.AddDynamic(this, &AMyWeapon::OnCharacterOverlap);
}
4. OnCharacterOverlap 구현
할일 : 로그찍기, 캐릭손에 칼 쥐어주기
void AMyWeapon::OnCharacterOverlap(UPrimitiveComponent* OverlappedComp, AActor* OtherActor,
UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult)
{
UE_LOG(LogTemp, Log, TEXT("Overlapped"));
//* 다이나믹 캐스트
//캐스트시<캐릭터>가 아님-> null 리턴
//부딪힌 Other이 AMyCharacter인지 검사
AMyCharacter* MyCharacter = Cast<AMyCharacter>(OtherActor);
if (MyCharacter)
{
//널이 아니면 줍줍 구현
FName WeaponSocket(TEXT("hand_l_socket"));
AttachToComponent(MyCharacter->GetMesh(),
FAttachmentTransformRules::SnapToTargetNotIncludingScale,
WeaponSocket);
}
}
※다이나믹 캐스트
※레퍼런스 타입
const FHitResult& SweepResult
주소X, 참조의미O
(+) : 매개변수로 많이사용됨 => 복사본X=>복사비용down => 성능up
'UE5' 카테고리의 다른 글
언리얼엔진에서 캐릭터 충돌 인식버그 해결방법 (0) | 2023.09.08 |
---|---|
스탯 매니저 (0) | 2022.08.16 |
소켓 실습 (0) | 2022.08.15 |
충돌 기초 (0) | 2022.08.15 |
블렌드 스페이스 (0) | 2022.08.14 |