[笔记自用]
首先,测试这两个函数,先解决
vector.up
和
transform.up
概念的不同,我之前一直混淆。
通过上述的两个图,得到
Vector.up
为世界坐标系
y
轴单位坐标,而
transform.up
为
local
坐标系的
y
轴单位坐标。
1.FromToRotation
然后开始介绍
FromToRotation
。官方
API
定义是:
Description
:
Creates a rotation which rotates from fromDirection to toDirection.
从
fromDirection
到
toDirection
创建一个旋转。
试着跑了一个官方的简单案例,对象为一个重置后的
cube
可以发现cube
得到一个沿
x
轴
90
度的旋转。变换前
cube
的
local
坐标系
y
轴与世界坐标系
y
轴重合,变换后则指向世界坐标系
z
轴。
2. AngleAxis
官方
API
定义是:
Description
:
Creates a rotation which rotates angle degrees around axis
绕
axis
轴旋转
angle
,创建一个旋转
官方案例,对象依旧为重置
cube
cube得到沿世界坐标系y轴30度的旋转。
3. LookRotation
先上官方定义:
Description
:
Creates a rotation with the specified forward and upwards directions.
创建一个旋转,沿着
forward(z轴)并且头部沿着upwards(y轴)的约束注视。也就是建立一个旋转,使z轴朝向view y轴朝向up。
这个读起来就很绕,不多说,先官方例子。
如图,先把
vec3
设置为
Vector3.up
,
target
为白色
Capsule
,运行后物体
Z
轴指向
target
,只有
X
轴和
Y
轴发生旋转。
PS
:
LookRotation
函数返回结果只与
api
中两个参数有关,
static Function
。
当将
vec3
改变为(
1
,
1
,
1
)时,
z
轴开始旋转(如上图),
xy
轴旋转值保持不变。
Api
中第二个参数约束
z
轴旋转。
Ps
:
upwards
:向上向量
,
注意
,
此向量不需要是精确的
y
轴的朝向
(
即不需要与
forward
垂直
),
但是
,
此向量应该处于
z
轴、
y
轴平面上。
So
,由第一个参数得到
Z
轴,然后第二个参数得到
z
轴和
y
轴的平面,然后根据左手坐标系分别求出
x
轴和
y
轴。