gpt4 book ai didi

c++ - UE4 iTween C++ 抛出 "this was nullptr"

转载 作者:行者123 更新时间:2023-11-28 05:27:48 28 4
gpt4 key购买 nike

我正在尝试使用 iTween(通过 C++,而不是 BP)来旋转一个 Actor 面对另一个 Actor ,但它在 Actor.h 中抛出了一个异常,它说:

enter image description here

我正在使用以下代码启动补间:

AActor* actorToRotate = Cast<AActor>(this);

if (actorToRotate != nullptr && CharacterToAttack != nullptr)
{

FRotator rotationFrom = actorToRotate->GetActorRotation();
FRotator rotationTo = CharacterToAttack->GetActorRotation();
FName tweenName = TEXT("turret");

AiTweenEvent* TurretTween = UiTween::ActorRotateFromToSimple(tweenName, actorToRotate, rotationFrom, rotationTo, CoordinateSpace::world, false, 2.0f, easeInAndOutQuartic);

}

我尝试在 ActorRotateFromToSimple() 中使用 this 而不是使用 actorToRotate 变量,但我得到了同样的错误。

if (CharacterToAttack != nullptr)
{

FRotator rotationFrom = GetActorRotation();
FRotator rotationTo = CharacterToAttack->GetActorRotation();
FName tweenName = TEXT("turret");

AiTweenEvent* TurretTween = UiTween::ActorRotateFromToSimple(tweenName, this, rotationFrom, rotationTo, CoordinateSpace::world, false, 2.0f, easeInAndOutQuartic);

}

如果有比我聪明的人对这个问题有所了解,我们将不胜感激。

我认为可能重要的其他信息:

  1. actorToRotateATDWeapon 的自定义类型,它扩展自 AActor
  2. CharacterToAttackATDAICharacter 的自定义类型,它扩展自 ATDCharacter
  3. 执行此代码的函数由 GetWorldTimerManager().SetTimer() 调用
  4. 我已将 #include "iTween/iTween.h" 添加到我的 TDWeapon.cpp 文件的顶部

最佳答案

啊,问题不在代码中。我在 UE4 编辑器中使用“在编辑器中模拟”而不是“在编辑器中播放”。

看起来 AiTweenEvent* UiTween::SpawnEvent(AiTAux* aux) 需要玩家 Controller 并使用 GetWorldLocal()->GetFirstPlayerController()->GetPawn()->GetTransform( ) 得到它的转换。在我的例子中,“在编辑器中模拟”不会产生玩家,所以 GetPawn() 返回 nullptrGetTransform() 不喜欢.

太棒了。

关于c++ - UE4 iTween C++ 抛出 "this was nullptr",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40187111/

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