нереальный engine4 — UE4 iTween C ++ выдает «это был nullptr»

Я пытаюсь использовать 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 переменная, которую я пытался использовать 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 который простирается от AActor
  2. CharacterToAttack это пользовательский тип ATDAICharacter который простирается от ATDCharacter
  3. Функция, которая выполняет этот код, вызывается GetWorldTimerManager().SetTimer()
  4. я добавил #include "iTween/iTween.h" на вершину моего TDWeapon.cpp файл

0

Решение

Ах, проблема не в коде. Я использовал «симуляцию в редакторе» в редакторе UE4, а не «игру в редакторе».

Похоже, что AiTweenEvent* UiTween::SpawnEvent(AiTAux* aux) нужен контроллер игрока и использует GetWorldLocal()->GetFirstPlayerController()->GetPawn()->GetTransform() чтобы получить это преобразование. В моем случае, «симуляция в редакторе» не порождает игрока так GetPawn() возвращается nullptr который GetTransform() не нравится

Потрясающие.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]