unity脚本的一些笔记(三)

Transform 场景变换

一、坐标系

1. 变量

a. Right、Up和Forward
  • 分别表示表示物体本身坐标系(local space)的x,y和z方向向量

2. 函数

a. TransformPoint()
  • 把物体local space坐标转为world space坐标,参数为Vector3或三个float
  • 比如把一个cube移到玩家面前两个单位的距离的位置可以这么写
cube.transform.position = player.transform.TransformPoint(0, 0, 2);
b. InverseTransformPoint()
  • 和TransformPoint()相反,把世界坐标转换成物体的local space
c. TransformDirection()
  • 一个方向向量从自身坐标系到世界坐标系的变换方向
d. InverseTransformDirection()
  • 一个方向向量从世界坐标系到本身坐标系的变换

二、位移

1. 变量

a. position
  • 物体在世界坐标的位置
b. localPosition
  • 相对父物体的位置,如果没有父物体,则值和position相等

2. 函数

a. translate()
  • 物体位置的变换的函数,可以沿某个方向向量移动或像某个点移动
  • 可以选择移动是以物体本身坐标系还是世界坐标系

三、旋转

1. 变量

a. eulerAngles
  • 欧拉角,相对世界坐标各方向旋转的角度
b. localEulerAngles
  • 相对于父物体各方向旋转的角度
c. rotation
  • 类型是一个四元素Quaternion,是旋转另一种表示
  • 和欧拉角旋转相比不会出现万向节锁(gimbal lock)
d. localRotation
  • 相对于父物体旋转的四元素

2. 函数

a. Rotate()
  • 绕某一个向量旋转一定的角度
  • 在Update中旋转的角度乘上Time.deltaTime就实现每秒匀速旋转某角度
b. RotateAround()
  • 函数有三个参数,第一个是一个点,第二个是一个轴,第三个是旋转角度,就是物体绕某个点的一个轴旋转
  • 下面代码就表示物体绕一条垂直于坐标原点的轴以每秒20度的转速旋转
transform.RotateAround(Vector3.zero, Vector3.up, 20 * Time.deltaTime);
c. LookAt()
  • 用于一个物体的z轴一直向着某个物体
  • 有两个参数,第一个是被朝向的物体的坐标,第二个是看的物体以哪个向量方向朝上,默认是物体的本身的up朝上
d. Quaternion.RotateTowards()
  • 这个函数不是在Transform里面的,是四元素Quaternion的函数,有三个参数第一个是当前的旋转姿态,第二个是想要的旋转姿态,这两个旋转姿态都是用四元素Quaternion表示的,第三个参数是旋转速度
  • 这个函数是有返回值的,返回的是旋转的姿态,把返回值赋给transform.rotation,下面是一个旋转的例子
transform.rotation = Quaternion.RotateTowards(
    transform.rotation,
    target.rotation,
    speed * Time.deltaTime
);

四、缩放

1. 变量

a. lossyScale
  • 只读变量
  • 引用官方解释:如果你有一个会缩放的父物体和会任意旋转的子物体,物体的缩放将有偏差。因此缩放不能用3个向量正确地表示,只能用一个3x3矩阵表示。这样的表示使用起来非常不方便,lossyScale是个很方便的属性,它尽量匹配实际世界的缩放,如果你的物体不是斜的,这个值将是完全正确的,如果物体是斜的,这个值也不会有很大的不同。
b. localScale
  • 表示物体的三维大小,是一个Vector3

五、位置关系

1. 变量

a. parent
  • 物体的父物体,如果修改了该值,物体的坐标、大小和旋转都会变成相对于父物体的值,不过相对于世界这些值都不会变
b. root
  • 返回物体的最顶层的父物体,如果物体没有父物体,则值为物体本身
childCount
  • 子物体的数量

2. 函数

a. Find()
  • 利用反射查找某个子物体,参数是字符串,表示物体的层级
  • 返回Transform类
b. IsChildOf()
  • 判断某物体是不是某物体的子类
c. DetachChildren()
  • 删掉和所有子物体的父子关系,把它们变会一个个独立物体
d. GetChild()
  • 参数是一个整形的index,表示child的位置,index的值小于childCount
e. GetSiblingIndex()
  • 返回改物体在同级别的物体中的位置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值