InverseTransformDirection();
这个方法之所以会被使用,是因为第三人称控制器里面,根本没有用到鼠标移动控制转向这个功能。
在Standard Assets的第三人称控制器中,
当你按下与前进方向不符的方向按键时,人物首先会转向,然后再移动。
而转向的这个过程,如果你按Local坐标查看的话,你会看到蓝色箭头一直指向人物正前方,
会随人物的转动而转动。
在最基本的案例中,我们用
tr.Rotate(Vector3.up * Time.deltaTime * rotSpeed * Input.GetAxis("Mouse X"));
增加随鼠标旋转。
而在Standard Assets中,
我们用
move = transform.InverseTransformDirection(move);
使得按键方向转为你的local方向蓝箭头指向方向。
这个操作和Transform.TransformDirection()相反,
注意,这个相反不是向量方向上的相反,而是转换上的相反,
Transform.TransformDirection:
本地坐标→世界坐标
Transform.InverseTransformDirection:
世界坐标→本地坐标
需求情况:
当你需要移动自己的时候,本地坐标是需要的;
当你想和这个世界的物体互动的时候,世界坐标是需要的。
参考文档: