C++ Направление движения персонажа

В Сети существует много гайдов для анимации шага в сторону, назад. А в этой статье – описана 1 функция – которая упростит создание данных анимаций в Anim BP.

Что это за функция - GetMovementDirection?

Объявим публичную функцию в заголовочном файле. По задумке – Она будет возвращать нам значения типа float от -90 до 90. Данные значения будут высчитываться из того, в какое направление движется персонаж – Влево или Вправо.

	UFUNCTION(BlueprintCallable, Category = "Movement")
	float GetMovementDirection();

Теперь сам функция. Достаточно простая, просто вставляем в cpp меняя имя класса, и она нам доступна на blueprints

  1. float ARD_Character::GetMovementDirection()
  2. {
  3. const auto VelocityNormal = GetVelocity().GetSafeNormal();
  4. const auto AngleBetween = FMath::Acos(FVector::DotProduct(GetActorForwardVector(), VelocityNormal));
  5. const auto CrossProduct = FVector::CrossProduct(GetActorForwardVector(), VelocityNormal);
  6. return FMath::RadiansToDegrees(AngleBetween) * FMath::Sign(CrossProduct.Z);
  7. }

Простая, но очень полезная функция, которая имеет сложные расчёты.

Вы всегда можете обратиться к нашей команде за помощью в разработке, обучению или заказать прототип под ключ. Вступайте в наш telegram канал: