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 감소시킨다.

 

그리고 기존 액터들에게 콜리전 컴포넌트가 존재해야 이를 사용할 수 있으므로 소환할 액터들에게 콜리전 컴포넌트를 만들어주자.