unity3d的三种平面坐标系

本文介绍了Unity3D中使用的三种平面坐标系:屏幕坐标系、视口坐标系(Viewport)和GUI坐标系,帮助开发者更好地理解不同场景下坐标系统的应用。

unity3d有如下三种平面坐标系:

1.屏幕坐标系

 

2.视口坐标系viewport

 

3.GUI坐标系

转载于:https://www.cnblogs.com/chenyangsocool/p/6945697.html

### Unity3D 中的对象坐标系 #### 定义与区别 在 Unity3D 开发环境中,存在两种主要的坐标系统:本地坐标系(Local Coordinate System)和全局坐标系(World Coordinate System)。这两种坐标系统的差异在于它们参照的不同基点。 - **本地坐标系**是指物体自身的坐标体系,在这个体系下,原点位于该物体中心位置。当一个子对象附加到父级游戏对象上时,子对象的位置、旋转和平移都是相对于父级而言的[^1]。 - **全局坐标系**即世界坐标系,它代表整个场景中的绝对定位方式。任何处于此空间内的实体都遵循统一的标准方向和尺度测量标准。对于顶级 GameObjects 而言,其变换属性直接对应于世界坐标;而对于嵌套结构里的组件,则需通过一系列转换才能获取最终的世界坐标表示形式。 #### 使用方法及示例 为了更好地理解如何操作这两个不同的坐标框架,下面给出了一些具体的实践案例: ##### 将屏幕坐标转化为世界坐标 ```csharp // 获取鼠标点击处的世界坐标并打印出来 Vector3 pos = Camera.main.ScreenToWorldPoint(Input.mousePosition); Debug.Log("世界坐标: " + pos); pos.z = 0; // 把Z坐标置0,放到2D平面上来处理 ``` 这段代码展示了怎样利用 `ScreenToWorldPoint` 方法把输入设备上的触摸/光标事件映射至维虚拟环境内相应的真实地点。 ##### 访问和设置Transform组件下的不同类型的坐标数据 ```csharp using UnityEngine; public class CoordSystemExample : MonoBehaviour { void Start() { Transform myTransform = transform; // 打印当前GameObject的局部位置 Debug.Log("本地坐标 (Position): " + myTransform.localPosition); // 设置新的局部位置 myTransform.localPosition = new Vector3(5, 0, 0); // 打印当前GameObject的世界位置 Debug.Log("全球坐标 (Position): " + myTransform.position); // 设置新的世界位置 myTransform.position = new Vector3(-5, 0, 0); } } ``` 上述脚本说明了访问以及更改目标物体在其所属层次关系链路里所占据的空间参数的方法。值得注意的是,改变 `.localPosition` 只会影响相对父节点的姿态调整,而修改`.position`则会直接影响到实际存在于范围视图中的表现形态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值