- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
unity 所有碰撞器(触发器),碰撞条件、结果,触发条件、结果。。。以及碰撞函数、触发函数的调用。
? ? ? 要产生碰撞必须为游戏对象添加刚体(Rigidbody)和碰撞器,刚体可以让物体在物理影响下运动。碰撞体是物理组件的一类,它要与刚体一起添加到游戏对象上才能触发碰撞。如果两个刚体相互撞在一起,除非两个对象有碰撞体时物理引擎才会计算碰撞,在物理模拟中,没有碰撞体的刚体会彼此相互穿过。
物体发生碰撞的必要条件:
两个物体都必须带有碰撞器(Collider),其中一个物体还必须带有Rigidbody刚体。
?
在unity3d中,能检测碰撞发生的方式有两种,一种是利用碰撞器,另一种则是利用触发器。
?
碰撞器:一群组件,它包含了很多种类,比如:Box Collider(盒碰撞体),Mesh Collider(网格碰撞体)等,这些碰撞器应用的场合不同,但都必须加到GameObjecet身上。
触发器,只需要在检视面板中的碰撞器组件中勾选IsTrigger属性选择框。
?
触发信息检测:
1.MonoBehaviour.OnTriggerEnter(Collider collider)当进入触发器
2.MonoBehaviour.OnTriggerExit(Collider?collider)当退出触发器
3.MonoBehaviour.OnTriggerStay(Collider?collider)当逗留触发器
?
碰撞信息检测:
1.MonoBehaviour.OnCollisionEnter(Collision collision) 当进入碰撞器
2.MonoBehaviour.OnCollisionExit(Collision collision) 当退出碰撞器
3.MonoBehaviour.OnCollisionStay(Collision collision) ?当逗留碰撞器
?
两个物体相接触时到底执行OnTriggerEnter还是执行OnCollisionEnter方法,这两个又有什么区别呢?
为了验证碰撞器与触发器的区别,现设计一个简单的游戏,让小汽车与小球发生碰撞。新建一个C#脚本文件,把它拖给小汽车对象,双击该脚本文件进入脚本编辑器,在该脚本中加入如下两个方法,并分别设置一个断点:
void OnTriggerEnter(Collider collider)
{
//进入触发器执行的代码
}
void OnCollisionEnter(Collision collision)
{
//进入碰撞器执行的代码
}
当未勾选碰撞器的Is Trigger选项时汽车与球体发生碰撞,进入方法OnCollisionEnter,碰撞之后汽车产生被球体撞飞的效果:
?
?
如果将碰撞器的Is Trigger属性选中,再次启动游戏让球体与汽车产生接触,这时进入方法OnTriggerEnter。之后球体直接穿过汽车,但球体与汽车都没有产生碰撞效果:
?
?
unity3d中的碰撞器和触发器的区别?
?
碰撞器是触发器的载体,而触发器只是碰撞器身上的一个属性
当Is Trigger=false时,碰撞器根据物理引擎引发碰撞,产生碰撞的效果,可以调用OnCollisionEnter/Stay/Exit函数;
当Is Trigger=true时,碰撞器被物理引擎所忽略,没有碰撞效果,可以调用OnTriggerEnter/Stay/Exit函数。
?
如果既要检测到物体的接触又不想让碰撞检测影响物体移动或要检测一个物件是否经过空间中的某个区域这时就可以用到触发器
?
例子:
碰撞器:汽车被撞飞、皮球掉在地上又弹起效果
触发器:人站在靠近门的位置门自动打开效果
?
另外,collider的性能和效率大概的顺序是:Sphere Collider Capsule Box Collider Mesh Collider.
?
碰撞器是另一种组件,它和刚体一起,来使碰撞发生。如果两个刚体撞在一起,物理引擎将不会计算碰撞除非它们包含一个碰撞器组件。没有碰撞器的刚体,会在物理模拟中相互穿透。碰撞器必须独立于刚体加在对象上。碰撞器并不一定需要附加刚体,但是要使移动物体具有碰撞效果必须附加刚体。为了使两个触发器碰撞时发出碰撞事件,其中一个必须包含刚体。
通过菜单Component-Physics menu来添加一个碰撞器。
Box Collider盒碰撞器--基本形状是个盒子。
Sphere Collider 球碰撞器--基本形状是个球。
Capsule Collider 胶囊碰撞器--基本形状是个胶囊。
Mesh Collider 网格碰撞器
您可能关注的文档
- 物流基础 物流基础 传化控股王进纵论供应链变革新趋势.docx
- 物流基础 物流基础 物流行业亿元融资时代来了,钱少了牌桌你都上不去!.docx
- 物流统计与成本分析 物流统计概述 国家邮政局公布2019年一季度邮政行业运行情况.docx
- 物流信息技术 物流信息技术 20 农业物流-耕地质量保护大数据平台建设解决方案.docx
- 物业管理理论与实务 项目二:物业管理的起源和历史沿革 1.2.3 知识链接:2018中国物业服务百强企业研究分析报告.docx
- 虾蟹增养殖技术 南美白对虾养殖、项目二 对虾类养殖技术 模块二 项目二 南美白对虾养殖生产设计.doc
- 虾蟹增养殖技术 南美白对虾养殖、项目二 对虾类养殖技术 模块二 项目二 南美白对虾养殖学习任务单.doc
- 虾蟹增养殖技术 虾蟹增养殖技术 模块二 项目三 日本囊对虾养殖学习任务单.doc
- 虾蟹增养殖技术 项目二 对虾类养殖技术、中国明对虾生物学习性 模块二 项目一 中国明对虾养殖生产设计.doc
- 现场网络化控制技术应用 现场网络化控制技术应用 频率计.docx
文档评论(0)