矢量投影 - 确保我的车辆只能在 floor/surface 上加速

Vector Projection - Making sure my vehicle can only accelerate on the floor/surface

我的 "hover" 车辆出现问题。我只希望它在地面上时移动。

我遇到过向量投影,将一个向量投影到另一个向量上。

有了这个,我的车辆将能够加速下坡道、上坡道、空中接力、弯曲坡道等。

然而,这对我来说都是理论。

虚幻四引擎在API中没有Vector on Vector静态函数,或者我错了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);

我的目标是得到如图所示的东西:

无论如何我可以让我的车辆向后和第四加速而不飞入日落(如果它的鼻子指向那个角度)。

您正在使用的 FVector 有一种方法可以将一个向量投影到另一个向量上:FVector::ProjectOnTo

在你的情况下,你会这样称呼它:

FVector UprojectedOnV = U.ProjectOnTo(V);