关于U3D中的移动和旋转

关于移动,其实很简单,就是移动:

第一个参数标识移动的距离,是一个矢量;第二个参数是因为游戏对象有自己的坐标系,还有一个世界坐标系,使用的坐标系不同将导致运动的结果不同;

function Translate (translation : Vector3, relativeTo : Space = Space.Self) : void

关于旋转,其实也还好,分如下两种情况:

①绕着自己旋转,在U3D中,旋转用欧拉角表示,可以直接使用欧拉角,也可以通过三个轴向上的旋转角度来确定一个旋转;同样,绕自己旋转也需要确定坐标系,所以有了下面的两种API接口

function Rotate (eulerAngles : Vector3, relativeTo : Space = Space.Self) : void
function Rotate (xAngle : float, yAngle : float, zAngle : float, relativeTo : Space = Space.Self) : void

②绕着某一固定轴旋转,这个轴通常由通过某一个点的三维矢量来标识,因此形成了如下两种API

function Rotate (axis : Vector3, angle : float, relativeTo : Space = Space.Self) : void
function RotateAround (point : Vector3, axis : Vector3, angle : float) : void

其中,绕着固定轴旋转时,若这个轴与自己的中心重合,也就是绕自己旋转了,这个时候的轴线可能使用的世界坐标轴系,也可能是自己的坐标轴系,因此有space参数;

如果固定轴不与自己的中心重合,那选定的点和轴线同时属于世界坐标轴系或者同时属于自己的坐标轴系,旋转的结果都是一样的,因此没有space参数;

原文地址:https://www.cnblogs.com/huntdream/p/3151829.html