C#中Transform类的介绍
主要⽤于物体的旋转移动和缩放(不是原创只是作为笔记)
⼀、成员变量
position:在世界空间坐标transform的位置。
localPosition:相对于⽗级的变换的位置。如果该变换没有⽗级,那么等同于Transform.position。
eulerAngles:世界坐标系中的旋转(欧拉⾓)。
localEulerAngles:相对于⽗级的变换旋转⾓度。
right:世界坐标系中的右⽅向。(世界空间坐标变换的红⾊轴。也就是x轴。)
up:世界坐标系中的上⽅向。(在世界空间坐标变换的绿⾊轴。也就是y轴。)
forward:世界坐标系中的前⽅向。(在世界空间坐标变换的蓝⾊轴。也就是z轴。)
rotation:世界坐标系中的旋转(四元数)。
localRotation:相对于⽗级的变换旋转⾓度。
localScale:相对于⽗级的缩放⽐例。
parent:⽗对象Transform组件。rotate属性
worldToLocalMatrix:矩阵变换的点从世界坐标转为⾃⾝坐标(只读)。
localToWorldMatrix:矩阵变换的点从⾃⾝坐标转为世界坐标(只读)。
root:对象层级关系中的根对象的Transform组件。
childCount:⼦对象数量。
lossyScale:全局缩放⽐例(只读)。
⼆、成员函数:
1、LookAt函数
public void LookAt(Transform target)
public void LookAt(Vector3 worldPosition);
public void LookAt(Vector3 worldPosition, Vector3 worldUp = Vector3.up);
public void LookAt(Transform target, Vector3 worldUp = Vector3.up);
旋转物体,使物体的z轴指向target/worldPosition,对于worldUp的描述是,在完成上⾯的旋转之后,继续旋转⾃⾝,使得当前对象的正y轴朝向与worldUp所指向的朝向⼀致。
这⾥的朝向⼀致指的是新旋转后的y轴与worldUp在该对象初次旋转后的xy平⾯上的投影向量⼀致。之所以取投影是因为第⼀次旋转使物体的z轴指向target/worldPosition后,此时的worldUp向量可能不在xy平⾯上,要在z轴指向target/worldPosition前提下是y轴朝向与worldUp⼀致,只能取worldUp在xy平⾯上的投影。
注意:使⽤worldPosition向量时要注意⽅向,⼀定是target-transform.position,顺序反了会使物体背向⽬标;若使⽤Transform作为参数,则不必注意。默认情况下,worldUp是Vector3.up(世界坐标系下的y轴)
2、Rotate函数
public void Rotate(Vector3 eulerAngles);
public void Rotate(Vector3 eulerAngles, Space relativeTo = Space.Self);
public void Rotate(float xAngle, float yAngle, float zAngle);
public void Rotate(float xAngle, float yAngle, float zAngle, Space relativeTo = Space.Self);
旋转⼀个欧拉⾓度,它按照zxy的顺序进⾏旋转,默认情况下局部坐标系下Space.Self
public void Rotate(Vector3 axis, float angle);
public void Rotate(Vector3 axis, float angle,Space relativeTo = Space.Self);
绕axis轴旋转angle⾓度,默认情况下局部坐标系下Space.Self。
Rotate()⽅法是:旋转多少度。在原有的基础上累加,即旋转了多少⾓度。⼜旋转了多少⾓度,是在原有的基础上在旋转
rotation属性是:旋转到某个⾓度,就是是在update中每帧都执⾏。但每次旋转到的⾓度都是5,所以是旋转到5度。⼀直都是
⽐如你只想让他旋转到多少, ⽤rotation; 假如想让他⼀直转,可以⽤Rotate
rotation直接改变了数值, 以达到旋转效果
Rotate应⽤⼀个的旋转⾓度每秒1度慢慢的旋转物体
当然:rotation()还可以通过插值旋转
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论