TransformPoint的意义和使用场景

本文详细介绍了Unity3D中transform.TransformPoint()函数的用途,该函数用于将相对于游戏物体的局部坐标转换为世界坐标,同时考虑了父物体的旋转和缩放。通过四个测试实例展示了在无旋转无缩放、旋转、缩放以及旋转和缩放情况下,如何正确使用该函数来获取准确的世界坐标。这对于在复杂场景中定位物体非常有用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

意义:将距离本物体一定距离(或子物体很少用到此处,因子物体可以直接用transform.position得到其世界坐标的,此函数用到其它任意点才有意义)的任意点的相对坐标转换为世界坐标

Vector3 WorldPosition = gameObject.transform.TransformPoint(xdistance, ydistance, zdistance);

得到的WorldPosition为相对于本物体(父物体)在三个方向上距离分别为(xdistance, ydistance, zdistance)的点(localPosition为(xdistance, ydistance, zdistance)的子物体)的世界坐标。它考虑了父物体的旋转和缩放,不管父物体有没有旋转和缩放尽管放心用,一句话就可以得到正确的世界坐标。

 代码挂载父物体cube上:

Vector3 WorldPosition = gameObject.transform.TransformPoint(1, 1, 2);
        Debug.Log($"世界坐标是{WorldPosition}");

测试实例1无旋转无缩放,坐标如下:

 

测试实例2父物体cube仅有旋转时

 测试实例3父物体cube仅有缩放时

 

 测试实例4父物体cube有旋转和缩放时

 

 由上可知所有情况都可直接用TransformPoint得到相对于本物体一定距离的任意点的世界坐标

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值