Unity碰撞检测的必要条件
Unity中有两个独立的物理引擎,一个用于3D物理系统,一个用于2D物理系统。两个引擎是使用不同的组件实现的。因此BoxCollider和Rigidbody一起使用,代码中用OnTriggerEnter才能检测到触发;BoxCollider2D和Rigidbody2D一起使用,代码中用OnTriggerEnter2D才能检测到触发。
接下来组件以2D示例讲解。
Rididbody2D
刚体(Rigidbody),有了这个物体就有看物理行为(受力的作用),两个物体想要发生碰撞检测,其中一个必须带有刚体组件。
BoxCollider2D
盒状碰撞体,只是碰撞体的一种。‘
碰撞
发生碰撞检测的必要条件:两个物体必须都有Collider,有一个带有Ridibody。碰撞检测的方法:
(如果两个对象都是运动刚体(勾选了kinematic),不会调用这些函数)
OnCollisionEnter2D( Collision collisionInfo ) 进入碰撞器
OnCollisionExit2D( Collision collisionInfo ) 退出碰撞器
OnCollisionStay2D( Collision collisionInfo ) 停留碰撞器
触发
如果其中一个碰撞体勾选了is Trigger,那么该脚本的方法就能检测到触发检测了:
OnTriggerEnter2D( Collider other )进入触发器
OnTriggerExit2D( Collider other )退出触发器
OnTriggerStay2D( Collider other )停留触发器
更多参考Unity手册翻译
问题
在操作附加了Rigidbody2D的物体时,不要直接通过操作Transform来移动、旋转它。
通常,Unity Editor 的Transform组件定义游戏对象(及其子游戏对象)在场景中的定位、旋转和缩放方式。更改Transform组件将更新其他组件,这样可以更新渲染对象的位置或碰撞体所在位置之类的属性。2D 物理引擎能够移动碰撞体并使这些碰撞体彼此交互,因此物理引擎需要一种方法将碰撞体的此移动状态传回变换组件。此移动以及与碰撞体的连接便是 2D 刚体组件的用途。
2D 刚体组件会覆盖Transform组件,并将其更新为 2D 刚体定义的位置/旋转。请注意,虽然仍然可以通过自行修改变换组件来覆盖 2D 刚体(因为 Unity 会公开所有组件上的所有属性),但是这样会导致各种问题,例如游戏对象相互穿过或嵌入等问题以及不可预测的移动。
Unity碰撞检测的必要条件相关推荐
- Unity碰撞检测机制的原理(更新中...)
总是碰到关于碰撞的问题,今天实在忍不住了,来把它搞懂,不然听到八叉树,BSP什么的就怕可不行. 转自:http://www.manew.com/thread-102595-1-1.html 碰撞机制 ...
- unity碰撞检测函数,碰撞信息获取,触发检测,使用粒子系统创建火焰,创建动画(火光闪烁),导航系统,通过导航系统控制人物移动,控制摄像机的跟随,控制角色动画播放
碰撞检测函数 private void OnCollisionEnter(Collision collision){print("OnCollisonEnter");}privat ...
- unity 碰撞检测的四种检测模式
四种检测模式 Discrete:离散检测 通过在物理间隔时间中检测碰撞来工作 对场景中的所有其他碰撞体使用离散碰撞检测,其他碰撞体在测试碰撞时会使用离散检测. 用于正常碰撞(默认值) 缺点: 快速移动 ...
- Unity 碰撞检测
OnTriggerEnter和OnCollisionEnter两种方法 都需要添加Collider属性 OnTriggerEnter:碰撞方添加Rigidbody,Collider勾选is Trigg ...
- unity碰撞检测识别对象的几种方法,刚体篇
文章目录 一. 指定碰撞层级 二. 指定Collider组件的标签 三. 判断物体的类型 四. 判断物体的名字 一. 指定碰撞层级 可以在物体的Collider组件中设置碰撞层级,只有属于指定层级的物 ...
- Unity碰撞检测/触发器触发问题
在制作2D平板冒险游戏的攻击模块时,遇到攻击敌人后无法产生触发器事件的问题. 在玩家游戏对象下有一攻击子对象.子对象碰撞器默认处于禁用状态,当按下攻击键时,通过代码: gameObject.GetCo ...
- 关于Unity碰撞检测失败的冷门原因
问题背景 在学习Unity3d项目(版本2018.3.f1)的时候出现了Trigger对象始终不执行OnTriggerEnter函数问题,运动对象自带Rigidbody组件以及Collider组件,被 ...
- Unity | 碰撞检测相关
产生碰撞的条件 勾选isTrigger的collider2D没有 挂有rigibody2D组件 另外一个物体的collider2D不用勾选isTrigger 并且带有rigibody2D组件 两个co ...
- unity碰撞检测的几种函数
文章目录 一. 二. 三. 四. 五. 六. 七. 代码 一. OnCollisionEnter(Collision collision):这个函数用于检测两个物体之间的碰撞事件,当两个物体发生碰撞时 ...
最新文章
- Warning: React.createElement: type is invalid -- expected a string (for built-in components) or a cl
- 你要成为人才,先学习做伯乐
- 在easyui中在同一列中合并相同连续值的jquery插件
- 人工智能:第五章 计算智能(2)
- 【转】ASP中的SQL注入
- 2019 年百度之星·程序设计大赛 - 初赛二
- HashMap和ArrayList初始大小和扩容后的大小
- 《SolidWorks 2013中文版完全自学手册》——2.5 添加几何关系
- 微信小程序 数据库获取字符串 在view中显示换行
- ios 表情符号 键盘_更方便地输入颜文字表情:教你如何在 iPhone 键盘中添加颜文字...
- Python爬取Facebook公共主页帖子
- Web3依赖参与型经济,而它缺少的正是参与
- 教你2种常用的电商高并发处理解决方案
- 【用pandas_alive几行代码绘制竞赛动图】全网首发pandas_alive数据可视化中文学习笔记合集,学不会来打我(配置好的venv虚拟环境+拿来即用测试代码+测试数据集+参数api解析)
- wps word文档生成目录的时候显示断裂会生成大纲怎么办_如何用Word编辑参考文献...
- Java 旋转、翻转图片工具类(附代码) | Java工具类
- beyond compare下载安装及使用教程
- springboot 优雅关闭_springboot优雅的关闭应用
- cad app android,迷你CAD免费手机版
- 【PS/AI】2021新年金色装饰背景矢量素材