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

UE4 iTween C++ throws "this was nullptr"

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

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

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. actorToRotate 是从 AActor
  2. 扩展而来的 ATDWeapon 的自定义类型
  3. CharacterToAttack 是从 ATDCharacter
  4. 扩展而来的 ATDAICharacter 的自定义类型
  5. 执行这段代码的函数被GetWorldTimerManager().SetTimer()
  6. 调用
  7. 我已将 #include "iTween/iTween.h" 添加到我的 TDWeapon.cpp 文件的顶部

啊,问题不在代码中。我在 UE4 编辑器中使用 "simulate in editor" 而不是 "play in editor".

AiTweenEvent* UiTween::SpawnEvent(AiTAux* aux) 似乎需要播放器控制器并使用 GetWorldLocal()->GetFirstPlayerController()->GetPawn()->GetTransform() 进行转换。在我的例子中,"simulate in editor" 不会生成玩家,所以 GetPawn() returns nullptr GetTransform() 不喜欢。

太棒了。