刚体/碰撞体相关

1.物理碰撞检测响应函数

    //碰撞触发接触时会 自动执行这个函数
    private void OnCollisionEnter(Collision collision)
    {
        //Collision类型的 参数 包含了 碰到自己的对象的相关信息

        //关键参数
        //1.碰撞到的对象碰撞器的信息
        //collision.collider

        //2.碰撞对象的依附对象(GameObject)
        //collision.gameObject

        //3.碰撞对象的依附对象的位置信息
        //collision.transform

        //4.触碰点数相关
        //collision.contactCount
        //接触点 具体的坐标
        //ContactPoint[] pos = collision.contacts;

        //只要得到了 碰撞到的对象的 任意一个信息 就可以得到它的所有信息
    }

    //碰撞结束分离时  会自动执行的函数
    private void OnCollisionExit(Collision collision)
    {
        
    }

    //两个物体相互接触摩擦时 会不停的调用该函数
    private void OnCollisionStay(Collision collision)
    {
        
    }

2.触发器检测响应函数 

    //触发开始的函数 当第一次接触时 会自动调用
    protected virtual void OnTriggerEnter(Collider other)
    {
        
    }

    //触发结束的函数 当重合的状态结束时 会调用一次
    private void OnTriggerExit(Collider other)
    {
        
    }

    //当两个对象 重合的时候 会不停调用
    private void OnTriggerStay(Collider other)
    {
        
    }

3.刚体加力

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

        //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);

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

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值