Unity物体之间碰撞检测的方法
检测碰撞有两种方式,一种是利用碰撞器,另外一种就是触发器。
碰撞器的种类:
1.Static Collider 静态碰撞器
指的是相互碰撞的两个物体没有附加刚体而只附加了Collider的游戏对象。这类对象在碰撞时会保持静止,发生碰撞时不会触发任何的方法函数。
2.Rigidbody Collider 刚体碰撞器
在静态碰撞器的基础上,处于运动状态的物体必须要附加刚体组件和带有碰撞检测函数的脚本,被撞的物体可以没有刚体组件或碰撞检测脚本。当两个物体发生碰撞时,带有刚体组件的物体会发生物理特性,如被撞飞,或有摩擦力的影响下移动一段距离。
3.Kinematic Rigidbody Collider 运动学刚体碰撞器
在第2点得基础上勾选了刚体组件中的IsKinematic属性,在发生碰撞时能检测到碰撞,但是勾选ISkinematic属性的物体不会因为撞击而发生位移,它任待在原地不动,若要想让它发生移动,只能用transform.translate的方法。(如果要移动这类对象,就只能修改它的Transform,而不是用力)
触发器:
这三种碰撞器如果被撞击的物体的Collider勾选了IsTrigger复选框,就变成了相应的触发器了,若此时该物体被撞击,撞击该物体的对象会穿进被撞的物体中,同时触发void OnTriggerEnter(Collider other)方法。
碰撞器的检测函数:(只有带刚体的碰撞才能触发检测函数,而且处于运动中的物体必须带检测函数的脚本,other.gameObject为撞击中的对方物体)
void OnCollisionEnter(Collision other); void OnCollisionStay(Collision other); void OnCollisionExit(Collision other);
触发器的检测函数:(任何带有触发器的碰撞都能触发检测函数)
void OnTriggerEnter(Collider other); void OnTriggerStay(Collider other); void OnTriggerExit(Collider other);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?