您的位置:首页 > 移动开发 > Unity3D

Unity基础知识—Transform

2020-07-18 04:11 441 查看

文章目录

组件介绍

属性名 作用
Position 表示世界坐标/本地坐标
Rotation 表示世界旋转角度/本地旋转角度
Scale 表示缩放

在Transform面板上显示的是相对于父物体的变化
子物体世界坐标=子物体本地坐标+父物体的世界坐标
子物体世界旋转=子物体本地旋转+父物体的世界旋转
子物体世界缩放=子物体本地缩放*父物体的世界缩放

常用属性和方法

功能说明 使用说明
坐标
transform.position(Vector3 pos)
(世界坐标) /
transfrom.localPosition(Vector3 pos)
(本地坐标)
角度(欧拉角)
transform.eulerAngles(Vector3 pos)
(世界欧拉角) /
transform.localEulerAngles(Vector3 pos)
(本地欧拉⻆)
角度(四元数)
transform.rotation
(世界四元数) /
transform.localRotation
(本地四元数)
缩放
transform.localScale
方向
transform.forword
(自身前方) /
transform.up
(自身上方) /
transform.right
(自身右方) 相反方向只需要加个 " - " 就可以了
移动
transform.Translate(Vector3 translation) / transform.Translate(Vector3 translation, Space relativeTo)
translation为移动向量,包括方向和大小,relativeTo参考坐标系空间,默认为Space.Self(本地)Space.World(世界)
自转
transform.Rotate(Vecotr3 axis, float angle, Space relativeTo)
其中参数axis为旋转轴方向,参数angle为旋转角度,参数relativeTo为参数坐标系,默认为space.self(本地)Space.World(世界)
绕某个点和某个轴旋转
transform.RotateAround(Vector3 point, Vector3 axis, float angle)
其中参数point为参考点坐标,参数axis为旋转轴方向,参数angle为旋转角度此方法的功能使使得GameObject对象绕着point点的axis方向旋转angle度
看向某个对象
transform.LookAt(Transform target) / transform.LookAt(Vector3 worldPosition) / transform.LookAt(Transform target, Vector3 worldup) / transform.LookAt(Vector3 worldPosition, Vector3 worldup)
其中参数target为transform自身坐标系中z轴指向的目标,参数worldup为transform自身坐标系中y轴最大限度指向的方向此方法的功能是使得GameObject对象自身坐标系中的z轴指向target,y轴方向最大限度地指向worldup方向
获得根对象
transform.root
返回的是根对象的位置
获得父对象
transform.parent
返回的是父对象的位置
获得子对象
transform.GetChild(int index)
index是子物体的下标,从0开始
获得子物体的数量
transform.childCount
返回的数子物体数量 “int” 型
是否是某个对象的子物体
transform.IsChildOf(Transform patent)
用于判断transform对应的GameObject对象是否为参数parent的子物体,返回值为true的三种情况:A.isChildOf(B):①A和B指向同一对象,②A是B的一级子物体,③A是B的多级子物体
设置父物体
transform.SetParent(Transform patent)
patent是父对象的position
查找对象
transform.Find(string name)
参数name可以是对象名或者对象路径,相较于Gameobject.Find来说此方法可以查找隐藏对象(若其有父对象,则父对象的Transform组件必须是激活状态)
位置是否发生了变化
transform.hasChanged;
返回的是 “bool” 值
分离层级关系
transform.DetachChildren()
使GameObject对象的所有子物体和自身分离层级关系
设置物体的层级顺序
transform.SetSiblingIndex(int index);
参数index是物体要修改的序号
transform.SetAsFirstSibling();
设置物体为第一个子对象,
transform.SetAsLastSibling();
设置物体为最后一个子物体

欧拉角:是物体绕坐标系三个坐标轴(x,y,z轴)的旋转角度
静态欧拉角:绕世界坐标系三个轴的旋转,由于物体旋转过程中坐标轴保持静止
动态欧拉角:绕物体坐标系三个轴的旋转,由于物体旋转过程中坐标轴随着物体做相同的转动
万向锁:对于动态欧拉角,无论heading和bank为多少度,只要pitch为±90°,就会出现万向锁现象
四元素:在计算机图形学中,四元数用于物体的旋转,是一种较为复杂,但是效率较高的旋转方式。其中x,y,z 代表的是向量的三维坐标,w代表的是角度

欧拉角 四元数
三个角度组成,直观,容易理解,可以进行从一个方向到另一个方向旋转大于180度的角度,但是容易产生死锁 四元旋转不存在万向节锁问题,存储空间小,计算效率高。但是单个四元数不能表示在任何方向上超过180度的旋转,四元数的数字表示不直观。

缩放:当缩放的是父物体,则其子物体也会进行缩放,而目标是子物体则只会影响子物体

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: