标签:混合 基于 阅读 透明度 stay 相互 物理材质 game ios
要有说服力的物理行为,游戏中的物体必须正确地加速,受到碰撞,引力和其他力量的影响。
Unity中实际上有两个独立的物理引擎:一个用于3D物理,另一个用于2D物理。两个引擎的主要概念是相同的(除了3D中的额外维度),但是它们是使用不同的组件实现的。例如,Rigidbody和Rigidbody2D。
笔者推荐阅读UNITY官方手册
在使用Unity中如果想要GO拥有重力,可以发生碰撞反馈等,那就必不可少需要添加一个组件Rigidbody。由于该组件代替了它本身的运动,所有不应该通过Transform来改变位置,旋转;相反应该使用forces来推动GO并让物理引擎计算结果。
Rigidbody组件拥有一个Is Kinematic
的属性,该属性可以将其从引擎的控制中移除,从而可以用脚本控制GO的运动。注意:尽量不要使用脚本控制该属性的开关。
当刚体的速度远低于一个设定的最小线性速度时,物理引擎就会认为它陷入睡眠状态。此时,GO不会再次移动,直到它收到一个讯号。这种模式意味着处理器不会花费时间更新刚体状态。
可以使用WakeUp
函数来唤醒GameObject。
Colliders组件为物理碰撞定义了一个物体的形状。它不需要完全符合GO的网格形状;事实上,大致相似在游戏中更加有效率。
UNITY中最简单的几种碰撞器: Box Collider, Sphere Collider 和Capsule Collider;2D碰撞器:Collider 2D 和 Circle Collider 2D。
有时候需要以组合的形式附加到物体上,这种形式可以保持较低的处理器开销,也增加一定的灵活性;但它们应该只有一个Rigidbody组件在父物体上。
那组合的碰撞器也不能满足我们的需求,这就需要 Mesh Collider;它可以精确的匹配对象的网格形状。但不要经常使用,它对性能的要求挺高。需要碰撞检测的时候可以把它设置为Convex,它一般被使用在几何图形上。
物体可以被单独添加一个碰撞器(可以没有刚体),不过一般这个物体是静态的。
物体之间相互碰撞的时候,物体表面会模拟它身上材质的属性,比如冰块,篮球等;物体的摩擦系数,弹性系数可以用物理材质来配置。
通过脚本可以通过OnCollisionEnter
启动检测什么时候发生的碰撞,也可以通过修改碰撞器上Is Trigger,来启动是否需要碰撞检测。启动之后会允许碰撞物体穿过,穿过的时候将调用物体脚本的OnTriggerEnter
函数。
Is Trigger = false
OnCollisionEnter //碰撞第一次调用
OnCollisionStay //保持碰撞中调用
OnColliosionExit //退出碰撞时调用
Is Trigger = true
OnTriggerEnter //进入触发器
OnTriggerStay //停留触发器
OnTriggerExit //离开触发器
静态的物体且拥有碰撞器,没有刚体;不要轻易在游戏的过程中使用它们,会给你带来意想不到的效果(占用额外性能)。
有碰撞器和刚体的物体,可以对来自脚本的添加力做出反应;最常见。
有碰撞器和刚体组件的物体,开启了IsKinematic;可以通过Transform来变换。它应该用于偶尔使用的物体,比如滑动门。
也可以实时切换IsKinematic属性在正常和运动行为之间切换;比如人物,一般使用动画来控制它,这时是要使用运动学的;而发生爆炸的时候,被炸碎的四肢,可以切换为非运动学来模拟出更好的效果。
可以使用各种Joint组件将两个物体进行链接,比如一个物体围绕另一个静态物体旋转。还可以做类似弹簧,绳子的效果。
特殊效果:
当施加的力大于这个值的时,可以设置一个关节断开。
关节之间可以产生驱动力,使其自动运动。
为第一人称或第三人称游戏中的角色做基于碰撞的物理特性。不能穿过静态碰撞物体;可以利用它设置物体的速度和方向等。
可视化物理调试允许您快速检查场景中的碰撞几何,并分析常见的物理场景。它提供了哪些GameObjects应该和不应该相互碰撞的可视化。当场景中有许多Colliders,或者Render和Collision Meshes不同步时,这是特别有用的。
打开方式:
Windows --> Physics Visualization
属性 | 功能 |
---|---|
Reset | 单击此按钮将“物理调试”窗口重置为默认设置。 |
Hide Layers | 使用下拉菜单确定是否从所选图层显示Colliders |
Hide Static Colliders | 选中此复选框以从可视化文件中移除静态碰撞图(不带有刚体组件的碰撞图)。 |
Hide Triggers | 选中此复选框以从可视化文件中删除也是触发器的Colliders。 |
Hide Rigidbodies | 选中此复选框以从可视化文件中移除Rigidbody组件。 |
Hide Kinematic Bodies | 选中此复选框可从可视化文件中删除具有运动学刚体组件(不受物理引擎控制)的碰撞体。 |
Hide Sleeping Bodies | 选中此复选框可从可视化文件中删除带有Sleeping Rigidbody组件(目前不与物理引擎相关)的Colliders 。 |
Collider Types | 使用这些选项从物理可视化中移除特定的碰撞器类型。 |
Hide BoxColliders | 选中此复选框可从可视化文件中删除Box Colliders。 |
Hide SphereColliders | 选中此复选框可从可视化中删除“ Sphere Colliders ”。 |
Hide CapsuleColliders | 选中此复选框可从可视化文件中移除Capsule Colliders。 |
Hide MeshColliders (convex) | 选中此复选框可从可视化中删除凸面 网格碰撞器。 |
Hide MeshColliders (concave) | 选中此复选框可从可视化中删除凹面 网格碰撞体。 |
Hide TerrainColliders | 选中此复选框可从可视化文件中删除Terrain Colliders。 |
Hide None | 单击隐藏无清除所有过滤标准并显示可视化中的所有对撞机类型。 |
Hide All | 点击全部隐藏以启用所有过滤器,并从可视化文件中删除所有的碰撞器类型。 |
Colors | 使用这些设置来定义Unity如何在可视化中显示物理组件。 |
Static Colliders | 使用此颜色选择器可以定义哪种颜色指示可视化中的静态碰撞体(不带刚体组分的碰撞体)。 |
Triggers | 使用此颜色选择器可以定义哪种颜色表示可视化中的“Trigger”的“Collision”。 |
Rigidbodies | 使用此颜色选择器来定义哪种颜色表示可视化中的Rigidbody组件 |
Kinematic Bodies | 使用此颜色选择器来定义哪种颜色表示可视化中的运动学刚体组件(不受物理引擎控制)。 |
Sleeping Bodies | 使用此颜色选择器来定义哪种颜色表示可视化中的Sleeping Rigidbody组件(目前不与物理引擎相关)。 |
Variation | 使用滑块设置0到1之间的值。这将定义您选择的颜色与随机颜色的混合程度。使用它可以通过颜色在视觉上分离Colliders,并查看GameObjects的结构 |
Rendering | 使用这些设置来定义Unity如何呈现和显示物理可视化。 |
Transparency | 使用滑块将值设置为0和1.这将定义可视化中绘制的碰撞几何的透明度。 |
Force Overdraw | 普通的渲染几何图形有时可以遮挡Colliders(例如,地板下面的Mesh Collider平面)。选中Force Overdraw复选框,使可视化渲染器在渲染几何图形上绘制Collider几何图形。 |
View Distance | 使用此设置可视化的视图距离。 |
Terrain Tiles Max | 使用此设置可视化中最大的地形图块数量 |
属性 | 功能 |
---|---|
Collision Geometry | 选中此复选框以启用碰撞几何可视化。 |
Mouse Select | 选中此复选框以启用鼠标悬停突出显示和鼠标选择。如果在Scene中有大的GameObjects互相阻塞,这可能很有用。 |
可视化物理调试工具主要用来分析和排除游戏中物理活动的故障。最推荐使用:
本作品由繁星陨辰采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。
标签:混合 基于 阅读 透明度 stay 相互 物理材质 game ios
原文地址:http://www.cnblogs.com/fanxingyunchen/p/7905288.html