我试图使用iTween(通过C ++,而不是BP)将一个actor旋转到另一个角色,但它在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
中使用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);
}
如果比我聪明的人对这个问题有所了解,我们将不胜感激。
我认为可能很重要的其他信息:
actorToRotate
是从ATDWeapon
AActor
CharacterToAttack
是从ATDAICharacter
ATDCharacter
GetWorldTimerManager().SetTimer()
#include "iTween/iTween.h"
添加到TDWeapon.cpp
文件的顶部答案 0 :(得分:1)
啊,问题不在代码中。我在UE4编辑器中使用“simulate in editor”而不是“在编辑器中播放”。
AiTweenEvent* UiTween::SpawnEvent(AiTAux* aux)
似乎需要一个玩家控制器并使用GetWorldLocal()->GetFirstPlayerController()->GetPawn()->GetTransform()
来获得它的变换。在我的例子中,“在编辑器中模拟”不会产生一个播放器,因此GetPawn()
会返回nullptr
不喜欢的GetTransform()
。
真棒。