将一个向量分解为 3 个向量

Decompose a vector in 3 vectors

我有一个物体以 v 的速度移动。该对象具有 forwardrightup 向量(以及 v 不需要向前)。都是相互垂直的。

如何在这 3 个向量上分解 v?在数学上,我如何定义 abc 这样:

v = a * forward + b * right + c * up

例如,如果 vforward 非常相似,则 a 应该具有最大的价值。

作为kmdreko's comment is getting at, use Vector3.Dot:

Vector3 a =  Vector3.Dot(v, forward);
Vector3 b =  Vector3.Dot(v, right);
Vector3 c =  Vector3.Dot(v, up);

确保 forwardrightup 已标准化。如果您使用的是 transform.forwardtransform.righttransform.up,那应该已经是这种情况了。

无论如何,如果它们尚未标准化,请改用 forward.normalizedright.normalizedup.normalized