盒碰撞器是一个基本的方形碰撞原型
一堆盒碰撞器
Properties属性
材质
引用何种物理材质决定了他和其他对象如何作用。
是否触发器
如激活,此碰撞器用于触发事件,并且被物理引擎忽略。
大小
在X、Y、Z三维上的碰撞器尺寸。
中心
碰撞器在对象本地坐标中的位置
Details细节
盒碰撞器可以被调整成不同大小的长方体。能够很好地用于门、墙、平台等等。也能够用于角色的躯干或者车辆等交通工具的外壳。当然,只是用在盒子或者箱子上表现也十分完美。
一个标准的盒碰撞器
碰撞器作用于刚体使Unity中的物理作用生效。因为刚体允许对象被物理系统控制。碰撞器使对象之间产生碰撞作用。碰撞器必须独立于刚体加在对象上。碰撞器并不一定需要附加刚体,但是要使移动物体具有碰撞效果必须附加刚体。
当两个碰撞器间产生碰撞并且其中至少一个附加了刚体时,三个碰撞信息会发送给附加他们的对象,这些事件可以被脚本处理,而且允许用户可以选择自己写脚本或使用内置的NVIDIA PhysX引擎创建唯一的行为。
Triggers触发器
一个可供选择的碰撞器使用方法是标记他们为触发器,仅需要选中检视面板中的IsTrigger属性选择框。触发器不受物理引擎控制,当和一个触发器发生碰撞时会发出三个独特的触发信息。触发器用于触发你游戏中的其他事件,比如过场动画、自动门开启、显示教程信息等等,发挥你的想象力吧!
当然也应该意识到为了使两个触发器碰撞时发出碰撞事件,其中一个必须包含刚体。一个触发器和一个普通碰撞器碰撞,其中之一必须附加刚体。想了解不同类型碰撞的详细情况,可以参考下边进阶部分中的碰撞行为矩阵。
Friction and bounciness摩擦力和弹力
摩擦力、弹力和柔软度由物理材质中定义。标准资源( Standard Assets)中包含了大部分常见的物理材质。要使用只需点击物理材质上的下拉箭头然后选中一个,比如冰。你也可以创建你自己的物理材质并调整摩擦力的大小。
Compound Colliders复合碰撞器
复合碰撞器是组合原型碰撞器,共同扮演单个碰撞器的角色。当你在碰撞器上使用了一组复杂的网格而网格碰撞器不能用时,这是很好的选择。要创建复合碰撞器,只需给你的碰撞器对象创建子对象,然后为每个子对象添加原型碰撞器。这就允许你轻易地移动、旋转或者伸缩每个碰撞器,并使他们互相之间互不影响。
一个真实复合碰撞器设置
上图中,环境附加了一个网格碰撞器。网格碰撞器用于由不规则形状构成的地形或环境十分合适。枪模型游戏对象附加了刚体和多个原型碰撞器子对象。当父级刚体受力移动时,子级碰撞器也随之一起移动。原型碰撞器会和环境网格碰撞器碰撞,同时父级刚体会因子级碰撞器和场景中其他碰撞器作用产生的力改变移动路径。
网格碰撞器通常无法互相碰撞,如果一个网格碰撞器标记为凸起的(Convex),那么它可以和其他碰撞器碰撞。典型的解决方法是在移动对象上使用原型碰撞器而在静态的背景对象上使用网格碰撞器。
Hints提示
· 要给一个对象添加多个碰撞器,应该创建子对象并给每个子对象添加一个碰撞器。这使每个碰撞器可以被单独操作。
· 可以通过场景视图(Scene View )中的线框(gizmos)来查看碰撞器在你的对象上的预期效果。
· 碰撞器尽量匹配对象的比例。如果有一组不规则伸缩(每一维度上的比例都不相同),只能使用网格碰撞器才能完全匹配。
· 如果你想接收通过Transform组件移动的对象的碰撞/触发信息,你必须给移动对象附件刚体。
进阶
碰撞器组合
Unity中有许多不同的碰撞组合。每个游戏都很独特,不同的组合可能更好地适用于不同类型的游戏。如果你在游戏中使用了物理效果,那理解不同的基本碰撞类型会很有帮助,包括它们的常用形式及如何和其他类型的对象作用。
Static Collider静态碰撞器
指的是没有附加刚体而附加了碰撞器的游戏对象。这类对象会保持静止或者很轻微的移动。对于环境模型十分好用,当和刚体碰撞时而不会移动。
Rigidbody Collider刚体碰撞器
指的是同时附加了刚体和碰撞器的游戏对象。通过脚本的力量和碰撞完全受物理引擎的影响。可以和只包含碰撞器的游戏对象碰撞。将会成为你游戏中使用物理效果的基本类型碰撞器。
运动学刚体碰撞器
指的是同时包含碰撞器和刚体,并且激活IsKinematic的一类游戏对象,要移动这类游戏对象,要修改它的Transform组件,而不是用力。它们很像静态碰撞器不过对于想要不停地到处移动的碰撞器很好用。这类游戏对象还有许多其他的独特使用情景。
这类对象可以用于你通常希望用静态碰撞器发出触发事件的情形下。因为触发器必须要有刚体,你应该添加刚体然后启用IsKinematic。这会阻止你的对象因物理作用而移动并且允许接收你希望得到的触发事件。
运动学刚体启用与否很容易控制。这对创建人偶十分适用,通常,当你希望一个角色依照动画活动,然后由于爆炸或者其他你选择的情况而引起的碰撞导致其变为人偶。这种情况下,很简单,只需要通过脚本将运动学刚体改为普通刚体。
如果有刚体有时候变得静止不动了,那么它们就是进入休眠了。意味着它们将不受物理变化影响,也就不会移动。如果你把一个运动学刚体从一个休眠的普通刚体下边移走,那休眠的刚体就会被唤醒并重新被物理变化时时影响。所以如果你有许多希望四处移动并有不同的对象要恰好砸到它们的静态碰撞器,那就用运动学刚体碰撞器吧。
碰撞行为矩阵
基于两个碰撞对象的配置,可以产生很多不同的效果。下表概括了基于附加不同组件的两个碰撞对象所产生的效果。其中有些组合只能导致碰撞的两个对象中的一个受到影响,.所以考虑到保持标准的规则-物理效果将不会对没有附加刚体的对象生效。
ollision detection occurs and messages are sent upon collision 碰撞后有碰撞检测并有碰撞信息发出 |
||||||
Static Collider 静态碰撞器 |
Rigidbody Collider 刚体碰撞器 |
Kinematic Rigidbody Collider 运动学刚体碰撞器 |
Static Trigger Collider 静态触发碰撞器 |
Rigidbody Trigger Collider 刚体触发碰撞器 |
Kinematic Rigidbody Trigger Collider 运动学刚体触发碰撞器 |
|
Static Collider 静态碰撞器 |
Y |
|||||
Rigidbody Collider 刚体碰撞器 |
Y |
Y |
Y |
|||
Kinematic Rigidbody Collider 运动学刚体碰撞器 |
Y |
|||||
Static Trigger Collider 静态触发碰撞器 |
||||||
Rigidbody Trigger Collider 刚体触发碰撞器 |
||||||
Kinematic Rigidbody Trigger Collider 运动学刚体触发碰撞器 |
Trigger messages are sent upon collision 碰撞后有触发信息 |
||||||
Static Collider 静态碰撞器 |
Rigidbody Collider 刚体碰撞器 |
Kinematic Rigidbody Collider 运动学刚体碰撞器 |
Static Trigger Collider 静态触发碰撞器 |
Rigidbody Trigger Collider 刚体触发碰撞器 |
Kinematic Rigidbody Trigger Collider 运动学刚体触发碰撞器 |
|
Static Collider 静态碰撞器 |
Y |
Y |
||||
Rigidbody Collider 刚体碰撞器 |
Y |
Y |
Y |
|||
Kinematic Rigidbody Collider 运动学刚体碰撞器 |
Y |
Y |
Y |
|||
Static Trigger Collider 静态触发碰撞器 |
Y |
Y |
Y |
Y |
||
Rigidbody Trigger Collider 刚体触发碰撞器 |
Y |
Y |
Y |
Y |
Y |
Y |
Kinematic Rigidbody Trigger Collider 运动学刚体触发碰撞器 |
Y |
Y |
Y |
Y |
Y |
Y |