矢量投影 - 确保我的车辆只能在 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);
我的 "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);