Мой код:
APlayerController* controller = UGameplayStatics::GetPlayerController(this->GetWorld(), 0);
FRotator Rotation = Controller->GetControlRotation();
Controller->SetControlRotation(Rotation.Pitch + amount*5, Rotation.Yaw, Rotation.Roll);
Ошибка, которую я получаю:
error C2660, function doesnt accept 3 arguments
В чем причина этого?
Вам нужно передать ему один аргумент FRotator
, а не три отдельных для тангажа, рыскания и крена.
это похоже на X, Y, Z, он должен это принять.
Вращение = рыскание, наклон, крен
Вы можете попробовать: Controller->SetControlRotation(FRotator(Rotation.Pitch + amount*5, Rotation.Yaw, Rotation.Roll));
- он объединит 3 в 1 FRotator
объект.
Даже если FRotator
состоит из 3, это не одно и то же.
Проблема:
SetControlRotation API требует 1 аргумент типа FRotator
, а не 3 отдельных для компонентов вращения (тангаж, рыскание, крен).
В этом смысл полученной вами ошибки (error C2660, function doesnt accept 3 arguments
).
Исправить это можно одним из следующих способов:
FRotator
, созданную из трех компонентов, и используйте ее с API:
FRotator rot = FRotator(Rotation.Pitch + amount*5,
Rotation.Yaw,
Rotation.Roll);
Controller->SetControlRotation(rot);
или:
FRotator
из трех компонентов непосредственно в вызове API, например:
Controller->SetControlRotation(
//--------------------vvvvvvvv--------------------------
FRotator(Rotation.Pitch + amount*5,
Rotation.Yaw,
Rotation.Roll));
Обратите внимание: хотя FRotator
состоит из трех компонентов, это не то же самое (с точки зрения C++), что и три компонента, представленные отдельно.
Это не работает, потому что указана причина. Есть ли у вас какие-либо аргументы, почему это должно работать?