220 |
С т р а н и ц а
Функция перетаскивания просматривает разницу в положения мыши между
последним кадром и этим кадром, и двигает выбранный элемент на этот объём.
Переменная static (глобальная с локальной областью действия) используется,
чтобы запоминать lastMouse положение (последнее положение мыши) между
вызовами функции MouseMoved().
Как мы можем связать движение мыши с запущенной функцией MouseMoved() в
AMyHUD? Если вы помните, мы уже связывали движение мыши в классе Avatar.
Две функции, которые мы использовали, это AAvatar::Pitch() (ось y) и AAvatar::Yaw()
(ось x). Расширение этих функций даст вам возможность передавать вводные
мыши в HUD. Сейчас я покажу вам функцию Yaw и вы сможете экстраполировать
отсюда как работает Pitch:
void AAvatar::Yaw( float amount )
{
//
ось х
if( inventoryShowing )
{
//
Когда инвентарь показан,
//
передаём вводные в HUD
APlayerController* PController = GetWorld()->GetFirstPlayerController();
AMyHUD* hud = Cast
( PController->GetHUD() );
hud->MouseMoved();
return;
}
else
{
AddControllerYawInput(200.f*amount * GetWorld()- >GetDeltaSeconds());
}
}
Функция AAvatar::Yaw() сначала проверяет показывается ли инвентарь или нет.
Если показывается, вводные направляются прямо в HUD, без эффекта на Avatar.
Если HUD не показывается, то вводные просто идут в Avatar.
Достарыңызбен бөлісу: