Unity3d -- 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) 当逗留碰撞器
Unity3d -- Collider(碰撞器与触发器)的更多相关文章
- Unity -- Collider(碰撞器与触发器)
(2d与3d的Collider可以相互存在,但是无法相互协作,如2d是无法检测3d的,反之,一样) 在目前掌握的情况分析,在Unity中参与碰撞的物体分2大块:1.发起碰撞的物体.2.接收碰撞的物体. ...
- Unity3d碰撞检测中碰撞器与触发器的区别
要产生碰撞必须为游戏对象添加刚体(Rigidbody)和碰撞器,刚体可以让物体在物理影响下运动.碰撞体是物理组件的一类,它要与刚体一起添加到游戏对象上才能触发碰撞.如果两个刚体相互撞在一起,除非两个对 ...
- Unity 碰撞检测中碰撞器与触发器的区别
要产生碰撞必须为游戏对象添加刚体(Rigidbody)和碰撞器,刚体可以让物体在物理影响下运动.碰撞体是物理组件的一类,它要与刚体一起添加到游戏对象上才能触发碰撞.如果两个刚体相互撞在一起,除非两个对 ...
- Unity 碰撞器和触发器的理解
要产生碰撞必须为游戏对象添加刚体(Rigidbody)和碰撞器,刚体可以让物体在物理影响下运动.碰撞体是物理组件的一类,它要与刚体一起添加到游戏对象上才能触发碰撞.如果两个刚体相互撞在一起,除非两个对 ...
- Unity3D --对撞机/碰撞器 介绍
碰撞器一般都用作触发器而用,刚体一般用作真实碰撞. 静态对撞机:一个对象有对撞机组件,没有刚体组件. 这种情况在场景中的静态物体应用较多,比如墙体,房屋等静止不动的物体. 物理引擎假设静态对撞机是不会 ...
- 碰撞器与触发器[Unity]
请看原帖,移步:Unity3d碰撞检测中碰撞器与触发器的区别 要产生碰撞必须为游戏对象添加刚体(Rigidbody)和碰撞器,刚体可以让物体在物理影响下运动.碰撞体是物理组件的一类,它要与刚体一起添加 ...
- 关于Unity中的Mesh Collider碰撞器
原来我的场景中有一个平面Plane带Mesh Collider碰撞器组件,一个主角Hero带有一个Box Collider碰撞器和有重力的Rigidbody刚体组件,主角可以放在平面上. 在导入场景后 ...
- Unity3D使用碰撞体做触发器实现简单的自己主动开门
在游戏制作中触发器的使用很的方便也很有用. 这一张我们简介一下怎样使用一个简单的触发器来实现自己主动开门关门的效果. 首先确保你已经对门进行了动画的设置. 详细流程例如以下. 选择Window- ...
- Rigidbody(刚体) and Collider(碰撞器)
关于刚体Rigidbody,手册上是这么描述的: Control of an object's position through physics simulation. 通过物理模拟控制一个物体的位置 ...
随机推荐
- 使用vue.js开发小程序
写在前面 刚刚开源的mpvue引起了不少前端er们的注意,下图是一个简单的对比. 话不多说,我们现在感受一下如何使用mpvue开发小程序.(以下内容参照mpvue文档完成). 开发环境 node np ...
- IDEA webapp文件夹不识别解决方案
使用IDEA 创建moudule 用的是的是maven archertype-quickstart ,自动生成并么有webapp目录,于是我从别的项目中拷贝了一个,发现webapp文件夹图标和普通文件 ...
- texi2dvi - 打印 Texinfo 文档
SYNOPSIS 总览 texi2dvi [OPTION]... FILE... DESCRIPTION 描述 依次从 Tex 系统中运行每个 Texinfo 或者 LaTex 文件 FILE,直到解 ...
- JS window对象 Location对象 location用于获取或设置窗体的URL,并且可以用于解析URL。 语法: location.[属性|方法]
Location对象 location用于获取或设置窗体的URL,并且可以用于解析URL. 语法: location.[属性|方法] location对象属性图示: location 对象属性: lo ...
- html浮动小问题
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 关于linux centos7 vmware 和windows7 文件共享笔记
本方法是以win7,VMware9.0.1 ,centos6.4为基础实验的. 对于linux的初级使用阶段,都会Windows中使用linux虚拟机VMWare或者其它的.在Windows与linu ...
- 利用Python批量重命名一系列文件名杂乱的文件
假设目录下面有这样一系列命令杂乱的文件: OPENFOAM -TRAINING- PART- #1.pdf OPENFOAM - TRAINING- PART- #2.pdf OPENFOAM- TR ...
- 思维构造+匹配——cf1199E
直接枚举每条边,如果边加到图中后还是个匹配图,就直接加,反之就不加 这样加完所有边后,剩下的点必定可以组成一个独立集:因为如果剩下的点中还有互相匹配的,那么这对点应该在加边时就被算到匹配图中 所以要么 ...
- HDU - 1712 (分组背包模板)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1712 题意:给你n个课程,每个课程有很多种学习方法,用的时间和取得的效果都不一样,现在你只有m天时间用来学 ...
- 【UR #2】跳蚤公路
[UR #2]跳蚤公路 参照yjc方法.也就是地铁环线那个题. 求每个点不在负环内的x的取值范围.然后所有1到j能到i的j的范围取交.得到答案. 每个边形如kx+b的直线,每个环也是 每个点不在负环内 ...