unity 【数学】 不使用TransformPoint计算当前localPosition对应的worldpos

求一个localPos的worldPos,如果能拿到parentTransform, 可以使用  

一 :Transform.TransformPoint 和 Transform.TransformDirection  获取worldPos和worldDir

二:还有一种Matrix的方式:https://answers.unity.com/questions/1273879/local-point-to-world-point-without-transformpoint.html

1.Matrix4x4 m = Matrix4x4.TRS(position, rotation, scale);获取parent的Matrix 

2.Vector3 worldPos = m.MultiplyPoint3x4(localPos); 获取localPos的世界pos

3.Vector3 localPos = m.inverse.MultiplyPoint3x4(worldPos);根据子物体的worldpos获取子物体的localPos

 同理可以通过Matrix获取rotate和scale的计算。

如果roate和scale都是default值,则pos的计算可以直接:Vector3 worldPos = localPos + position;  

 

posted @ 2023-03-28 20:54  sun_dust_shadow  阅读(49)  评论(0编辑  收藏  举报