1,让一个物体围绕某一点旋转,有几种方法?分别是什么?
答:在这个点处放一个空物体B,则问题变为A绕着B旋转,
方法1:B不动,A挂脚本实现transform的RotateAround(vector3 point, vector3 axis, float angle)函数
例如:
A.RotateAround(B.position, Vector3.up, 30*Time.deltaTime); //A绕着B的y轴进行旋转
方法2:A不动,A作为B的子物体,B挂脚本实现自转,然后带着A转,类似于模拟围绕中心天体旋转。
例如:
B.Rotate (Vector3.up, 30*Time.deltaTime, Space.Self); //B绕着自身的up方向自转,从而带着A一起转
注:旋转的常用方法:
(1)绕坐标轴旋转
public void Rotate (Vector3 eulerAngles, Space relativeTo = Space.Self);
或者
public void Rotate (float xAngle, float yAngle, float zAngleSpace, relativeTo = Space.Self);
其中relativeTo = Space.Self表示绕自身坐标系旋转,ralativeTo = Space.World表示绕世界坐标系旋转。
(2)饶某个向量旋转
public void Rotate(Vector3 axis, float angle, Space relativeTo);
其中axis为旋转轴方向,angle为旋转角度,relativeTo为参考坐标系,默认为Space.self。此方法的功能是使得GameObject对象在relativeTo坐标系中绕轴向量axis旋转angle度。
(3)绕轴点旋转
public void RotateAround(Vector3 point, Vector3 axis, float angel);
功能是使得GameObject对象绕着point点的axis方向旋转angle度。