Unity3D | Transform类
Transform类
在unity中,把transform类理解为,transform类是在每个对象生成时自动附加的一个类。在Unity的视图中,点击Hierarchy中的对象,就可以在Inspector中可以看到存在Transform的组件。
属性
- Position(坐标)
- Rotation(旋转)
- Scale(缩放)
脚本中类中的方法就是对它们的改变。 而我们也可以在Scene中和Inspector中直接进行设置。
修改属性
修改 Position
var pos =transform.position;
transform.position.x;
transform.position.y;
transform.position.z;
transform.position = new Vector3(1f,1f,1f);
修改Rotation
transform.localEulerAngles.x;
transform.localEulerAngles.y;
transform.localEulerAngles.z;
transform.localEulerAngles = new Vector3(90f,0,0);
rotation = new Rotation(x,y,z,w);
//修改2:
//如果物体面板Rotation (x=22.5,y=0,z=0)
//用代码实现方法:
transform.Rotate(22.5f,0,0);
修改Scale
, 缩放,没有本地和世界分别
transform.localScale.x;
transform.localScale.y;
transform.localScale.z;
transform.localScale = new Vector3(1f,1f,1f);
在Unity中不能对transform.position.x/y/z直接赋值的原因
- Vector3是一个结构体,而position是一个自动实现的属性。
- 在C#里,结构体是值类型的,值类型在通过方法传递的时候,所传递的只是值的副本。C#的属性可以说是两个分别名为get和set的方法
- 当我们写出形如 transform.position.x = 1 这样的代码时,是在通过get方法得到position,然后修改position的x字段的值。
- 由于position是结构体类型的,get得到的也只是position的一个副本,而对这个副本所作出的任何修改,都对原positon没有任何影响,因此这样的修改是毫无意义的。
坐标系
A本地坐标 + A父物体世界坐标 = A在上一级节点的相对坐标 A本地坐标 + A父物体世界坐标 = 是以父物体为原点的坐标系中的坐标
本地坐标
- 是相对于父亲节点的坐标系
- 本地都是对于根物体
- 通俗的讲,u3d可以把多个物体算成一个物体(父物体),而他的子物体就需要本地坐标系做了,就是参考父物体世界坐标+偏移
世界坐标
场景所有物体的位置以世界坐标(0,0,0)为原地的坐标系
欧拉角
- 欧拉角由三个数字组成,每个数字代表环绕一个坐标轴旋转的角度。
- 它把一个转动分解成三个方向的转源动,可以用三个欧拉角表示一个转百动 R( θ度1, θ2, θ3 )。其中的θ1, θ2, θ3就是普通的角度,但是我们管知它们叫欧拉角。
- 围绕X轴旋转,即相当于翻滚机身(Roll)。横滚角
- 围绕Y轴旋转,即相当于机身俯仰(Pitch)。俯仰角
- 围绕Z轴旋转,即决定飞机头指向的方向,又叫偏航(Yaw)。导航角
- 欧拉角是一种旋转方式,例如要把物体旋转到某个方向,可以通过多种旋转方式达成:第一种方式我们可以称它为围绕Y轴的旋转:[Y],第二种是旋转:[Z, X’],第三种是旋转:[X, Z’]。
- 欧拉角背后的基本概念。你可以使用不同的方式得到同一个旋转——通过不同的转轴或者不同的旋转顺序。
- Unity3d 通过[z,x,y]旋转,先绕z轴一个小角度,然后x轴小角度,然后y轴;按轴顺序重复绕,渐进达到最终姿态.
- 欧拉角按照旋转次序的不同被规定为十二种顺序:X‐Z‐X, X‐Y‐X, Y‐X‐Y, Y‐Z‐Y, Z‐Y‐Z, Z‐X‐Z, X‐Z‐Y, X‐Y‐Z, Y‐X‐Z, Y‐Z‐X, Z‐Y‐X, Z‐X‐Y。
- 欧拉表示有个致命的弱点,就是万向节死锁
跟欧拉角有关的函数
Quaternion.Euler 基本语法:
(1)public static Quaternion Euler(Vector3 euler);
(2)public static Quaternion Euler(float x, float y, float z);
功能说明:此方法用于返回欧拉角Vector3(x,y,z)对应的四元数Quaternion实例。
四元数Quaternion(qx,qy,qz,qw)与其欧拉角eulerAngles(ex,ey,ez)之间的对应关系如下。
--完--
- 原文作者: 留白
- 原文链接: https://zfunnily.github.io/2021/09/transform/
- 更新时间:2024-04-16 01:01:05
- 本文声明:转载请标记原文作者及链接