想象中使用transform.translate(transform.forward,space.self)会让物体沿着正前方移动,比如玩家控制的人物向前移动。
但实际上当旋转物体后,物体会向着等于两倍的旋转值的方向移动,比如让一个人物向右转90度,但在移动时人物会向右转180度。
为什么会出现这种情况?
我的猜测是:我们希望物体在世界坐标中沿着正前方移动,但是space.self表示以当前物体的坐标轴为基准轴。例如当物体绕Y轴旋转之后,transform.forward代表的向量(图中从world坐标出发的向量),在物体(局部)坐标系内又进行了一次旋转,旋转大小等于物体transform.forward代表的向量和Z轴的夹角(图中的蓝色向量)。