欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Unity 从零开始的2D游戏开发 —— 碰撞检测

程序员文章站 2024-03-16 16:40:52
...

碰撞检测是2D游戏开发里经常要用到的东西,当我们做个游戏demo的时候,碰撞检测基本上无处不在,利用碰撞检测可以实现一些比较基础功能,比如碰撞,跳跃的地面检测,和NPC交互的检测,拾取物品的检测等等。

 


 

碰撞检测必不可少的是碰撞体组件和刚体组件,在2D游戏里面也就是xxcollider2D和Rigicbody2D,同时也可以将碰撞体设置为触发器,来选择是否要计算碰撞的反馈,可以在碰撞体界面勾选is trigger选择为触发器。可以简单的理解为触发器是没有碰撞体积的碰撞体。

碰撞体和触发器使用到的方法不同:

触发器为:

void OnTriggerEnter2D(Collider2D collider); //当触碰到触发器时

void OnTriggerStay2D(Collider2D collider); //当和触发器保持接触时

void OnTriggerExit2D(Collider2D collider); //当和触发器结束碰撞时

3个方法对应不同的碰撞情况,碰撞体也是基本上一样:
 

void OnCollisionEnter2D(collision collision);

void OnCollisionStay2D(collision collision);

void OnCollisionExit2D(collision collision);

这几种方法里传入的参数都是与自身碰撞的碰撞体或者碰撞信息,可以通过查看参数的信息来知道是谁与自己碰撞,在方法里写点判断,就可以实现基本的碰撞检测,地面检测,将碰撞体设置为触发器挂在NPC和物体上,就可以实现基本的交互和拾取,代码后面有空会补上。