Unity 3D 碰撞体(Collider)|| Unity 3D 触发器(Trigger)
在游戏制作过程中,游戏对象要根据游戏的需要进行物理属性的交互。
因此,Unity 3D 的物理组件为游戏开发者提供了碰撞体组件。碰撞体是物理组件的一类,它与刚体一起促使碰撞发生。
碰撞体是简单形状,如方块、球形或者胶囊形,在 Unity 3D 中每当一个 GameObjects
被创建时,它会自动分配一个合适的碰撞器。
一个立方体会得到一个 Box Collider
(立方体碰撞体),一个球体会得到一个 Sphere Collider
(球体碰撞体),一个胶囊体会得到一个 Capsule Collider
(胶囊体碰撞体)等。
添加碰撞体
在 Unity 3D 的物理组件使用过程中,碰撞体需要与刚体一起添加到游戏对象上才能触发碰撞。
值得注意的是,刚体一定要绑定在被碰撞的对象上才能产生碰撞效果,而碰撞体则不一定要绑定刚体。
碰撞体的添加方法是:首先选中游戏对象,执行菜单栏中的 Component
→ Physics
命令,此时可以为游戏对象添加不同类型的碰撞体。
碰撞体选项设置
Unity 3D 为游戏开发者提供了多种类型的碰撞体资源,如下图所示。当游戏对象中的 Rigidbody 碰撞体组件
被添加后,其属性面板中会显示相应的属性设置选项,每种碰撞体的资源类型稍有不同。
- Box Collider
Box Collider
是最基本的碰撞体,Box Collider
是一个立方体外形的基本碰撞体。
一般游戏对象往往具有 Box Collider
属性,如墙壁、门、墙以及平台等,也可以用于布娃娃的角色躯干或者汽车等交通工具的外壳,当然最适合用在盒子或是箱子上。
下图所示是 Box Collider
,游戏对象一旦添加了 Box Collider
属性,则在 Inspector 面板中就会出现对应的 Box Collider
属性参数设置。
参 数 | 含义 | 描述 |
---|---|---|
Is Trigger
|
触发器 | 勾选该项,则该碰撞体可用于触发事件,并将被物理引擎所忽略。 |
Material
|
材质 | 为碰撞体设置不同类型的材质。 |
Center
|
中心 | 碰撞体在对象局部坐标中的位置。 |
Size
|
大小 | 碰撞体在X、Y、Z方向上的大小。 |
如果 Is Trigger 选项
被勾选,该对象一旦发生碰撞动作,则会产生 3 个碰撞信息并发送给脚本参数,分别是 OnTriggerEnter
、OnTriggerExit
、OnTriggerStay
。
Physics Material
定义了物理材质,包括冰、金属、塑料、木头等。
- Sphere Collider
Sphere Collider
是球体形状的碰撞体。
Sphere Collider
是一个基于球体的基本碰撞体,Sphere Collider
的三维大小可以按同一比例调节,但不能单独调节某个坐标轴方向的大小,具体参数如下表所示。
参 数 | 含义 | 描述 |
---|---|---|
Is Trigger
|
触发器 | 勾选该项,则该碰撞体可用于触发事件,并将被物理引擎所忽略。 |
Material
|
材质 | 为碰撞体设置不同类型的材质。 |
Center
|
中心 | 碰撞体在对象局部坐标中的位置。 |
Radius
|
半径 | 设置球形碰撞体的大小。 |
当游戏对象的物理形状是球体时,则使用球体碰撞体,如落石、乒乓球等游戏对象。
- Capsule Collider
Capsule Collider
由一个圆柱体盒两个半球组合而成,Capsule Collider
的半径和高度都可以单独调节,可用在角色控制器或与其他不规则形状的碰撞结合来使用。
通常添加至 Character
或 NPC
等对象的碰撞属性,如下图所示。
参 数 | 含义 | 描述 |
---|---|---|
Is Trigger
|
触发器 | 勾选该项,则该碰撞体可用于触发事件,并将被物理引擎所忽略。 |
Material
|
材质 | 为碰撞体设置不同类型的材质。 |
Center
|
中心 | 碰撞体在对象局部坐标中的位置。 |
Radius
|
半径 | 设置球形碰撞体的大小。 |
Height
|
局度 | 控制碰撞体中圆柱的高度。 |
Direction
|
方向 | 设置在对象的局部坐标中胶囊体的纵向所对应的坐标轴,默认是Y轴。 |
- Mesh Collider
Mesh Collider
(网格碰撞体)根据 Mesh
形状产生碰撞体,比起 Box Collider
、Sphere Collider
和 Capsule Collider
,Mesh Collider
更加精确,但会占用更多的系统资源。
专门用于复杂网格所生成的模型。
参 数 | 含义 | 描述 |
---|---|---|
Convex
|
凸起 |
勾选该项,则Mesh Collider 将会与其他的Mesh Collider 发生碰撞。
|
Material
|
材质 | 为碰撞体设置不同类型的材质。 |
Mesh
|
网格 | 获取游戏对象的网格并将其作为碰撞体。 |
- Wheel Collider
Wheel Collider
(车轮碰撞体)是一种针对地面车辆的特殊碰撞体,自带碰撞侦测、轮胎物理现象和轮胎模型,专门用于处理轮胎。
参 数 | 含义 | 描述 |
---|---|---|
Mass
|
质量 |
用于设置 Wheel Collider 的质量。
|
Radius
|
半径 | 用于设置碰撞体的半径大小。 |
Wheel Damping Rate
|
车轮减震率 | 用于设置碰撞体的减震率。 |
Suspension Distance
|
悬挂距离 | 该项用于设置碰撞体悬挂的最大伸长距离,按照局部坐标来计算, 悬挂总是通过其局部坐标的 Y 轴延伸向下。 |
Center
|
中心 | 用于设置碰撞体在对象局部坐标的中心。 |
Suspension Spring
|
悬挂弹簧 | 用于设置碰撞体通过添加弹簧和阻尼外力使得悬挂达到目标位置。 |
Forward Friction
|
向前摩擦力 | 当轮胎向前滚动时的摩擦力属性。 |
Sideways Friction
|
当轮胎侧向滚动时的摩擦力属性。 | |
Wheel Damping Rate
|
车轮减震率 | 用于设置碰撞体的减震率。 |
Wheel Damping Rate
|
车轮减震率 | 用于设置碰撞体的减震率。 |
Unity 3D 触发器(Trigger)
在 Unity 3D 中,检测碰撞发生的方式有两种:
- 利用碰撞体(Collider)。
- 利用触发器(Trigger)。
在很多游戏引擎或工具中都有触发器,它被用来触发事件。
例如,在游戏中的剧情里,玩家通过某个任务道具召唤了任务相关的 NPC 或者可击杀的怪物,就可以用触发器来实现。
当绑定了碰撞体的游戏对象进入触发器区域时,会运行触发器对象上的 OnTriggerEnter 函数
,同时需要在检视面板中的碰撞体组件中勾选 IsTrigger 复选框
。
触发信息检测使用以下 3 个函数:
MonoBehaviour.OnTriggerEnter
(Collider collider),当进入触发器时触发。
MonoBehaviour.OnTriggerExit
(Collider collider),当退出触发器时触发。
MonoBehaviour.OnTriggerStay
(Collider collider),当逗留在触发器中时触发。
Unity 3D 中的碰撞体和触发器的区别在于:
- 碰撞体是触发器的载体。
- 触发器只是碰撞体的一个属性。
如果既想要检测到物体的接触,又不想让碰撞检测影响物体移动,或者要检测一个物体是否经过空间中的某个区域,这时就可以用到触发器。
例如,碰撞体适合模拟汽车被撞飞、皮球掉在地上又弹起的效果,而触发器适合模拟人站在靠近门的位置时门自动打开的效果。
Unity 3D 碰撞体(Collider)|| Unity 3D 触发器(Trigger)相关推荐
- Unity自动化碰撞体生成方法-Normal Collider 和 碰撞体代理
如何在Unity中对角色快速创建碰撞体(Normal Collider)和碰撞体代理(Fake Collider) 前言 快速给Humanoid人形角色添加碰撞体,使用Unity 的Collider系 ...
- unity3d 理解刚体(Rigidbody)和碰撞体(Collider)以及触发器(Is Trigger),边学边更新
刚体(Rigidbody)的官方(摘自Unity3d的官方指导书<Unity4.x从入门到精通>)解释如下: Rigidbody(刚体)组件可使游戏对象在物理系统的控制下来运动,刚体可接受 ...
- u3d中刚体与碰撞体的理解以及is Trigger属性的意义
我是看了网上一些解释,然后用自己的话简单的归纳一下: 刚体:个人理解就是具有物理属性(如:质量),接受物理作用(如:重力)的组件. 碰撞体:个人理解就是计算碰撞后的物理量(如:弹力). 刚体与碰撞体的 ...
- 笔记|Unity基础:碰撞体开关门、灯
介绍: 单击大门的把手打开大门→单击灯的开关打开灯→单击房门的把手打开房门→单击房门的把手关闭房门→单击灯的开关关灯→单击大门的把手关闭大门 步骤: ①在Hierarchy创建三个Empty(空对象) ...
- 【Unity入门计划】制作RubyAdventure03-使用碰撞体触发器实现世界交互
目录 8 添加生命系统 演示效果 9 使用触发器实现吃血包 9.1 添加一个可以被吃掉的血包 10 使用触发器添加伤害区域 10.1 设置伤害区域 10.2 设置无敌时间 关于无敌时间的讨论 10.3 ...
- 【Unity】11.3 基本碰撞体(箱体、球形、胶囊、网格)
分类:Unity.C#.VS2015 创建日期:2016-05-02 一.简介 碰撞组件(Collider) 是另一种必须随刚体 (Rigidbody) 添加的组件,以便允许它和其他组件发生碰撞.或者 ...
- Unity物理系统中碰撞体、刚体、isKinematic、isTrigger的关系(附动画演示)
Unity物理系统中碰撞体.刚体.isKinematic.isTrigger的关系 写在前面 产生碰撞的条件 产生触发的条件 实验一:蓝块(碰撞体).红块(碰撞体) 实验二:蓝块(碰撞体).红块(碰撞 ...
- [Unity][2D][物理碰撞]同一层级碰撞体忽略碰撞
3D碰撞体和2D碰撞体的原理 ,代码差不多.参考资料3 参考资料2,一个2D碰撞体忽略另外一个碰撞体. 参考资料1,一个层级的 碰撞体 忽略 另外一个 层级的 碰撞体. Edit-ProjectSet ...
- 【Unity】物理系统的静态碰撞体、刚体碰撞体、Kinematic刚体碰撞体
碰撞体分为三类(触发器同理):静态碰撞体.刚体碰撞体.Kinematic刚体碰撞体. 静态碰撞体:不挂载刚体组件的碰撞体 常用于地形.障碍物等不会移动位置的物体,物理引擎会对此优化性能.在游戏运行时, ...
最新文章
- 【怎样写代码】工厂三兄弟之抽象工厂模式(二):解决方案
- 8款审核AWS帐户安全性的免费工具,你值得拥有
- docker 安装nginx_Docker18安装Nginx和Apache实验
- JAVA之JVM垃圾回收(GC)机制详解
- mysql 9.0创建数据库_数据库基础学习——MySQL数据库知识小结(9)
- 盘点关于Java在生活中的应用!
- SECD machine
- C和指针之函数之归以字符形式按顺序打印数字的每位数字(递归和非递归)
- java的properties文件中的换行书写
- 写给 3 年内程序开发者的一封信
- 分享一些学习资料-大量PDF电子书
- MAC 外接键盘卡顿处理
- Java项目:博客系统西瓜社区(springboot+mybatis-plus+thymeleaf)
- android 拍照 对焦,在Android中设置相机对焦区域
- 音频频谱图(自定义View——进阶篇2)
- 深入理解SimpleChannelInboundHandler
- 通用代码生成器,一键生成前端和后端
- 麦克风阵列技术 三 ( 声源定位 波束形成 去混响 麦克风阵列结构设计 声学结构确认流程)
- MFC ODBC 学生成绩管理系统 示例
- 学奥数还是计算机,到底该不该让孩子学奥数,不妨先看看这个
热门文章
- 字(单词)间距,字符间距,行间距,缩进,加粗,字体大小,字体颜色
- 安装webpack出现警告:npm WARN notsup Unsupported engine for watchpack-chokidar2@2.0.0
- 技术沙龙|京东云端到端多媒体关键技术揭秘
- 提供网上存储空间-百度网盘电脑版提供下载
- LoopBar – Tap酒吧与无限滚动
- mysql异常代码c0000005_win7系统因0xc0000005错误导致应用程序无法正常启动的解决方法...
- java reuse_JAVA reuse
- MySQL基础01 补充
- 微信小程序居中、居右、居底和横向、纵向布局,文字在图片中间,网格布局
- 计算机文档如何移动,win7系统如何移动installer文件夹