Unity 3D & 2D(碰撞器Collision和触发器Trigger)

碰撞事件


        碰撞产生的条件

                两物都有Collider

                至少有一个带有RigidBody

        回调方法

                OnCollisionEnter(Collision other)              碰撞开始一瞬间时调用一次

                OnCollisionStay(Collision other)               碰撞过程中相对运动时持续调用,每帧一次

                OnCollisionExit(Collision other)                碰撞分离一瞬间时调用

        回调方法参数

                Collision.collider                 当前物体所碰撞到的游戏对象

                Collision.contacts[]             所有碰撞点的信息

触发事件


        设置触发器

                Is Trigger(是否开启触发器,触发器和碰撞体只能选择其一)

                

        触发事件产生的条件

                两物都是碰撞体

                至少有一个带刚体

                两碰撞至少有一个是触发器

        回调函数
                OnTriggerEnter(Collider other)                 触发开始时,调用一次

                OnTriggerStay(Collider other)                  触发过程中每帧调用一次

                OnTriggerExit(Collider other)                   触发结束时调用一次

Collider other(Component类)


        Component类简介

        other:表示另一个有碰撞器的物体,不是当前物体

        other.ComparaTag:判断此对象的标签是否符合输入的值返回bool

如果需要让某个物体触发碰撞器可以单独写个碰撞器/触发器代码挂载到那个物体上面

拓展


  • 如果需要只检测某一个碰撞器/触发器或只省略某一个碰撞器/触发器不检测可以在碰撞器/触发器方法里写入if语句判断 当前碰撞器/触发器的标签是否是需要触发的

        

  • 获取碰撞点
    • 只能在碰撞器中的contacts属性中获取他的碰撞点数组,然后使用里面的point方法查看碰撞坐标【其中一个Rigidbody一定要勾选Use Gravity这样才可以接收到反馈】
    • void OnCollisionEnter(Collision ctl)
      {
          ContactPoint contact = ctl.contacts[0];
          Quaternion rot = Quaternion.FromToRotation(Vector3.up, contact.normal);
          Vector3 pos = contact.point;
      }
  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值