콜리전
콜리전 프리셋
1. NoCollision : 충돌 무시
2. Block All : 모든 객체에 대해 충돌 반영
3. OverlapAll : 투명한 객체로서 트리거존과 같은 이벤트 용도로 사용
4. BlockAllDynamic : 플레이어처럼 움직이는 객체와 상호작용 할 때 사용
5. OverlapAllDynamic : 움직이는 객체와 오버랩 이벤트 발생. 센서 등으로 사용
6. Pawn : 플레이어, AI 등 Pawn 타입 객체를 대상으로 충돌 반영
이벤트 바인딩
void OnItemOverlap(
UPrimitiveComponent* OverlapComp,
AActor* OtherActor,
UPrimitiveComponent* OtherComp,
int32 OtherBodyIndex,
bool bFromSweep,
const FHitResult& SweepResult)
Collision->OnComponentBeginOverlap.AddDynamic(this, &ABaseItem::OnItemOverlap);
void OnItemEndOverlap(
UPrimitiveComponent* OverlapComp,
AActor* OtherActor,
UPrimitiveComponent* OtherComp,
int32 OtherBodyIndex)
Collision->OnComponentEndOverlap.AddDynamic(this, &ABaseItem::OnItemEndOverlap);
EndOverlap은 BeginOverlap의 마지막의 2개 인자가 없어도 된다.
콜리전 함수
SphereComp = CreateDefaultSubobject<USphereComponent>(TEXT("ExplosionRadius"));
SphereComp->InitSphereRadius(ExplosionRadius);
SphereComp->SetCollisionProfileName(TEXT("OverlapAllDynamic"));
SphereComp->SetupAttachment(Scene);
콜리전 컴포넌트를 생성한 후, 충돌 반경과 콜리전 프리셋을 설정할 수 있다.
TArray<AActor*> OverlappingActors;
SphereComp->GetOverlappingActors(OverlappingActors);
for (AActor* Actor : OverlappingActors)
{
if (Actor && Actor->ActorHasTag("Player"))
{
GEngine->AddOnScreenDebugMessage(-1, 5, FColor::Red, FString::Printf(TEXT("Player Get Damaged %d"), ExplosionDamage));
}
}
충돌 범위내에 플레이어가 존재하는지 판정하는 코드이다. 자주 사용할 것 같다.
타이머
타이머 핸들
// .h
FTimerHandle ExplosionTimerHandle;
// .cpp
GetWorld()->GetTimerManager().SetTimer(
ExplosionTimerHandle, // 설정할 타이머 핸들
this, // 타이머가 돌아갈 객체
&AMineItem::Explode, // 호출할 함수
ExplosionDelay, // Delay로 설정할 시간
false); // 반복 여부
유니티에서 Invoke 같은 녀석이다. 최적화를 위해서 Tick 대신 유용하게 사용할 것 같다 !
느낀 점
뭔가 유니티에 비해 함수 명이 긴 것처럼 느껴져서 손에 익는 데에는 조금 걸릴 것 같네요 !
언리얼을 배우면 배울수록 C++의 매력에 빠지게 되는 느낌입니다 ! 코드를 더 신경써서 작성하게 된다고 해야하나 ..
아직 규모가 큰 프로젝트를 시작하지 않아서 그런 것일 수도 있지만, 협업하기에 좋은 코드를 작성하도록 꾸준히 노력할 예정입니다 !
'언리얼 엔진 > 스파르타코딩클럽' 카테고리의 다른 글
[언리얼엔진] 4-1. UI 위젯 설계와 실시간 데이터 연동 (0) | 2025.02.10 |
---|---|
[언리얼엔진] 3-5. 게임 루프 설계 (0) | 2025.02.07 |
[언리얼엔진] 3-4. 캐릭터 체력 및 점수 시스템 구현 (0) | 2025.02.06 |
[언리얼엔진] 3-3. 아이템 스폰 및 데이터테이블 관리 (1) | 2025.02.05 |
[언리얼엔진] 3-1. 캐릭터 구현 (1) | 2025.01.27 |