我正在尝试使用SpawnActor()从一个类数组中生成随机演员。我已经使用UE4/UE 5蓝图好几年了,但这是我很长一段时间以来第一次使用cpp。我遇到的问题是SpawnActor函数,可能是我连接的参数错误。
下面是cpp文件中的生成逻辑的代码:
void ADS_Generator::SpawnFlora()
{
FHitResult CurrentHit;
FActorSpawnParameters SpawnInfo;
for (int F = 0; F < FloraIterations; ++F)
{
if (SpawnedFlora.Num() <= MaxFlora)
{
CurrentHit = SpawnLineTrace(Vertices[FMath::RandRange(0, Vertices.Num() - 1)]);
if (CurrentHit.bBlockingHit == true)
{
if (FMath::RandRange(1, 100) >= FloraTolerance)
{
AActor* CurrentFlora = GetWorld()->SpawnActor(Flora[0], CurrentHit.ImpactPoint, FVector(0, 0, FMath::RandRange(-180, 180)), SpawnInfo);
SpawnedFlora.Add(CurrentFlora);
}
}
}
}
}
下面是头文件的代码,我在其中声明了actor类的数组:
UPROPERTY(EditAnywhere)
TArray<TSubclassOf<class AActor>> Flora;
UPROPERTY(EditAnywhere)
TArray<TSubclassOf<class AActor>> Fauna;
我得到的具体错误如下:
"C++ no instance of overloaded function matches the argument list
argument types are: (TSubclassOf<AActor>, FVector_NetQuantize, FVector, FActorSpawnParameters)
object type is: UWorld"
我尝试过添加“::StaticClass()”以及使用“-〉StaticClass”,但都无济于事。
有什么想法或建议吗?我肯定需要看一些视频和温习我的cpp,我非常生疏。注意:我使用植物群[0]作为占位符,而不是仅仅为了测试而随机化数组索引。
1条答案
按热度按时间kpbpu0081#
找到问题了!问题是我的Rotation被定义为一个普通的FVector,但是它需要被分别转换为Rotation和四元数。下面是代码,但是已经修复:
TLDR;位置和旋转存储不同,我完全忘记了。