gpt4 book ai didi

c++ - 可移动物体不会在虚幻中旋转

转载 作者:搜寻专家 更新时间:2023-10-31 00:53:50 24 4
gpt4 key购买 nike

我正在使用以下代码在编辑器中旋转对象并将其设置为可移动。

void URotateMe::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction)
{
Super::TickComponent(DeltaTime, TickType, ThisTickFunction);

FRotator rot = Owner->GetTransform().Rotator();

UE_LOG(LogTemp, Warning, TEXT("rotation before : %s"), *rot.ToString());

Owner->GetTransform().SetRotation(FQuat(rot.Add(0, 20, 0)));

rot = Owner->GetTransform().Rotator();

UE_LOG(LogTemp, Warning, TEXT("rotation after : %s"), *rot.ToString());
}

谁能帮我看看我做错了什么,因为我是虚幻引擎的新手。

最佳答案

首先,检查在您的 BeginPlay() 方法中,您有

AActor* Owner = GetOwner();

否则UE无法识别Owner指针FRotator rot = Owner->GetTransform().Rotator();

此外,对于 Owner->GetTransform().SetRotation(FQuat(rot.Add(0, 20, 0))); 我建议远离 FQuat作为初学者,因为四元数引用可能有点奇怪。尝试使用 SetActorRotation() 方法(顺便说一句,它有多个签名,包括 FQuat() 和 Frotator()),这样您就可以改为执行以下操作:

Owner->GetTransform().SetActorRotation(FRotator(0.0f, 20.0f, 0.0f));   // notice I am using SetActorRotation(), NOT SetRotation()

或者更好的是,这就是您的代码在 BeginPlay() 中的样子:

AActor* Owner = GetOwner();
FRotator CurrentRotation = FRotator(0.0f, 0.0f, 0.0f)
Owner->SetActorRotation(CurrentRotation);

然后是您的 TickComponent():

CurrentRotation += FRotator(0.0, 20.0f, 0.0f)  
Owner->SetActorRotation(CurrentRotation); // rotate the Actor by 20 degrees on its y-axis every single frame

关于c++ - 可移动物体不会在虚幻中旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47398072/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com