一、物理引擎
1、刚体 Rigidbody
1>简介
- 刚体可以为游戏对象赋予物理特性,是游戏对象在物理系统的控制下接受推力和扭力,从而实现现实世界的物理学现象。
2>属性
2、碰撞体 Collider
1>简介
- 碰撞器是物理组件的一类,他与刚体一起促使碰撞发生
- 碰撞体是简单形状,如方块、球形或者胶囊形,在 Unity 3D 中每当一个 GameObjects 被创建时,它会自动分配一个合适的碰撞器。一个立方体会得到一个 Box Collider(立方体碰撞体),一个球体会得到一个 Sphere Collider(球体碰撞体),一个胶囊体会得到一个 Capsule Collider(胶囊体碰撞体)等。
2>分类
- 当游戏对象中的Rigidbody碰撞组件被添加后,其属性面板中会显示相应的属性设置选项,每种碰撞体的资源类型稍有不同。
3>属性
a) Box Collider 盒型碰撞体
- Box Collider 是最基本的碰撞体,Box Collider 是一个立方体外形的基本碰撞体
- 一般游戏对象往往具有 Box Collider 属性,如墙壁、门、墙以及平台等,也可以用于布娃娃的角色躯干或者汽车等交通工具的外壳,当然最适合用在盒子或是箱子上。
- 如果 Is Trigger 选项被勾选,该对象一旦发生碰撞动作,则会产生 3 个碰撞信息并发送给脚本参数,分别是 OnTriggerEnter、OnTriggerExit、OnTriggerStay
- Physics Material 定义了物理材质,包括冰、金属、塑料、木头等
b) Sphere Collider 球形碰撞体
- Sphere Collider 是球体形状的碰撞体
- Sphere Collider 是一个基于球体的基本碰撞体,Sphere Collider 的三维大小可以按同一比例调节,但不能单独调节某个坐标轴方向的大小
- 当游戏对象的物理形状是球体时,则使用球体碰撞体,如落石、乒乓球等游戏对象
c) Capsule Collider 胶囊碰撞体
- Capsule Collider 由一个圆柱体盒两个半球组合而成,Capsule Collider 的半径和高度都可以单独调节,可用在角色控制器或与其他不规则形状的碰撞结合来使用
- 通常添加至 Character 或 NPC 等对象的碰撞属性
d) Mesh Collider 网格碰撞体
- Mesh Collider(网格碰撞体)根据 Mesh 形状产生碰撞体,比起 Box Collider、Sphere Collider 和 Capsule Collider,Mesh Collider 更加精确,但会占用更多的系统资源
- 专门用于复杂网格所生成的模型
e) Wheel Collider 车轮碰撞体
- Wheel Collider(车轮碰撞体)是一种针对地面车辆的特殊碰撞体,自带碰撞侦测、轮胎物理现象和轮胎模型,专门用于处理轮胎
f) Terrain Collider 地形碰撞体
- 地形碰撞体 (Terrain Collider) 实现了一个碰撞表面,其形状与其所附加到的 Terrain 对象相同
4>物理材质
5>碰撞条件
- 在unity3D中要实现碰撞检测,需要满足以下条件:
1、两个物体都具有碰撞组件 2、至少有一个物体拥有Rigidbody组件 3、Collider都不勾选Is Trigger
6>碰撞三阶段
- MonoBehaviour.OnCollisionEnter:当进入碰撞时触发
- MonoBehaviour.OnCollisionExit:当退出碰撞时时触发
- MonoBehaviour.OnCollisionStay:当逗留在碰撞中触发
3、触发器 Trigger
1>简介
- 在Unity3D中,检测碰撞发生的方式有两种
1、利用碰撞体 2、利用触发器 - 在很多游戏引擎或工具中都有触发器,他被用来触发事件
- 碰撞体与触发器的区别在于:
1、碰撞体是触发器的载体 2、触发器只是碰撞体的一个属性 - 如果既想要检测到物理的接触,又不想让碰撞检测影响物体的移动,或者要检测一个物体是否经过控件中的某个区域,这是就可以用到触发器
- 例如:碰撞体适合模拟汽车被撞飞、皮球掉在地上又反弹的效果,而触发器适合模拟人站在靠近门的位置时门自动打开的效果
2>触发条件
- 在unity3D中要实现触发检测,需要满足以下条件:
1、两个物体都具有Collider组件 2、至少有一个物体拥有Rigidbody组件 3、至少有一个物体的Collider组件勾选了Is Trigger
3>触发三阶段
- MonoBehaviour.OnTriggerEnter:当进入触发器时触发
- MonoBehaviour.OnTriggerExit:当退出触发器时触发
- MonoBehaviour.OnTriggerStay:当逗留在触发器中触发
4、恒定力 Constant Force
1> 简介
- 恒定力 (Constant Force) 可用于快速向刚体添加恒定力。如果不希望某些一次性对象以较大的速度开始而是逐渐加速(比如火箭),则很适合使用恒定力
2> 属性
- 要使对象向上运动,请添加具有正 Y 值 Force 属性的恒定力。
- 要使对象向前飞行,请添加具有正 Z 值 Relative Force 属性的恒定力。
5、角色控制器 Character Controller
1>简介
- 在 Unity 3D 中,游戏开发者可以通过角色控制器来控制角色的移动。
- 角色控制器允许游戏开发者在受制于碰撞的情况下发生移动,而不用处理刚体
- 角色控制器不会受到力的影响,在游戏制作过程中,游戏开发者通常在任务模型上添加角色控制器组件进行模型的模拟运动
2> 属性
6、关节 Joint
1> 简介
- 在 Unity 3D 中,物理引擎内置的关节组件能够使游戏对象模拟具有关节形式的连带运动
- 关节对象可以添加至多个游戏对象中,添加了关节的游戏对象将通过关节连接在一起并具有连带的物理效果
- 需要注意的是,关节组件的使用必须依赖刚体组件
2> 分类
- Hinge Joint 铰链关节
1、铰链关节 (Hinge Joint) 将两个刚体组合在一起,对刚体进行约束,让它们就像通过铰链连接一样移动。 2、铰链关节非常适合用于门,但也可用于模拟链条、钟摆等对象 - Fixed Joint 固定关节
1、 固定关节 (Fixed Joint) 将对象的移动限制为依赖于另一个对象。这有点类似于管控 (Parenting),但是实现的方式是通过物理系统而不是变换 (Transform) 层级视图。 2、使用固定关节的最佳场合是在希望对象可以轻松相互分离时,或者在没有管控情况下连接两个对象的移动。 - Spring Joint 弹簧关节
1、弹簧关节 (Spring Joint) 将两个刚体连接在一起,但允许两者之间的距离改变,就好像它们通过弹簧连接一样 - Character Joint 角色关节
1、角色关节 (Character Joint) 主要用于布娃娃效果。此类关节是延长的球窝关节,可在每个轴上限制该关节 - Configurable Joint 可配置关节
1、可配置关节 (Configurable Joint) 包含其他关节类型的所有功能,并提供更强大的角色移动控制。 2、当您想要自定义布娃娃的运动并对角色强制实施某些姿势时,这种关节特别有用。 3、使用可配置关节还可以将关节修改为您自行设计的高度专业化关节
3> 属性
a) Hinge Joint 铰链关节
b) Fixed Joint 固定关节
c) Spring Joint 弹簧关节
d) Character Joint 角色关节
- 示例
- 扭转轴(用辅助图标上的橙色椎体可视化)可在很大程度上控制上限和下限,允许按照度数指定上限和下限(限制角度是相对于开始位置进行测量的)。Low Twist Limit > Limit 中的值 –30 和 High Twist Limit > Limit 中的值 60 可将围绕扭转轴(橙色辅助图标)的旋转范围限制在 –30 度到 60 度之间。
- Swing 1 Limit 可限制摆动轴的旋转范围(用辅助图标上的绿色轴可视化)。限制角度是对称的。因此,值 30 会将旋转限制在 –30 到 30 之间。
- Swing 2 Limit 轴未显示在辅助图标上,但该轴垂直于其他两个轴(即辅助图标上用橙色可视化的扭转轴和辅助图标上用绿色可视化的 Swing 1 Limit 轴)。 角度是对称的,因此值 40 可将围绕该轴的旋转范围限制在 –40 度到 40 度之间。
e) Configurable Joint 可配置关节
|