Unity中局部坐标与世界坐标的相互转化

  • Post author:
  • Post category:其他




局部坐标转为世界坐标

此时son是parent的子物体,并且son此时的局部坐标为(2,0,0)
在这里插入图片描述

此时我们利用脚本将son的世界坐标输出

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Test : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        Vector3 v =  transform.localToWorldMatrix.MultiplyPoint(transform.localPosition);
        Debug.Log(v);
    }
}

将脚本挂载到son上,并且运行游戏,结果如下

在这里插入图片描述

成功将son物体的局部坐标转为世界坐标

注意:局部坐标转为世界坐标就说将其子物体的局部坐标与父物体的坐标相加得到世界坐标



世界坐标转为相对于某一物体的局部坐标

例如,我们现在将son物体转换为相对于主摄像机的局部坐标

转换后的son物体的坐标为(0,0,-10)

在这里插入图片描述

通过代码实现

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Test1 : MonoBehaviour
{
    //相对于哪个物体
    public Transform target;
    // Start is called before the first frame update
    void Start()
    {
        Vector3 v = transform.worldToLocalMatrix.MultiplyPoint3x4(target.position);
        Debug.Log(v);
    }
}

转换后的结果如下

在这里插入图片描述



版权声明:本文为xsdk_H原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。