Unity-物理系统之碰撞检测
碰撞和触发响应函数 属于 特殊的生命周期函数 也是通过反射调用
知识点回顾
- 如何让两个游戏物体之间产生碰撞 – 至少1个刚体 和 两个碰撞器
- 如何让两个物体之间碰撞时表现出不同效果 – 物理材质
- 触发器的作用是什么 – 让两个物体碰撞没有物理效果,只进行碰撞处理
物理碰撞检测响应函数
1 | - 碰撞对象 的碰撞器 ```collision.collider``` |
碰撞 结束分离时 自动执行
OnCollisionExit(Collision collision)
1 | private void OnCollisionExit(Collision collision) |
碰撞 相互接触时 自动不停执行
OnCollisionStay(Collision collision)
1 | private void OnCollisionStay(Collision collision) |
触发器检测响应函数
触发 开始时 自动调用
OnTriggerEnter(Collider other)
1 | private void OnTriggerEnter(Collider other) |
触发 结束时 自动调用
OnTriggerExit(Collider other)
1 | private void OnTriggerExit(Collider other) |
触发 相融时 自动不停调用
OnTriggerStay(Collider other)
1 | private void OnTriggerStay(Collider other) |
要明确什么时候会响应函数
- !!!碰撞和触发都是相互的,不是说只有isTrigger为True的对象才能触发,和这个触发的对象也会被触发
- 只要挂载的对象 能和别的物体产生碰撞或者触发 那么对应的这6个函数 就能够被响应
- 6个函数根据需求来进行选择书写
- 如果是一个异形物体,刚体在父对象上,如果你想通过子对象上挂脚本检测碰撞是不行的 必须挂载到这个刚体父对象上才行
- 要明确 物理碰撞和触发器响应的区别
6个函数都可以写成虚函数
一般会把想要重写的 碰撞和触发函数 写成保护类型的 没有必要写成public 因为不会自己手动调用 都是Unity通过反射帮助我们自动调用的
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Escapeey`Blog!
评论