Unity 本地坐标和世界坐标转换

Unity 本地坐标和世界坐标转换_第1张图片
如图是场景中的布局,Playerpool都是空物体,用来当做物体的parent的,这里这两个的位置不重要(不在一起也没有问题),player下的ABC是三层父物体,D是一个小球,在C下面,现在我想在pool下面生成一个cube,位置和D一样,需要用到坐标转换 此处为pool.InverseTransformPoint(D的世界坐标),代码如下

public class test : MonoBehaviour
{
    // 在parent下生成一个物体,位置和D所在的位置
    public Transform D;
    public Transform pool;
    void Start()
    {
        // D的世界坐标转换为相对于Parent的本地坐标
        Vector3 Pos = pool.InverseTransformPoint(D.position);
		// 创建一个cube,生成在指定位置
        GameObject ga = GameObject.CreatePrimitive(PrimitiveType.Cube);
        ga.transform.localScale = Vector3.one * 0.1f;
        ga.transform.SetParent(pool);
        ga.transform.localPosition = Pos;
    }

}

效果如下
Unity 本地坐标和世界坐标转换_第2张图片
自己的理解是 把D这个子物体相对于世界的位置记录下来,再放到pool这个空间中,因为相对位置固定,所以生成的位置会叠在一起

你可能感兴趣的:(Unity 本地坐标和世界坐标转换)