矢量投影 - 确保我的车辆只能在地板/地面上加速

时间:2016-02-11 10:41:17

标签: c++ vector unreal-engine4 unreal-development-kit

我正面临着我的问题" hover"车辆。我只希望它在地面上移动。

我遇到了矢量投影,将一个矢量投射到另一个矢量上。

通过这种方式,我的车辆可以通过加速,坡道,坡道,弯道坡道ETC下坡。

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

虚幻四引擎在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);

我的目标是获得如下图所示的内容:

Example

无论如何,我可以让我的车辆加速回到第四,而不是飞向太阳落山(如果它的鼻子指向那个角度)。

1 个答案:

答案 0 :(得分:2)

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

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

FVector UprojectedOnV = U.ProjectOnTo(V);