Unity3d实现物体围绕某一点进行旋转

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度。

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值