Unreal5 공부/TIL
2026/04/13 TIL
anna59
2026. 4. 13. 21:03
오늘의 목표
- 아침 코드카타 (완료)
- 6번 과제 도전기능 정말 끝내기!!
6번 과제 도전 기능 구현
이전에 SpawnActor를 사용해서 특정 범위 내에 랜덤하게 발판을 만들어내는 c++ 클래스를 만들었었다.
다만 서로 겹쳐진 상태로 생성되는 경우가 있어 겹치지 않도록 하고 싶다.
검색해보니 Params.SpawnCollisionHandlingOverride 를 사용하여 이를 해결할 수 있다고 한다.
Params.SpawnCollisionHandlingOverride =
ESpawnActorCollisionHandlingMethod::AdjustIfPossibleButAlwaysSpawn;
/ 핵심 변경 부분: 겹치면 소환하지 않도록 설정
// DontSpawnIfColliding: 위치에 장애물이 있으면 null을 반환하고 소환하지 않음
Params.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::DontSpawnIfColliding;
AActor* SpawnedActor = GetWorld()->SpawnActor<AActor>(
ChosenClass,
GetRandomSpawnLocation(),
FRotator::ZeroRotator,
Params
);
if (SpawnedActor == nullptr)
{
--i;
continue;
}
만약에 겹쳐서 소환에 실패했을 경우 다시 시도할 수 있도록 i를 1 감소시킨다.
그리고 기존 액터들에게 콜리전 컴포넌트가 존재해야 이를 사용할 수 있으므로 소환할 액터들에게 콜리전 컴포넌트를 만들어주자.