UE4 iTween C ++抛出"这是nullptr"

时间:2016-10-22 00:24:02

标签: c++ unreal-engine4 itween

我试图使用iTween(通过C ++,而不是BP)将一个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);

}

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

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

1 个答案:

答案 0 :(得分:1)

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

AiTweenEvent* UiTween::SpawnEvent(AiTAux* aux)似乎需要一个玩家控制器并使用GetWorldLocal()->GetFirstPlayerController()->GetPawn()->GetTransform()来获得它的变换。在我的例子中,“在编辑器中模拟”不会产生一个播放器,因此GetPawn()会返回nullptr不喜欢的GetTransform()

真棒。