무한성이라고 불리던 스테이지를 일찍 탈출한 6명이서 사이드 프로젝트를 진행하기로 했다.
순전히 기능 공부를 위함이고 출시계획같은건 당연하게도 없다.
주제는 3D 뱀파이어 서바이벌이다.
개발 진행상황은 레포지토리 참조
MVP 스팩을 크게 6가지로 나눴다.
스킬 / 캐릭터 / 적 / 시스템(웨이브, 스포너) / 아이템 / UI
나는 그 중 시스템(웨이브, 스포너)를 담당하게 됐다.
LogTemp: Warning: Spawned
LogSpawn: Warning: SpawnActor failed because of collision at the spawn location [X=2194.936 Y=-2181.662 Z=10.000] for [BP_EnemyBase_C]
LogTemp: Warning: Spawned
LogSpawn: Warning: SpawnActor failed because of collision at the spawn location [X=-354.411 Y=2057.717 Z=10.000] for [BP_EnemyBase_C]
LogTemp: Warning: Spawned
LogSpawn: Warning: SpawnActor failed because of collision at the spawn location [X=-2411.997 Y=-519.608 Z=10.000] for [BP_EnemyBase_C]
LogTemp: Warning: Spawned
LogSpawn: Warning: SpawnActor failed because of collision at the spawn location [X=1004.887 Y=-2139.610 Z=10.000] for [BP_EnemyBase_C]
LogTemp: Warning: Spawned
LogSpawn: Warning: SpawnActor failed because of collision at the spawn location [X=445.794 Y=-2630.596 Z=10.000] for [BP_EnemyBase_C]
에러를 확인해보면 해당 스폰 지점 콜리전 충돌로 스폰에 실패했다고 한다.
아마도 스폰되는 BP_EnemyBase의 캡슐컴포넌트의 height값이 88인데 10에 스폰하려고 하면 안되지않을까.. 싶었다.
// 스폰 위치 선언
FVector SpawnLocation;
// spawn location 체크결과 false일 경우 return
if (!FindSpawnLocation(SpawnLocation))
{
UE_LOG(LogTemp, Warning, TEXT("Enemy Spawner: Failed to find spawn location"));
return;
}
SpawnLocation.Z = 100;
그래서 위와같이 spawnlocation.z 를 100으로 설정해주니까

스폰이 잘 된다!
그런데 문제가 하나 더 있다.
위에서 말했듯 BP_EnemyBase의 캡슐컴포넌트의 height가 88인데 100으로 설정해 주었더니

이놈들이 공중부양해서 다닌다..
그래서 코드를 수정해서 BP_EnemyClass의 캡슐 컴포넌트의 halfheight값을 z에 넣어주도록 하겠다.
ACharacter* DefaultEnemy = EnemyClass->GetDefaultObject<ACharacter>();
if (!DefaultEnemy || !DefaultEnemy->GetCapsuleComponent())
{
return;
}
const float EnemyCapsuleHeight = DefaultEnemy->GetCapsuleComponent()->GetScaledCapsuleHalfHeight();
SpawnLocation.Z = EnemyCapsuleHeight;