大纲:
1)添加一个游戏对象
2)控制游戏对象自动随机旋转
3 ) 运行
4)引出的新问题?旋转体旋转越来越慢了?
实现:
1、在Hierarchy视图新建一个空的游戏对象Asteroid,重置Transform组件。添加Rigidbody组件,取消勾选Use Gravity(取消重力的影响,根据自己项目需要),添加Capsule Collider组件,勾选Is Trigger选项(为了使它能进行物理碰撞)
2、添加控制游戏对象随机旋转的功能
在Project视图中Assets/_Scripts(没有就创建)目录下新建一个脚本RandomRotator.cs,并将其绑定到上面的游戏对象Asteroid上。
代码:
using UnityEngine;
using System.Collections;
public class RandomRotator : MonoBehaviour {
public float tumble = 10.0f;
void Start () {
GetComponent<Rigidbody>().angularVelocity = Random.insideUnitSphere * tumble;
}
}
3、运行ok
解析:上面的angularVelocity表示刚体的角速度,在3D数学中,角速度描述的是作圆周运动的物体单位时间旋转的过的角度。Random.insideUnitSphere表示单位长度半径球体内的一个随机点(向量),这个随机点与旋转系统tumble的乘积描述了在半径长度为tumble的球体中的随机点。由此可以实现刚体以一个随机的角速度旋转。
4、旋转体旋转越来越慢了?
细心的你会发现,游戏对象旋转的速度随着时间的流逝似乎越来越慢,why?
解答:原因在于设置了刚体的角速度阻力(简称:角阻力)属性angular drag,如图:
,该值为0时表示不受空气阻力影响,极大值时会使旋转的物体立即停止。
所以,对游戏对象设置角阻力为0
其他:角阻力上面的参数Drag表示阻力,即物体受力运动时受到的空气阻力,在此也设置为0.