Unity 3D 5.4允许创建Matrix4x4,通过Matrix4x4.SetTRS设置其TRS值,并将该点乘以该矩阵以应用转换。我希望以下代码打印出翻译的点,但翻译似乎没有发生。
m = Matrix4x4.identity;
m.SetTRS(new Vector3(-10f, 4f, 0f), Quaternion.Euler(new Vector3(0f, 0f, 0f)), Vector3.one);
Vector3 P = new Vector3(10f, 1f, 0f);
Debug.Log("P': " + m * P);
代码打印出来
P': (10.0, 1.0, 0.0, 0.0)
而不是
P': (0.0, 5.0, 0.0, 0.0)
我错过了什么吗?
答案 0 :(得分:1)
要使用Vector3
转换Matrix4x4
点,您需要使用Matrix4x4.MultiplyPoint()
或Matrix4x4.MultiplyPoint3x4()
。所以在你的情况下,我会尝试:
Debug.Log("P': " + m.MultiplyPoint3x4(P));
此外,作为提示 - Quaternion
表示没有轮换可以由Quaternion.identity
表示,因此您无需为此保持Quaternion.Euler()
的调用(如果这是您的意图)。
希望这有帮助!如果您有任何问题,请告诉我。