【unity3D】Transform组件(如何访问和获取Transform组件)

💗 未来的游戏开发程序媛,现在的努力学习菜鸡
💦本专栏是我关于游戏开发的学习笔记
🈶本篇是unity的Transform组件

基础知识

介绍

在Unity中,Transform组件是非常重要的一个组件,它存在于所有的GameObject游戏对象中,并且控制着对象的位置、旋转和缩放。

三个成员变量

  • position:控制对象在场景中的位置,它是一个三元素向量,表示对象在三维空间中的坐标。
  • rotation:控制对象在场景中的旋转,它是一个四元素向量,表示对象在三维空间中的姿态。
  • scale:控制对象在场景中的缩放,它是一个三元素向量,表示对象在三维空间中的大小比例。

常用属性

属性说明
position游戏对象在世界坐标的位置
rotation游戏对象相对于世界坐标系的旋转角度
localPosition游戏对象相对于其父对象的位置
localRotation游戏对象相对于其父对象的旋转角度
localScale游戏对象相对于其父对象的缩放比例
forward方向向量,代表游戏对象正面的方向
up方向向量,代表游戏对象上面的方向
right方向向量,代表游戏对象右面的方向
eulerAngles以欧拉角的形式表示游戏对象相对于世界坐标系的旋转角度
localEulerAngles以欧拉角的形式表示游戏对象相对于其父对象的旋转角度
position.x、position.y、position.z分别代表游戏物体在世界坐标中的x,y,z方向坐标
localPosition.x、localPosition.y、localPosition.z分别代表游戏物体相对于父物体的x,y,z方向坐标
gameObject获取该transform组件所挂载的物体
parent获取该transform组件所挂载的物体的父物体的transform组件
childCount该transform组件所挂载的物体的子对象的transform数量

扩展

初始状态:
在这里插入图片描述

  1. position和localposition的区别:世界坐标vs自身坐标
    在这里插入图片描述
    在这里插入图片描述
    position是基于unity中的世界坐标,在哪里就是在哪里
    localPosition是基于自身的坐标,Inspector面板中transform组件的position数值就是这个的数值。
    (同样的,旋转也是这个道理)

  2. rotation和eulerAngles的区别:
    在这里插入图片描述
    先将cube调的参数调一下,然后运行:
    在这里插入图片描述
    在这里插入图片描述
    可以看出来,其实Inspector面板中transform组件的rotation数值是欧拉角的数值。

Transform的相关查找方法

transform.Find(“名称”):查找当前transform组件挂载的物体下叫某个名字的子物体的transform组件。

transform.GetSiblingIndex():查找当前transform组件挂载的物体在它同级里的索引是第几个。

transform.GetChild(n):查找当前transform组件挂载的物体下的第n个子物体的transform组件。

:以上的transform指代设定的某个组件,就像前面的例子中的t。


静态方法

Transform.Destroy():销毁某个游戏物体。

Transform.Instantiate():生成某个游戏物体。


💦更多内容请前往主页置顶或点击链接直达:【unity3D】游戏开发专栏的目录

### Unity3DTransform 组件的 `forward` 属性 在 Unity3D 中,`Transform.forward` 是一个非常有用的属性,表示游戏对象在其局部坐标系中的正 Z 轴方向向量[^1]。此属性返回的是世界空间中的单位向量。 对于大多数刚体物体,默认情况下其 `forward` 方向指向场景视图中的蓝色轴线(Z 轴)。当需要让物体沿特定方向移动或执行其他基于方向的操作时,可以利用该属性来获取并应用这个前向矢量。 下面是一个简单的 C# 示例脚本,展示了如何使用 `Transform.forward` 来使物体向前移动: ```csharp using UnityEngine; public class MoveForward : MonoBehaviour { public float speed = 5f; void Update() { transform.Translate(transform.forward * Time.deltaTime * speed); } } ``` 在这个例子中,`transform.forward` 获取当前物体面向的方向,并乘以速度参数以及时间增量 (`Time.deltaTime`) 后传递给 `Translate()` 方法,从而实现了每帧都沿着物体自身的前方前进的效果[^2]。 为了更好地理解 `forward` 的工作原理,还可以创建一个小工具,在编辑器模式下可视化显示 `forward` 向量: ```csharp void OnDrawGizmosSelected() { Gizmos.color = Color.blue; Gizmos.DrawLine(transform.position, transform.position + transform.forward); } ``` 这段代码会在选中该游戏对象的时候绘制一条从当前位置到 `position + forward` 结束位置之间的蓝线,帮助开发者直观地看到 `forward` 所指的方向[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猪肉丸子~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值