版本:Unity 6 (6000.0)
语言:英语
游戏对象基础
Unity 中的旋转和方向

变换

切换到脚本

变换存储 游戏对象Unity 场景中的基本对象,可以代表角色、道具、场景、摄像机、路径点等等。游戏对象的功能由附加到它的组件定义。 更多信息
查看 词汇表
位置旋转缩放和父级状态。游戏对象始终附加了一个变换组件:您无法删除变换或在没有变换组件的情况下创建游戏对象。

变换组件

变换组件决定 场景场景包含游戏环境和菜单。将每个独特的场景文件视为一个独特的关卡。在每个场景中,您放置环境、障碍物和装饰,本质上是设计和构建游戏的各个部分。 更多信息
查看 词汇表
中每个游戏对象的位置旋转缩放。每个游戏对象都有一个变换。

The Transform component
变换组件

提示:您可以更改变换轴(以及其他 UI 元素)的颜色(菜单:Unity > 偏好设置,然后选择颜色和键面板)。

属性

属性 功能
位置 变换在 x、y 和 z 坐标中的位置。
旋转 变换绕 x 轴、y 轴和 z 轴旋转的角度(以度为单位)。
缩放 变换沿 x 轴、y 轴和 z 轴的缩放。值“1”是原始大小(您导入游戏对象时的尺寸)。
启用约束比例 强制缩放保持当前比例,以便更改一个轴会更改另外两个轴。默认情况下禁用。

Unity 相对于变换的父级测量变换的位置旋转缩放值。如果变换没有父级,Unity 会在世界空间中测量属性。

编辑变换

在 2D 空间中,您只能在 x 轴或 y 轴上操作变换。在 3D 空间中,您可以在 x 轴、y 轴和 z 轴上操作变换。在 Unity 中,这些轴分别用红色、绿色和蓝色表示。

A Transform showing the color-coding of the axes
显示轴颜色编码的变换

您可以通过三种主要方式编辑变换的属性

场景视图

在场景视图中,您可以使用移动、旋转和缩放工具来修改变换。这些工具位于 Unity 编辑器左上角。

The Hand, Move, Rotate, and Scale tools
手形、移动、旋转和缩放工具

您可以在场景中的任何游戏对象上使用变换工具。当您选择一个游戏对象时,工具 Gizmo与场景中的游戏对象关联并在场景视图中显示的图形叠加。内置的场景工具(如移动工具)是 Gizmo,您可以使用纹理或脚本创建自定义 Gizmo。某些 Gizmo 仅在选择游戏对象时绘制,而其他 Gizmo 无论选择哪些游戏对象都会由编辑器绘制。 更多信息
查看 词汇表
将出现在其中。Gizmo 的外观取决于您选择的工具。

The transform Gizmo with keyboard shortcuts in brackets.
变换 Gizmo,方括号内是键盘快捷键。

当您单击并拖动三个 Gizmo 轴中的一个时,该轴的颜色将变为黄色。在您拖动鼠标的同时,游戏对象将沿着选定的轴移动、旋转或缩放。当您释放鼠标按钮时,该轴将保持选中状态。

在移动游戏对象时,您可以将移动锁定到特定平面(即,更改两个轴并保持第三个轴不变)。要激活每个平面的锁定,请选择移动 Gizmo 中心周围的三个小彩色方块。颜色对应于您选择方块时锁定的轴(例如,选择蓝色方块以锁定 z 轴)。

检查器窗口

检查器Unity 窗口,显示有关当前选定游戏对象、资产或项目设置的信息,允许您检查和编辑值。 更多信息
查看 词汇表
窗口中,您可以使用变换组件编辑选定游戏对象的变换属性。有两种方法可以在组件中编辑变换属性值

  • 手动将值输入属性值字段。这对于非常具体的调整很有用。
  • 单击值字段并向上或向下拖动以增加或减少值。这对于不太具体的调整很有用。

C# 脚本

使用 Transform API 通过脚本编辑游戏对象的变换。

分组游戏对象

在 Unity 中,您可以将游戏对象分组到父子层次结构中。

  • 父级游戏对象具有连接到它的其他游戏对象,这些游戏对象会采用它的变换属性。
  • 子级游戏对象连接到另一个游戏对象,并采用该游戏对象的变换属性。

在层次结构窗口中,子级游戏对象将直接显示在父级游戏对象下方,并在列表中缩进。您可以选择展开图标以隐藏或显示父级游戏对象的子级游戏对象。

子级游戏对象的移动、旋转和缩放方式与其父级完全相同。子级游戏对象也可以拥有自己的子级游戏对象。游戏对象可以有多个子级游戏对象,但只有一个父级游戏对象。

游戏对象之间这些多级父子关系形成一个变换层次结构。层次结构顶部的游戏对象(即层次结构中唯一没有父级的游戏对象)被称为游戏对象。

要创建父级游戏对象,请将层次结构窗口中的任何游戏对象拖放到另一个游戏对象上。这将在两个游戏对象之间创建父子关系。

Example of a Parent-Child hierarchy. GameObjects with foldout arrows to the left of their names are parents.
父子层次结构示例。名称左侧有展开箭头箭头表示父级。

编辑父级和子级游戏对象的变换

您可以将游戏对象分组到父子层次结构中。

任何子级游戏对象的变换值都相对于父级游戏对象的变换值显示。这些值称为局部坐标。对于场景构建,通常使用子级游戏对象的局部坐标就足够了。在游戏玩法中,找到它们的全局坐标或它们在世界空间中的确切位置通常很有用。 变换组件的脚本 API 具有局部和全局位置旋转缩放的单独属性,并允许您在局部坐标和全局坐标之间进行转换。

提示:当您将变换设为父级时,在添加子级变换之前,将父级的位置设置为<0,0,0> 很有用。这意味着子级变换的局部坐标将与全局坐标相同,这使得更容易确保子级变换位于正确的位置。

变换和缩放

变换的缩放决定了您在建模应用程序中网格的大小与该网格在 Unity 中的大小之间的差异。网格在 Unity 中的大小(因此变换的缩放)非常重要,尤其是在物理模拟期间。默认情况下,物理引擎一个模拟物理系统各个方面的系统,使物体能够正确加速并受到碰撞、重力和​​其他力的影响。 更多信息
查看 词汇表
假设世界空间中的一个单位对应于一米。如果游戏对象非常大,它看起来会以“慢动作”下降;模拟是正确的,因为您正在观看一个非常大的游戏对象下降很远的距离。

三个因素影响游戏对象的缩放

  • 您在 3D 建模应用程序中网格的大小。
  • 游戏对象的导入设置中的网格缩放系数设置。
  • 您的变换组件的缩放值。

不要调整变换组件中游戏对象的缩放。如果您以真实尺寸创建模型,则无需更改变换的缩放。您也可以调整导入网格的比例,因为一些优化是根据导入大小进行的。在单个网格的导入设置中执行此操作。实例化具有调整后的缩放值的游戏对象可能会降低性能。

注意:更改缩放会影响子级变换的位置。例如,将父级变换缩放为 (0,0,0) 将所有子级变换相对于父级变换定位在 (0,0,0) 处。

非均匀缩放

非均匀缩放是指变换中的缩放在 x、y 和 z 上具有不同的值;例如 (2, 4, 2)。相反,均匀缩放在 x、y 和 z 上具有相同的值;例如 (3, 3, 3)。非均匀缩放在某些特定情况下很有用,但其行为与均匀缩放不同。

  • 某些组件并不完全支持非均匀缩放。例如,某些组件包含由 **半径** 属性定义的圆形或球形元素,例如球体 碰撞器用于处理物体物理碰撞的不可见形状。碰撞器不需要与物体的网格完全相同 - 粗略的近似通常更有效且在游戏过程中无法区分。更多信息
    参见 术语表
    胶囊碰撞器一个胶囊形状的碰撞器组件,用于处理像桶和角色肢体这样的游戏对象的碰撞。更多信息
    参见 术语表
    ,光照和 音频源一个在场景中将音频片段播放到音频监听器或通过音频混音器播放的组件。更多信息
    参见 术语表
    。这意味着在非均匀缩放下,圆形形状会保持圆形,而不是变为椭圆形。
  • 如果子游戏物体具有非均匀缩放的父游戏物体,并且相对于父游戏物体旋转,它可能会出现倾斜或“剪切”。有些组件支持简单的非均匀缩放,但在这种情况下无法正常工作。例如,倾斜的 盒形碰撞器一个立方体形状的碰撞器组件,用于处理像骰子和冰块这样的游戏对象的碰撞。更多信息
    参见 术语表
    无法准确匹配渲染网格的形状。
  • 非均匀缩放的父游戏物体的子游戏物体在旋转时其缩放比例不会自动更新。结果,子游戏物体的形状可能会在最终更新缩放比例时出现突然变化,例如,如果子游戏物体从父游戏物体中分离。

其他资源

变换

游戏对象基础
Unity 中的旋转和方向