首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UE4 iTween C++抛出“这是nullptr”

UE4 iTween C++抛出“这是nullptr”
EN

Stack Overflow用户
提问于 2016-10-22 00:24:01
回答 1查看 947关注 0票数 0

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

我使用下面的代码来启动tween:

代码语言:javascript
复制
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,但是我得到了相同的错误。

代码语言:javascript
复制
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扩展的自定义ATDWeapon类型。
  2. CharacterToAttack是从ATDCharacter扩展的自定义ATDAICharacter类型。
  3. 执行此代码的函数由GetWorldTimerManager().SetTimer()调用。
  4. 我已将#include "iTween/iTween.h"添加到TDWeapon.cpp文件的顶部
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-22 01:44:31

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

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

太棒了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40187111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档