Векторная проекция — Убедитесь, что мой автомобиль может ускоряться только на полу / поверхности

У меня проблема с моим «парящим» автомобилем. Я только хочу, чтобы он двигался, когда он на земле.

Я сталкивался с векторной проекцией, проецируя один вектор на другой вектор.

С этим мое транспортное средство сможет идти вниз по рампам с ускорением, и по наклонным рампам, и по переулкам, изогнутые рампы и т.д.

Тем не менее, это все теория для меня.

Unreal Four Engine не имеет статической функции Vector on Vector в API, или, возможно, я ошибаюсь FVector

На данный момент я реализовал это.

FVector test = FVector::VectorPlaneProject(StaticMeshComponent->GetForwardVector(), surfaceImpactNormal);
FVector surfaceForwardDirection = StaticMeshComponent->GetForwardVector() - test;
FVector force = (surfaceForwardDirection* m_forwardAcl) * AxisValue;
force = force * GetWorld()->DeltaTimeSeconds * StaticMeshComponent->GetMass();

StaticMeshComponent->AddForce(force);

Моя цель — получить что-то похожее на картинку:

пример

Есть ли в любом случае, я могу заставить свое транспортное средство ускоряться назад и четвертым, отлетая на закат (если его нос указывает на этот угол).

1

Решение

FVector у вас есть метод для проецирования одного вектора на другой: FVector :: ProjectOnTo

В вашем случае вы бы назвали это так:

FVector UprojectedOnV = U.ProjectOnTo(V);
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]