Я пытаюсь использовать 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);
}
Если бы кто-нибудь умнее меня пролил некоторый свет на эту проблему, он был бы очень благодарен.
Дополнительная информация, я думаю, может быть важной:
actorToRotate
это пользовательский тип ATDWeapon
который простирается от AActor
CharacterToAttack
это пользовательский тип ATDAICharacter
который простирается от ATDCharacter
GetWorldTimerManager().SetTimer()
#include "iTween/iTween.h"
на вершину моего TDWeapon.cpp
файлАх, проблема не в коде. Я использовал «симуляцию в редакторе» в редакторе UE4, а не «игру в редакторе».
Похоже, что AiTweenEvent* UiTween::SpawnEvent(AiTAux* aux)
нужен контроллер игрока и использует GetWorldLocal()->GetFirstPlayerController()->GetPawn()->GetTransform()
чтобы получить это преобразование. В моем случае, «симуляция в редакторе» не порождает игрока так GetPawn()
возвращается nullptr
который GetTransform()
не нравится
Потрясающие.
Других решений пока нет …