一、碰撞交互事件OnTriggerEnter
1、在场景中添加两个几何体(例如Cube和Sphere)
2、添加Rigidbody(刚体)component
点击Cube(正方体)对象,在面板找到这个按钮,添加component
搜索Rigidbody
默认状态下collider(碰撞)是被开启的。
3、创建C#脚本,增加OnTriggerEnter事件
usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;publicclasse:MonoBehaviour{// Start is called before the first frame updatevoidStart(){}// Update is called once per framevoidUpdate(){}privatevoidOnTriggerEnter(Collider other){
Debug.Log("碰撞发生啦!");var renderer =GetComponent<Renderer>();
renderer.material.SetColor("_Color", Color.blue);}}
4、将shpere(球体)设置为触发器,不需要添加刚体和代码。
5、将正方体摆放在球体上方,自由降落,可以看到穿过球体的过程中执行了碰撞交互事件(变蓝色)
二、碰撞交互事件OnCollisionEnter
1、将Is Trigger取消勾选。
2、将代码修改为:
usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;publicclasse:MonoBehaviour{// Start is called before the first frame updatevoidStart(){}// Update is called once per framevoidUpdate(){}privatevoidOnCollisionEnter(Collision collision){
Debug.Log("碰撞发生啦!");var renderer =GetComponent<Renderer>();
renderer.material.SetColor("_Color", Color.blue);}}
三、总结
(1)OnTriggerEnter方法使用时,被动碰撞体必须包含一个 Collider(碰撞),一个Rigidbody(刚体),被动碰撞体上需要启用isTrigger(触发器)。刚体不能勾选IsKinematic。
(2)如果两个GameObject都有Collider都开启isTrigger时,或者两个GameObject都没有Rigidbody组件时,碰撞将不发生。
(3)当触发OnTriggerEnter方法,OnCollisionEnter则不会被执行。
官方:Collider.OnTriggerEnter(Collider)
官方:Collider.OnCollisionEnter(Collision)
版权归原作者 灵境引路人 所有, 如有侵权,请联系我们删除。