unity中的碰撞和触发事件

首先,unity中两个游戏对象发生碰撞的条件:

1)   两个游戏对象必须都有Collider碰撞器这个组件

2)   至少有一个游戏对象包含刚体组件

3)   两个游戏对象有相对运动



还应该知道跟碰撞事件相关的3个函数:

void OnColliderEnter(Collision other)                   //参数是必须的,类型是Collision,不然调用不成功

{

            //这个函数在碰撞开始时候调用,

}

void OnColliderStay(Collision other)                    //参数是必须的,类型是Collision,不然调用不成功

{

            //这个函数在发生持续碰撞时调用

}

void OnColliderExit(Collision other)                    //参数是必须的,类型是Collision,不然调用不成功

{

            //这个函数在碰撞结束时调用

}




以上三个函数都有一个类型为Collision的参数,参数 的作用是用来检测跟哪个游戏对象发生了碰撞,下面以一个例子来解释:

赛车游戏中两辆赛车发生持续碰撞时会擦出火花,可是地面也是一个游戏对象(跟地面这个游戏对象也在持续碰撞,但不会擦出

火花),那么怎么来判断什么时候擦出火花呢?这个时候就用到Collision这个类型的参数other,下面是伪代码:

void OnColliderStay(Collision other)                    

{

           if(string.Equals("NAME",other.gameObject.name))       //NAME表示要检测对象的名字

            {

                        // 产生粒子特效

            }

}



猜你喜欢

转载自blog.csdn.net/qq_38004206/article/details/81005850