思路: 如何让陨石随机旋转,这里陨石是3D模型。
在Update ()函数中调用GetComponent<Rigidbody>().transform.rotation = Random.rotation;得到的效果是,陨石快速随机飞速的运动,这不是我们想要的。
我们可以在Start方法中调用Vector3 GetComponent<Rigidbody>().angularVelocity; //通过刚体获取 要控制的游戏对象即陨石(脚本绑定陨石并设定了刚体)以及它的角速度。
然后对获取的陨石角速度进行赋值,利用Random.insideUnitSphere,其功能如下图:
注意:把Rigidbody选项中的Drag(空气阻力)和Angular Drag(角阻力)设置为0,不然陨石一会会因为这些阻力而停止旋转;Use Gravity也勾掉,不然陨石会由于重力直接掉下去咯。
代码如下:
using UnityEngine;
using System.Collections;public class RandomRotator : MonoBehaviour {public float tumble;// 控制旋转速度的因子,为公有变量,可在Inpsector中赋值void Start () {GetComponent<Rigidbody>().angularVelocity = Random.insideUnitSphere * tumble;}
}