Unity -- Collider(碰撞器与触发器)
(2d与3d的Collider可以相互存在,但是无法相互协作,如2d是无法检测3d的,反之,一样)
在目前掌握的情况分析,在Unity中参与碰撞的物体分2大块:1.发起碰撞的物体。2.接收碰撞的物体。
1. 发起碰撞物体有:Rigodbody , CharacterController .
2. 接收碰撞物体由:所有的Collider .
工作的原理为:发生碰撞的物体中必须要有“发起碰撞”的物体。否则,碰撞不响应。
比如:墙用BoxCollider ,所以墙与墙之间无反应。
比如:一个带有Rigidbody属性的箱子,能落到带有MeshCollider属性的地面上。
比如:一个带有Rigidbody属性的箱子,可以被一个带有CharacterController 属性的人推着跑。
就是此原因。
在所有Collider上有一个Is Trigger 的boolean型参数。
当发生碰撞反应的时候,会先检查此属性。
当激活此选项时,会调用碰撞双方的脚本 OnTrigger***, 反之,脚本方面没有任何反应。
当激活此选项时,不会发生后续物理的反应。反之,发生后续的物理反应。
总结:Is Trigger 好比是一个物理功能的开关, 是要“物理功能”还是要“OnTrigger脚本”。
在Rigodbody 上有一个Use Gravity 的boolean型参数.
Unity 物理引擎,处理的一个细节:
当一个CharacterController不发生位置变化,一个Collier发生位置变化后,产生碰撞。将不会调用任何碰撞反映。
物理引擎视为CharacterController无碰撞.
碰撞器由来
1.系统默认会给每个对象(GameObject)添加一个碰撞组件(ColliderComponent),一些背景对象则可以取消该组件。
2.在unity3d中,能检测碰撞发生的方式有两种,一种是利用碰撞器,另一种则是利用触发器。这两种方式的应用非常广泛。为了完整的了解这两种方式,我们必须理解以下概念:
(一)碰撞器是一群组件,它包含了很多种类,比如:Box Collider,Capsule Collider等,这些碰撞器应用的场合不同,但都必须加到GameObjecet身上。
(二)所谓触发器,只需要在检视面板中的碰撞器组件中勾选IsTrigger属性选择框。
(三)在Unity3d中,主要有以下接口函数来处理这两种碰撞检测:
触发信息检测:
1.MonoBehaviour.OnTriggerEnter(Collider other) / MonoBehaviour.OnTriggerEnter2D(Collider2D other)当进入触发器
2.MonoBehaviour.OnTriggerExit(Collider other) / MonoBehaviour.OnTriggerExit2D(Collider2D other)当退出触发器
3.MonoBehaviour.OnTriggerStay(Collider other) / MonoBehaviour.OnTriggerStay2D(Collider2D other)当逗留触发器
碰撞信息检测:
1.MonoBehaviour.OnCollisionEnter(Collision collisionInfo) / MonoBehaviour.OnCollisionEnter2D(Collision2D collisionInfo)当进入碰撞器
2.MonoBehaviour.OnCollisionExit(Collision collisionInfo) / MonoBehaviour.OnCollisionExit2D(Collision2D collisionInfo)当退出碰撞器
3.MonoBehaviour.OnCollisionStay(Collision collisionInfo) / MonoBehaviour.OnCollisionStay2D(Collision2D collisionInfo) 当逗留碰撞器
Unity -- Collider(碰撞器与触发器)的更多相关文章
- Unity3d -- Collider(碰撞器与触发器)
(2d与3d的Collider可以相互存在,但是无法相互协作,如2d是无法检测3d的,反之,一样) 在目前掌握的情况分析,在Unity中参与碰撞的物体分2大块:1.发起碰撞的物体.2.接收碰撞的物体. ...
- 碰撞器与触发器[Unity]
请看原帖,移步:Unity3d碰撞检测中碰撞器与触发器的区别 要产生碰撞必须为游戏对象添加刚体(Rigidbody)和碰撞器,刚体可以让物体在物理影响下运动.碰撞体是物理组件的一类,它要与刚体一起添加 ...
- Unity 碰撞检测中碰撞器与触发器的区别
要产生碰撞必须为游戏对象添加刚体(Rigidbody)和碰撞器,刚体可以让物体在物理影响下运动.碰撞体是物理组件的一类,它要与刚体一起添加到游戏对象上才能触发碰撞.如果两个刚体相互撞在一起,除非两个对 ...
- Unity 碰撞器和触发器的理解
要产生碰撞必须为游戏对象添加刚体(Rigidbody)和碰撞器,刚体可以让物体在物理影响下运动.碰撞体是物理组件的一类,它要与刚体一起添加到游戏对象上才能触发碰撞.如果两个刚体相互撞在一起,除非两个对 ...
- 关于Unity中的Mesh Collider碰撞器
原来我的场景中有一个平面Plane带Mesh Collider碰撞器组件,一个主角Hero带有一个Box Collider碰撞器和有重力的Rigidbody刚体组件,主角可以放在平面上. 在导入场景后 ...
- Unity3d碰撞检测中碰撞器与触发器的区别
要产生碰撞必须为游戏对象添加刚体(Rigidbody)和碰撞器,刚体可以让物体在物理影响下运动.碰撞体是物理组件的一类,它要与刚体一起添加到游戏对象上才能触发碰撞.如果两个刚体相互撞在一起,除非两个对 ...
- Rigidbody(刚体) and Collider(碰撞器)
关于刚体Rigidbody,手册上是这么描述的: Control of an object's position through physics simulation. 通过物理模拟控制一个物体的位置 ...
- 碰撞器Colider 触发器
碰撞器可以让所依附的游戏物件对其他碰撞体产生碰撞行为(其他游戏物体必须具有Rigidbody组件) 对于不规则形状的物体,通常使用组合式碰撞体而不是网格碰撞器,以为网格碰撞器以模型的网格为基础,更为复 ...
- 关于Unity中的刚体和碰撞器的相关用法(一)
1.创建一个3D工程 2.构造项目文件目录 3.保存场景为game_scene到文件夹scenes中 4.创建一个Plane平面类型的GameObject节点和一个Sphere球体类型的GameObj ...
随机推荐
- ADB命令后台修改系统默认输入法
今天要研究uiautomator如何输入中文,看网上有一种常用的解决办法:http://www.cnblogs.com/yajing-zh/p/5125387.html在这篇博客最后提出来的问题,也是 ...
- ReportViewer部分使用总结
最近winform上使用ReportViewer做报表,因为之前没弄过,所以遇到了很多问题,现在总结一下. 一.运行环境 .net环境:4.0 开发工具:vs2010 二.开发步骤 第一步,在winf ...
- JAVA-基础(十) Swing
在看到applet和Swing的时候,我想起了winform,以及java beans包中各种所谓的组件的时候,一切都那么似曾相识. Swing是AWT的扩展,它提供了更强大和更灵活的组件集合. 除了 ...
- 一个通用的Makefile框架
先做一个简单的记录,后续有时间再慢慢完善补充细节. 先上一个整体图片: 其中,最重要的文件就是:program_template.mk. 下面是program_template.mk最重要的内容: $ ...
- tomcat6-servlet规范对接 与 ClassLoader隔离
之前写的一个ppt 搬到博客来
- Leetcode1--->数组中两数之和等于给定数
题目: 给定一个数组nums,目标数target.在数组中找到两数之和为target的数,返回两数的下标举例: Given nums = [2, 7, 11, 15], target = 9, Bec ...
- Multi-Dimensional Recurrent Neural Networks
Multi-Dimensional Recurrent Neural Networks The basic idea of MDRNNs is to replace the single recurr ...
- Leetcode 475.供暖气
供暖气 冬季已经来临. 你的任务是设计一个有固定加热半径的供暖器向所有房屋供暖. 现在,给出位于一条水平线上的房屋和供暖器的位置,找到可以覆盖所有房屋的最小加热半径. 所以,你的输入将会是房屋和供暖器 ...
- [python][oldboy]字符串 format
#coding=utf8 def format(self, *args, **kwargs): # known special case of str.format """ ...
- PreResultListener
PreResultListener是要给监听器接口,他可以在Action完成控制处理之后,系统转入实际的物理视图之间被回调. Struts 2 可以由ActionInvocation的addPreRe ...