繁体   English   中英

UE4 iTween C ++抛出“ this is nullptr”

[英]UE4 iTween C++ throws “this was nullptr”

我正在尝试使用iTween(通过C ++,而不是BP)来旋转一个actor以面对另一个actor,但是它在Actor.hActor.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变量,而是尝试在ActorRotateFromToSimple()使用this变量,但是却遇到了相同的错误。

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

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

看来AiTweenEvent* UiTween::SpawnEvent(AiTAux* aux)需要一个播放器控制器,并使用GetWorldLocal()->GetFirstPlayerController()->GetPawn()->GetTransform()进行转换。 在我的实例中,“在编辑器中模拟”不会产生播放器,因此GetPawn()返回nullptr ,而GetTransform()不喜欢它。

太棒了

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM