Unreal에서 새로운 충돌 채널 추가
- 프로그래밍/언리얼
- 2024. 7. 22.
250x250
Unreal에서 새로운 충돌 채널 추가
이 글은 Unreal에서 새로운 충돌 채널을 추가하는 방법에 대한 글입니다.
Unreal Editor에서 새로운 Trace Channel 추가
Unreal Editor에서 Edit -> ProjectSettings로 들어갑니다.
Project Settings에서 Engine/Collision으로 들어갑니다.
Engine/Collision으로 들어왔다면 Trace Channels를 추가합니다.
아래 사진은 예시입니다.
저는 Test채널을 추가했습니다.
(Default Response는 Ingnore로 설정했습니다만...이 부분은 필요에 맞게 설정하시면 됩니다. )
추가후.
새로 추가한 충돌 채널 사용 예시 C++
Tick에서 SphereTraceSingle을 사용했습니다.
void ATestWorldCharacter::Tick(float DeltaSeconds)
{
Super::Tick(DeltaSeconds);
FVector CamFwdVec = FollowCamera->GetForwardVector();
FVector CamLoc = FollowCamera->GetComponentLocation();
FVector StartVec =(CamFwdVec * 800) + CamLoc;
FVector EndVec = (CamFwdVec * 1500) + CamLoc;
FHitResult HitResult;
/*Unreal 에디터에서 설정한 Trace Channel*/
ETraceTypeQuery TestTraceTarget = UEngineTypes::ConvertToTraceType(ECollisionChannel::ECC_GameTraceChannel1);
bool IsHit =
UKismetSystemLibrary::SphereTraceSingle(
GetWorld(),
StartVec/*시작위치*/,
EndVec/*끝위치*/,
330.f/*Radius*/,
TestTraceTarget/*Trace Channel*/,
false,
TArray<AActor*>(),
EDrawDebugTrace::ForOneFrame,
HitResult/*Hit결과*/,
true/*자기자신 무시 여부*/);
if (IsHit) {
DrawDebugSphere(
GetWorld(),
HitResult.ImpactPoint,
30.f,
30.f,
FColor::Green,
false,
1);
}
}
큐브 하나만 선택해서 새로 추가한 Collision Channel(여기서는 Test라는 이름을 가진 채널)을 Block으로 바꿔주었습니다.
실행결과
Test Channel을 Block으로 설정된 큐브를 제외한 나머지는 Object들은 Sphere Trace에 걸리지 않습니다.
DefaultEngine.ini
프로젝트 파일 -> Config -> DefaultEngine.ini
'DefaultEngine.ini' 파일은 Unreal Engine의 다양한 설정을 저장하는 파일입니다.
이중에 ECC_GameTraceChannel은 위에서 추가했던 Trace Channel을 의미합니다.
아래 사진에서 ECC_GameTraceChannel1은 아까 예시로 추가했던 Test Channel인 것을 확인할 수 있습니다.