Unity-物理系统-刚体加力

一 刚体自带添加力的方法


        给刚体加力的目标就是 
        让其有一个速度 朝向某一个方向移动

     

  1.首先应该获取刚体组件


        rigidBody = this.GetComponent<Rigidbody>();

       

2.添加力


        //相对世界坐标
        //世界坐标系 Z轴正方向加了一个里
        //加力过后 对象是否停止移动 是由阻力决定的
        //如果阻力为0 那给了一个力过后 始终 是不会停止运动

        //rigidBody.AddForce(Vector3.forward * 10);
        //如果想要在 世界坐标系方法中 让对象 相对于自己的面朝向动
        //rigidBody.AddForce(this.transform.forward * 10);

        //相对本地坐标
        //rigidBody.AddRelativeForce(Vector3.forward * 10);


        3.添加扭矩力,让其旋转


        相对世界坐标
        rigidBody.AddTorque(Vector3.up * 10);
        相对本地坐标
        rigidBody.AddRelativeTorque(Vector3.up * 10);

        4.直接改变速度


        这个速度方向 是相对于 世界坐标系的 
        如果要直接通过改变速度 来让其移动 一定要注意这一点

        rigidBody.velocity = Vector3.forward * 5;

        5.模拟爆炸效果


        模拟爆炸的力 一定是 所有希望产生爆炸效果影响的对象 
        都需要得到他们的刚体 来执行这个方法 才能都有效果

        rigidBody.AddExplosionForce(100, Vector3.zero, 10);

二、ADDFORCE第二个参数 ,力的几种模式

        第二个参数 力的模式 主要的作用 就是 计算方式不同而已 
        由于4中计算方式的不同 最终的移动速度就会不同

        rigidBody.AddForce(Vector3.forward * 10, ForceMode.Acceleration);

        动量定理
        Ft = mv
         v = Ft/m;


        F:力
        t:时间
        m:质量
        v:速度

        1.Acceleration 

给物体增加一个持续的加速度忽略其质量


       
        //v = Ft/m
        //F:(0,0,10)
        //t:0.02s
        //m:默认为1
        //v = 10*0.02/ 1 = 0.2m/s
        //每物理帧移动0.2m/s*0.02 = 0.004m

        2.Force   

给物体添加一个持续的力与物体的质量有关


   
        //v = Ft/m
        //F:(0,0,10)
        //t:0.02s
        //m:2kg
        //v = 10*0.02/ 2 = 0.1m/s
        //每物理帧移动0.1m/s*0.02 = 0.002m

        3.Impulse

给物体添加一个瞬间的力与物体的质量有关

忽略时间,时间默认为1


        //v = Ft/m
        //F:(0,0,10)
        //t:默认为1
        //m:2kg
        //v = 10*1/ 2 = 5m/s
        //每物理帧移动5m/s*0.02 = 0.1m

        4.VelocityChange

给物体添加一个瞬时速度,忽略质量,忽略时间


        //v = Ft/m
        //F:(0,0,10)
        //t:默认为1
        //m:默认为1
        //v = 10*1/ 1 = 10m/s
        //每物理帧移动10m/s*0.02 = 0.2m

力场脚本.

添加这个脚本自动会在对象上添加一个刚体,该脚本可以在x,y,z轴上加力,加相对于本地坐标系的力。加扭矩,加相对于本地坐标系的扭矩

 刚体的休眠

unity为了节约性能,刚体是会休眠的

这时候刚体在休眠,移动平面就会唤醒刚体,之后方块会下落,掉到平面上,斜斜的被碰开。

下面是让刚体一直不休眠的办法


        获取刚体是否处于休眠状态 如果是 
        if (rigidBody.IsSleeping())
        {
            就唤醒它
            rigidBody.WakeUp();
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值