本文主要是介绍Dynamic Water Physics 2动态水系统使用指南,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、官方文档说明
水系统部分
1.任何处于活动状态并带有WaterObject组件的物理对象都将与水交互,
WaterObject工作的两个要求:刚体和网格过滤器(MeshFilter)。
刚体不必与WaterObject在同一个物体上,但必须存在于其父物体之一。这允许使用复合对象:一个刚体有多个船体——比如三体船。
2.设置可与水交互的物体,可添加WaterObjectWizard脚本(处理所有的浮力和流体动力学计算),然后点击Auto-Setup。
3.MassFromMaterial脚本,可以基于材质计算和设置刚体质量,密度和网格体积。
4.全部平坦水资源/着色器使用相同的WaterDataProvider:FlatWaterDataProvide,而对于波浪形资源,如Crest,必须使用特定于资源的WaterDataProvider,例如:CrestWaterDataProvider。
5.WaterParticleSystem可用于产生泡沫,它适用于任何平坦的水域。将Resources中的DefaultWaterParticleSystem预制体拖到场景作为父物体,放在水面上,运行程序即可看到泡沫。沿X-Z轴发射,不适用于波浪水资源。
6.CenterOfMass脚本,用于自动调整质心(重心),v2.5版本改为VariableCenterOfMass
7.MassFromVolume脚本,用于根据网格的体积和密度计算对象的质量。网格的体积将自动计算。质量字段也可以手动设置。可以与MassFromChildren一起使用来计算复杂对象(对象具有多个子WaterObject)。
8.MassFromChildren用于从子对象中确定刚体的质量。它总结了所有附加了MassFromVolume脚本的子对象。(确保至少有一个子对象附加了MassFromVolume,否则结果将为0并被忽略)
9.Dynamic Water Physics 2与Crest v10或更新版本兼容。旧版本具有不同的API。Crest支持水的高度、法线和流量。
船舶控制部分
1.船舶通过Input类检索输入,该类从InputProvider检索输入,并将检索到的数据填充InputStates结构。
InputProviders分为ShipInputProviders和SceneInputProviders。ShipInputProviders负责船舶输入(油门、刹车等),而SceneInputProviders负责场景输入(船舶更换、摄像机更换、摄像机移动以及与船舶无关的其他输入)。每个输入中都需要有一个(例如InputSystemShipInputProvider和InputSystemSceneInputProvider)。
场景中可以存在多个不同的InputProviders(需要v1.0或更新版本)。例如,InputSystemProviders和MobileInputProviders可以在同一场景中使用。在输入数字的情况下,结果输入将是来自所有InputProviders的输入的总和,在输入布尔的情况中,结果输入是所有输入的逻辑或运算。
输入存储在InputStates对象中,可以从一艘船复制到另一艘船。
要手动设置InputStates,请确保将Auto Settable设置为false。
2.所有InputProviders都继承自ShipInputProviderBase或SceneInputProviderBase,但在实现上有所不同。
3.首次导入插件需将InputBindings.txt的内容粘贴到InputManager.asset的末尾,或者在Project Settings自行输入。
4.要在场景中设置基于InputManager的输入,将以下组件添加到场景中:InputManagerShipInputProvider,InputManagerSceneInputProvider,场景中的任何船只都将接收来自这些提供者的输入。
5.船舶配置
将船对象添加到场景中,并将其Tag标记为Ship(如果不存在,则添加Tag)。标签是唯一必要的,以便换船时可以找到你的船。
将WaterObjectWizard组件添加到船对象中。
将AdvancedShipController组件添加到父对象(包含刚体的对象)。
将重心组件添加到父对象,并将重心调整为靠近船的底部(绿色球体)。如果不这样做,船只很可能会向一侧倾斜。
6.方向舵配置
将方向舵物体指定给Rudders下的Rudder Transform。
将WaterObject组件添加到方向舵,使其也可以与水交互。
将任意类型的Camera添加到船舶对象(作为子对象),并将其标记为ShipCamera。
按下运行并使用V按钮(默认更改船舶按钮)循环到您的飞船。船现在漂浮着,船舵转动。如果方向舵绕着错误的轴旋转,则需要固定模型的旋转。
舵是用来操纵船的。
每个舵都是一个水上物体,通过与水的定期互动来控制船只。
如果视觉方向舵太小,可以使用隐形方向舵。要实现此,请使用WaterObjectWizard对其进行设置,将其调整到所需的比例,最后禁用MeshFilter。这将导致方向舵与水相互作用,但不可见。
7.引擎配置
在Engines下添加一个引擎,并设置所需的值(将鼠标悬停在每个值上以查看其作用)。如果推力位置(Thrust Position)高于水面且未选中高于水面时施加推力(Apply Thrust When Above Water),则不会施加推力。
默认推力位置为[0,0,0]。请确保调整此值以适合您的船。
每艘船可以有多个引擎。
8.推进器
较大的船只通常有船头和船尾推进器(Thruster)来帮助它们机动。当按下正输入时,推进器显示为一个蓝色球体,带有一条指示推力方向的线。
推进器可以在不使用主发动机的情况下用于移动船只。它们可以向船的左舷或右舷施加推力。
9.引擎声
将AudioSource添加到船上,并为其指定一个循环的引擎声音片段。将AudioSSource拖动到某个引擎下的Running Source。
Starting Source和Starting Source也应如此。将Start Duration和Stop Duration调整为略短于开始片段和停止片段的长度。
这篇关于Dynamic Water Physics 2动态水系统使用指南的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!