已知父物体位置和子节点相对位置,计算子节点世界位置

理解:四元数和向量相乘是向量按四元数进行了旋转后得到的新位置

例子: 四元数Quateration q=Quaternion.Euler(0,90,0)向量vector3(0,0,1),绕着Y轴旋转90度,得到新的向量是vector3(1,0,0)。

控制角色转向:人员transform.rotation对应的欧拉角度为(0,45,0),现在要让人员往他的右前方移动(即directionVector=(1,0,1)),在场景中判断人物移动的方向向量应该是(1,0,0),ransform.rotation*directionVector就是让directionVector绕Y轴旋转45度,(1,0,1)绕Y轴旋转45度不就是(1,0,0)

//父结点
Transform parent = gameobj1.transform.parent;
//结点偏差
Vector3 offset = new Vector3(gameobj1.transform.localPosition.x * parent.transform.localScale.x,
                                     gameobj1.transform.localPosition.y * parent.transform.localScale.y,
                                     gameobj1.transform.localPosition.z * parent.transform.localScale.z);
//子节点世界坐标
Vector3 worldPos = parent.position + parent.rotation * offset;

你可能感兴趣的:(Unity3D)