-
Автор темы
- #1
Создал Actor, в нем staticMesh стрелы и ProjectiveMovement.
Если задать у ProjectiveMovement initial speed скорость например 2000.000000,
то стрела летит всегда в 1 направлении.
Velocity у ProjectiveMovement получается
(X=2000,Y=0.000000,Z=0.000000)
А как рассчитать Velocity чтобы стрела летела во врага?
Попробовал так, но снаряд улетает вверх вбок. Повернуть актера со стрелой в сторону врага и задать стреле velocity по направлению на врага.
Если задать у ProjectiveMovement initial speed скорость например 2000.000000,
то стрела летит всегда в 1 направлении.
Velocity у ProjectiveMovement получается
(X=2000,Y=0.000000,Z=0.000000)
А как рассчитать Velocity чтобы стрела летела во врага?
Попробовал так, но снаряд улетает вверх вбок. Повернуть актера со стрелой в сторону врага и задать стреле velocity по направлению на врага.
C++:
FVector3D arrowLocation = arrow.GetActorLocation(); // позиция стрелы
FVector3D targetLocation = enemy.GetActorLocation(); // позиция врага
FRotator lookAt = UKismetMathLibrary::FindLookAtRotation(arrowLocation, targetLocation); // направление стрелы
FTransform newTransformArrow; // новый transform для стрелы
newTransformArrow.SetLocation(arrowLocation);
newTransformArrow.SetRotation(lookAt.Quaternion());
arrow->SetActorTransform(newTransform); // поворачиваем стрелу к врагу
lookAt.Normalize();
arrow->ProjectiveMovement->SetVelocityInLocalSpace( lookAt.Euler() * 2000); // задаем Velocity по направлению к врагу со скоростью 2000