控制gameObject随机旋转的功能代码

大纲:
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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值