【Unity】对 Center/Pivot 和 Global/Local 的理解

Transform 组件决定游戏物体的 Position,Rotation 和 Scale。是 Unity 中非常重要的一个组件,每个 Scene 场景中的游戏物体都有 Transform 组件。

在学习 Unity 的过程中经常被世界坐标、模型坐标、中心点的位置等概念搞晕,所以在这里做一个简单的总结。

Center/Pivot 和 Global/Local

在 Unity 面板的左上角有两个按钮,这两个按钮与 Scene 场景中游戏物体上显示的坐标原点和坐标轴指向等关系密切。

左上角的两个按钮

Center/Pivot

Center:游戏物体中心位置的坐标原点,相当于游戏物体的形状中心,是 Unity 根据游戏物体的形状自动确定的坐标点。

在这里插入图片描述
在上图的人物模型中坐标原点即为 Center 状态下的坐标原点。

Pivot:游戏物体自身的坐标原点,是美术设计师在建模时设置的模型原点。

在这里插入图片描述
在上图的人物模型中坐标原点即为 Pivot 状态下的坐标原点。

Inspector 面板中 Transform 组件中的 Position 指的就是 Pivot 状态下模型坐标点的位置。

在这里插入图片描述
可以看到 Center 状态下和 Pivot 状态下的坐标原点不一定是处在模型的同一位置。

Global/Local

Global:在世界坐标系中三个坐标轴的指向,在这种状态下其指向始终与 Scene 场景中右上角的世界坐标轴指向相同。

在这里插入图片描述
通过上图可以看到,在 Center 状态下将模型以 Y 轴为中心旋转45°后模型上的坐标轴指向并没有随之改变,仍然和世界坐标轴指向相同

Local:游戏物体自身的坐标轴指向,即美术设计师在建模时设置的坐标轴指向。

在这里插入图片描述
而在 Local 状态下将模型以同样的方式旋转后模型上的坐标轴指向也随之改变,其 Z 轴(即蓝色箭头指向)始终指向人物的正前方。此时,人物模型自身坐标轴指向与世界坐标轴指向不再相同

在这里插入图片描述

通过上面的解释我们不妨这样理解:

  • Center/Pivot 决定场景中游戏物体上显示的坐标原点在模型上的位置
  • Global/Local 决定场景中游戏物体上显示的坐标轴的指向

父物体和子物体

当 Scene 场景中游戏物体之间存在父子关系时情况会有所不同。

在这里插入图片描述
在上图所示场景中,绿色方块为父物体,红色方块为子物体。此时子物体的 Transform 组件下的 Position、Rotation 和 Scale 三个属性均是相对父物体而言的。此时修改子物体(红色方块)的 Position 的值会沿着父物体(绿色方块)的自身坐标轴(不是世界坐标轴)相对移动。

在脚本中

子物体
通过transform.position修改子物体的位置,修改的是子物体相对于世界坐标空间的位置。
通过transform.localPosition修改子物体的位置,修改的是子物体相对于父物体(沿着父物体自身坐标轴方向做移动)的位置。

父物体或普通物体
通过transform.positiontransform.localPosition修改物体的位置达到的效果都一样,均是沿着世界坐标轴的指向(不是物体自身坐标轴的指向)进行移动。
对于transform.localPosition不妨这样理解,因为该物体没有父物体,所以其父物体可以理解为世界坐标系,故相对于父物体的移动就是相对于世界坐标系的移动。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值