unity中的碰撞和触发事件

本文详细介绍了Unity中游戏对象之间的碰撞检测原理及实现方法。要使两个游戏对象发生碰撞,需确保它们都装有碰撞器(Collider)组件,并且至少一个具有刚体(Rigidbody)组件。文章还解释了碰撞事件相关的三个函数:OnColliderEnter、OnColliderStay 和 OnColliderExit 的作用及其使用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先,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表示要检测对象的名字

            {

                        // 产生粒子特效

            }

}



评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值