EKsumic's Blog

let today = new Beginning();

Click the left button to use the catalog.

OR

[Unity]Standard Assets的第三人称控制器脚本中的InverseTransformDirection()

InverseTransformDirection();

这个方法之所以会被使用,是因为第三人称控制器里面,根本没有用到鼠标移动控制转向这个功能。

 

在Standard Assets的第三人称控制器中,

当你按下与前进方向不符的方向按键时,人物首先会转向,然后再移动。

而转向的这个过程,如果你按Local坐标查看的话,你会看到蓝色箭头一直指向人物正前方,

会随人物的转动而转动。

 

在最基本的案例中,我们用

tr.Rotate(Vector3.up * Time.deltaTime * rotSpeed * Input.GetAxis("Mouse X"));

增加gif

增加随鼠标旋转

 

而在Standard Assets中,

我们用

move = transform.InverseTransformDirection(move);

E

使得按键方向转为你的local方向蓝箭头指向方向。

 


这个操作和Transform.TransformDirection()相反,

注意,这个相反不是向量方向上的相反,而是转换上的相反,

 

Transform.TransformDirection:

本地坐标→世界坐标


Transform.InverseTransformDirection:

世界坐标→本地坐标

 

需求情况:

当你需要移动自己的时候,本地坐标是需要的;

当你想和这个世界的物体互动的时候,世界坐标是需要的。

 

 

参考文档:

[1] Unity-Documentation-Transform.TransformDirection

[2] Unity-Documentation-Transform.InverseTransformDirection

This article was last edited at 2020-04-03 14:59:21

* *