200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > Unity 3D学习笔记(5)物体的碰撞/触发检测

Unity 3D学习笔记(5)物体的碰撞/触发检测

时间:2020-06-20 05:45:25

相关推荐

Unity 3D学习笔记(5)物体的碰撞/触发检测

前言

在学习了刚体组件后,我们看到了物体的物理效果,比如重力,碰撞等等,那么该如何检测他们之间的碰撞呢?

在Unity中,有碰撞检测和触发检测两种类型,他们的简单概括如下:


一、碰撞检测

1.如何使用碰撞检测

在3D物体上,添加刚体组件,即可实现该物体的碰撞,但地面,障碍物等往往不需要添加刚体就可以与你的对象发生碰撞,为什么不直接将所有物体都加上刚体组件呢,是为了减少计算机的开销,这样只需要设置一半的刚体组件就可以实现碰撞检测。

刚体碰撞可以模拟一定的物理效果,比如速度快的时候可以撞飞起来等等,但是无论撞什么那碰撞的一瞬间都会有物理效果,会对当前速度造成一定损失。

碰撞检测的条件:

发生碰撞的两个物体至少有一个带有刚体组件。发生碰撞的两个物体都必须带有碰撞器组件。持续碰撞的回调方法需要有相对运动才有调起。

如果带有刚体的物体不发生运动,刚体会处于休眠状态,系统不会进行碰撞检测的,如果带有刚体的物体运动,刚体会一直处于活动状态,碰撞检测才会进行。

2.检测碰撞的方法

unity中检测碰撞的方法如下,enter为碰撞一瞬间时会调用的函数,stay为碰撞持续过程中会调用的函数,exit为碰撞结束的一瞬间会调用的函数。

// 碰撞开始void OnCollisionEnter(Collision collision) {}// 碰撞结束void OnCollisionExit(Collision collision) {}// 碰撞持续中void OnCollisionStay(Collision collision) {}

碰撞检测基本用于所有的物理效果模拟上,在碰撞的不同阶段去实现不同的游戏逻辑。

二、触发检测

1.如何使用触发检测

触发检测的条件:

两个物体都需要有碰撞器。至少有一个物体是挂载刚体。其中一个的box collider组件勾选Is Trigger。

触发检测和碰撞检测虽然都可以检测到两个物体是否发生接触,但是有一些区别,比如碰撞发生时,两个物体会模拟物理效果,会弹开等等,但触发发生时,运动的物体会直接穿过对方。

还有上文提到碰撞会让两个物体有物理效果,所以在设计一些吃豆豆等行为时,当游戏对象触碰到豆豆时,豆豆被销毁,但玩家还是会受到物理效果,会明显地顿一下,这并不是我们想要的结果,因为我们只要玩家在吃到豆豆时销毁豆豆并加分就可以,所以这是就需要触发检测,这样触碰到豆豆销毁他的同时,玩家角色的行动还不会受到碰撞影响。

2.触发检测的方法

触发检测的函数方法与碰撞检测基本相同,使用的参数不同,需要注意,如下所示:

// 开始接触void OnTriggerEnter(Collider collider) {}// 接触结束void OnTriggerExit(Collider collider) {}// 接触持续中void OnTriggerStay(Collider collider) {}


总结

碰撞的检测是unity中很重要的一个知识点,基本上所有的游戏都离不开碰撞的检测,无论是2D还是3D游戏,只是3D中碰撞器的设置可能比2D复杂一点。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。