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

C++ 矢量投影-确保我的车辆只能在地板/表面上加速,c++,vector,unreal-engine4,unreal-development-kit,C++,Vector,Unreal Engine4,Unreal Development Kit,我的“悬停”车辆有问题。我只希望它在地面上移动 我遇到了向量投影,把一个向量投影到另一个向量上 有了这个,我的车将能够加速下坡道、上坡道、小巷、弯道等 然而,这对我来说都是理论 虚幻四引擎在API中没有向量对向量的静态函数,或者我错了 现在,我已经实现了这一点 FVector test = FVector::VectorPlaneProject(StaticMeshComponent->GetForwardVector(), surfaceImpactNormal); FVector su

我的“悬停”车辆有问题。我只希望它在地面上移动

我遇到了向量投影,把一个向量投影到另一个向量上

有了这个,我的车将能够加速下坡道、上坡道、小巷、弯道等

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

虚幻四引擎在API中没有向量对向量的静态函数,或者我错了

现在,我已经实现了这一点

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 UprojectedOnV = U.ProjectOnTo(V);

寻找标量/点product@tobi303点积返回浮点数?我该怎么处理这个浮点数?u到v的投影是:
v.u*v/| | v | |
是的,我知道YouTube上视频的公式,我必须实现这个,还是UE4中没有函数?是的,我遇到过,但我不确定如何使用它。FVector foo=FVector::ProjectOn(我可以在这里传入U或V)。这是一个很好的例子!清晰而有意义。