U1L13-4——物理系统之碰撞检测函数
U1L13-4——物理系统之碰撞检测函数
碰撞检测函数
碰撞检测涉及到RigidBody、Collider、Physic Material,
- 如何让两个游戏物体之间产生碰撞(至少一个刚体 和 两个碰撞器)
- 如何让两个物体之间碰撞时表现出不同效果(物理材质)
- 触发器的作用是 让两个物体碰撞没有物理效果,只进行碰撞处理
请先掌握这些内容的必要知识
- 能够让两个游戏物体之间产生碰撞
- 能够让两个物体碰撞时表现出不同效果
- 能够通过代码检测到碰撞产生的不同阶段
- 能够使用触发器让两个物体相互穿透
- 能够通过代码检测到触发产生的不同阶段
注意:碰撞和触发响应函数 属于 特殊的生命周期函数 ** 也是通过反射调用**
本章代码关键字
1 | void OnCollisionEnter(Collision collision) { } //碰撞触发接触时会自动执行这个函数(函数名,函数参数的类型不可以改动) |
物理碰撞检测相应函数
Collision
当一个对象碰撞到一个对象,该对象就会在碰撞检测函数里作为传入参数,在函数里对其进行操作
只要得到了 碰撞到的对象的 任意一个信息 就可以得到它的所有信息
关键参数
- 碰撞到的对象碰撞器的信息:
collision.collider
- 碰撞对象的依附对象(GameObject):
collision.gameObject
- 碰撞对象的依附对象的位置信息:
collision.transform
- 触碰点数相关:
collision.contactCount
- 接触点 具体的坐标:
ContactPoint[] pos = collision.contacts;
碰撞接触触发函数
碰撞触发接触时会自动执行这个函数(函数名,函数参数的类型不可以改动)
1 | private void OnCollisionEnter(Collision collision) |
碰撞结束分离触发函数
碰撞结束分离时会自动执行这个函数(函数名,函数参数的类型不可以改动)
1 | //碰撞结束分离时会自动执行这个函数(函数名,函数参数的类型不可以改动) |
相互接触摩擦时一直触发函数
两个物体相互接触摩擦时 会不停调用该函数
1 | //两个物体相互接触摩擦时 会不停调用该函数 |
触发器检测相应函数
Collider
当一个触发器碰撞到一个对象,该触发器就会在碰撞检测函数里作为传入参数,在函数里对其进行操作
只要得到了 碰撞到的对象的 任意一个信息 就可以得到它的所有信息
Collider
在碰撞检测函数里关键参数和Collision差不多
触发开始的函数
触发开始的函数 当第一次接触时 会自动调用
1 | private void OnTriggerEnter(Collider other) |
触发结束的函数
触发结束的函数 当接触的状态结束时 会调用一次
1 | private void OnTriggerExit(Collider other) |
持续触发的函数
持续触发的函数 当两个对象持续触发(结合)时 会一直调用
1 | private void OnTriggerStay(Collider other) |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 文KRIFE齐的博客!