首先,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表示要检测对象的名字
{
// 产生粒子特效
}
}