0

我正在尝试使用 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);

}

而不是使用actorToRotate我尝试使用的变量thisActorRotateFromToSimple()但我得到了同样的错误。

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文件顶部
4

1 回答 1

1

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

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

惊人的。

于 2016-10-22T01:44:31.143 回答