创建和使用物理材质
概述
物理材质(Physics Material)用于定义游戏对象与世界场景动态交互的响应。在游戏对象上的物理材质可被场景碰撞检测功能获取,并在其碰撞结果中返回。物理材质通过预制件文件创建并保存,并可以通过C++派生类的方式,由用户自定义扩展出更多的材质属性。
创建物理材质
在项目(Project)面板选中res,然后在资源预览窗口空白处右击打开快捷菜单,选择新建文件夹(New Folder)创建一个新的文件夹并命名为Physics_Material(名称随意)。
注意:无法直接在根目录下创建物理材质。
在该目录下,右击资源预览窗口空白处,点击预制件(Prefab)创建一个新物理材质。
在弹出的选择父类(Pick Parent Class)窗口中,选择物理材质(Physics Material)后点击确定(OK)按钮。
在弹出窗口的输入框中,输入所创建的物理材质预制件名称后点击确定(OK)按钮。
双击所创建的预制件文件,打开该物理材质预制件的编辑窗口,进行物理材质的编辑。
在该窗口的详细面板(Details Panel)中,可通过修改相关属性来编辑物理材质。通过预制件(Prefab) -> 物理材质(Physics Material)创建的物理材质仅包含了摩擦力(Friction)的相关属性,可通过C++继承Class LPhysicsMaterial创建其派生类型,为物理材质添加更多的自定义属性。例如,添加不同物理材质对应的声音、特效等。
属性
属性 | 说明 |
---|---|
材质名称(Material Name) | 物理材质的名称 |
动态摩擦(Dynamic Friction) | 动摩擦系数 |
静态摩擦(Static Friction) | 静摩擦系数 |
摩擦力组合模式(Friction Combine Mode) | 选择摩擦力的组合模式。在发生摩擦时进行摩擦力计算,有以下四种不同模式:
|
恢复力(Restitution) | 物体的弹性系数 |
恢复力组合模式(Restitution Combine Mode) | 选择弹性的组合模式。形变之后的恢复力计算,有以下四种不同模式:
|
修改完后,点击按钮进行保存。
应用物理材质
在刚体编辑器中应用物理材质
材质配置会保存在刚体物理资源文件中。
在刚体编辑器的树形视图(Tree View)面板或场景(Scene)面板中,选中需要应用物理材质的碰撞体。
在刚体信息(Rigidbody Detail)面板中,展开碰撞(Collider)下的材质(Material)选项。
在材质文件(Material File)中可选择物理材质预制件文件,默认为空(Empty),此时可通过修改下方相关属性来修改碰撞体物理材质属性。
若在材质文件(Material File)中选择一个物理材质预制件文件,下方相关属性会默认使用该物理材质中预设的属性值,属性名变灰且不可修改。
在模型编辑器中应用物理材质
材质配置会保存在模型参数文件中。
在模型编辑器中,选择模型属性(Model Property)面板,在物理材质(Physics Material)下的默认(Default)下拉框中,选择一个已有的物理材质预制件。
在组件中应用物理材质
材质配置会默认保存在场景配置中,如果组件被保存成预制件,则材质配置保存在预制件配置中。
在大纲(Hierarchy)面板中选中一个对象,在观察器(Inspector)面板中选中组件,在下方的属性中找到物理(Physics)下的材质(Material),然后在
材质覆盖(Material Override)中指定一个物理材质。
如果想为指定的碰撞体设置不同的物理材质,可通过赋予碰撞体材质(Apply Material To Colliders)进行单独设置。若没有单独设置材质的碰撞体,则统一使用材质覆盖(Material Override)中的物理材质。(为碰撞体指定物理材质的前提是该组件有引用的刚体资源)
属性 | 说明 |
---|---|
碰撞体名称(Collider Name) | 需要配置特殊物理材质的碰撞体名称 |
物理材质(Physics Material) | 指定已有的物理材质文件 |
添加碰撞体物理材质
点击按钮,可添加新的碰撞体物理材质栏。
复制碰撞体物理材质
点击碰撞体物理材质栏旁的按钮可复制出一个新的物理材质栏。
删除碰撞体物理材质
点击碰撞体物理材质栏旁的按钮,可删除当前物理材质栏。
点击赋予碰撞体材质(Apply Material To Colliders)旁的按钮,可删除所有的碰撞体物理材质。
在体素地形上应用物理材质
在大纲(Hierarchy)面板中选中体素地形对象,或者直接在关卡(Level)面板中选中体素地形,右击打开快捷菜单,选择查找资产( Find Asset),在项目(Project)面板中即可进入到对应资源所在的目录。
在资源预览窗口中双击体素地形文件打开体素地形编辑器。
在体素地形编辑器中点击生态(Ecology),在生态(Ecology)面板中,选择行星生态(Planetary Ecology)中需要添加物理材质的生态,双击打开该生态的编辑窗口。
在生态编辑窗口的编辑生态(Edit Ecology)面板中找到物理引用(PhysX Reference),将所要引用的物理材质从资源预览窗口中拖到物理引用(PhysX Reference)上。
拖拽完成:
点击按钮进行保存。
物理材质的优先级
在组件、模型或物理资源(刚体编辑器)中指定的物理材质的生效优先级为:组件 > 模型 > 物理资源。
例如:在组件上指定的物理材质会覆盖模型与物理资源中的物理材质,而模型中的物理材质会覆盖物理资源中指定的物理材质。
效果展示
以下为物理材质简单效果的展示。
为box模型制作刚体资源(创建碰撞体)后,将box模型从资源预览窗口中拖拽到关卡(Level)面板中,调整其位置。(如何创建刚体资源可参考刚体编辑器)
为box模型制作刚体资源:
拖入关卡后调整其位置:
在大纲(Hierarchy)面板中选中box,然后在观察器(Inspector)面板中选中StaticMeshComponent(Inherited)(该模型组件默认使用通过刚体编辑器创建的刚体资源),在下方的物理(Physics)中勾选模拟物理(Simulate Physics)。
根据上述提供的在刚体编辑器/模型编辑器/组件中应用物理材质的方法,为该对象的刚体/模型/组件配置物理材质。(生效优先级为:组件 > 模型 >刚体资源)。
从资源预览窗口中拖入一个curved_stair模型到关卡(Level)面板中,调整其位置至box的下方。
效果一
物理材质预制件属性:
效果二
物理材质预制件属性:
效果三
物理材质预制件属性: