Вы можете использовать Make Rot From XZ
, чтобы сделать это довольно легко:

И для значения единицы по умолчанию worldUp
, вы должны использовать(0,0,1)
для этого.
Вызов его на тике с кубом (показаны направления вперед и вверх) как LookingActor
, положение позиции персонажа (манекена) игрока как TargetPosition
, и (0,0,1)
какWorldUp
дает такой результат:

И если вы предпочитаете убрать определение функции в C ++:
void UMyBlueprintFunctionLibrary::MyLookAt(AActor LookingActor, FVector TargetPosition,
FVector WorldUp = FVector::UpVector)
{
FVector Forward = TargetPosition - LookingActor.GetActorLocation();
FRotator Rot = UKismetMathLibrary::MakeRotFromXZ(Forward, WorldUp);
LookingActor.SetActorRotation(Rot, true);
}