0. 개요

이전 포스트에서 투사체의 충돌을 가능하게 했다.

이번 포스트에서는 투사체가 특정 물체에만 충돌하도록 설정한다.


- 기둥에 오버렙 이벤트 생성 설정하기


 

1. 콜리전 채널

(1) 투사체 콜리전 채널 생성

현재 투사체의 오브젝트 타입은 WorldDynamic으로 설정되어 있고, WorldStatic, WorldDynamic, Pawn에 대해 오버랩이 가능하도록 체크되어있으므로 모든 물체와 겹침 이벤트가 작동한다.

이를 해결하기 위해 투사체가 부딫히는 채널을 만들어 관리한다.

편집 - 프로젝트 설정 - 콜리전으로 이동한다.

투사체 채널은 기본적으로 모든 반응을 무시로 설정한 후 충돌할 액터에 대해 겹침으로 설정할 것이다.

 

 

(2) 단축어 지정 - Aura.h

기본적으로 개발자가 생성한 콜리전 채널은 ECC_GameTraceChannel1부터 숫자가 하나씩 올라가며 생성된다.

이는 너무 길기 때문에 C++에서 단축하여 사용할 수 있도록 설정한다.

#pragma once

#include "CoreMinimal.h"

#define CUSTOM_DEPTH_RED 250
#define ECC_Projectile ECollisionChannel::ECC_GameTraceChannel1

 

 

(3) 투사체를 충돌시킬 액터에 대해 콜리전 채널 설정

이제 투사체를 충돌시키고자 하는 액터의 콜리전 채널을 찾아 Overlap로 변경한다.

또한 BP_FireBolt의 오브젝트 타입을 Projectile로 변경한다.

이제 BP_FireBolt의 Sphere 컴포넌트의 오브젝트 타입을 ECC_Projectile로 설정한다.


- ECC_Projectile 기호를 사용하려면 아래 헤더를 첨부해야한다.

#include "Aura/Aura.h"

AAuraProjectile::AAuraProjectile()
{
	PrimaryActorTick.bCanEverTick = false;
	bReplicates = true;

	Sphere = CreateDefaultSubobject<USphereComponent>("Sphere");
	SetRootComponent(Sphere);
	Sphere->SetCollisionObjectType(ECC_Projectile);

BP_EnemyBase에 대해서도 동일하게 설정한다.

 

AuraCharacterBase로 이동해 콜리전 채널에 대한 반응을 설정한다.

AAuraCharacterBase::AAuraCharacterBase()
{
	PrimaryActorTick.bCanEverTick = false;

	GetCapsuleComponent()->SetCollisionResponseToChannel(ECC_Camera, ECR_Ignore);
	GetMesh()->SetCollisionResponseToChannel(ECC_Camera, ECR_Ignore);
	GetMesh()->SetCollisionResponseToChannel(ECC_Projectile, ECR_Overlap);
	GetMesh()->SetGenerateOverlapEvents(true);