概述
一、添加组件
不论是2d还是3d的物体碰撞、触发检测之前,都要添加相应的组件collider,简单介绍几种比较常见的,Box Collider/Box Collider2D(箱式对撞机)、Capsule Collider/Capsule Collider2D(胶囊对撞机)、Sphere Collider/Sphere Collider2D(球形/圆形(2D)对撞机)、Mesh Collider/Mesh Collider2D(网格对撞机),
样式分别如下图:
1.箱式
2.胶囊
3.球形
4.网格
更多的可以参考:各种Collider的介绍
二、代码触发消息
首先需要自己定义谁是碰撞物体,谁是检测物体,两者都必须添加collider(我尝试了一下,可以添加不同种的collider),而且碰撞体还需要添加刚体rigidbody,其后在碰撞体上添加代码
//检测3D物体
private void OnTriggerEnter(Collider collision)
{
//碰撞时触发的消息
Debug.Log("碰撞到了"+collision.gameObject.name);
}
//检测2D物体
private void OnTriggerEnter2D(Collider collision)
{
//碰撞时触发的消息
Debug.Log("碰撞到了"+collision.gameObject.name);
}
还有方法OnTriggerExit/OnTriggerExit2D碰撞结束时触发,OnTriggerStay/OnTriggerStay2D持续碰撞时触发(碰撞体在触发体内时,持续触发)。在此之外还有另一种不同的方法OnCollisionEnter、OnCollisionExit、OnCollisionStay,依次是碰撞时触发、碰撞结束触发、持续碰撞时触发。
关于两者的区别可以自行百度查找。
如果我们把上面collider中的isTrigger勾选的话,那么这个物体就变成了一个触发器,触发器哟普什么不同呢,碰撞体与触发器相碰时,会触发事件,但是同样不像碰撞检测那样产生物理效应,碰撞体会直接穿过触发器。
三、一些小思考
如果是做2D物体的碰撞检测,最好是将检测器的collider的IsTrigger勾选上,让其变成一个触发器,否则由于原物体的rigibody刚体使得碰撞时原物体发生旋转,从而改变运动方向,同样如果非要用的话,可以将原物体的移动方式改变成由rigidbody所控制的方法,具体的话可以自行百度。
最后
以上就是舒服皮卡丘为你收集整理的Unity中3D物体和2D物体的碰撞、触发检测的全部内容,希望文章能够帮你解决Unity中3D物体和2D物体的碰撞、触发检测所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复