Dynamic Water Physics 2动态水系统使用指南

2024-03-13 21:28

本文主要是介绍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动态水系统使用指南的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/806245

相关文章

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Python Websockets库的使用指南

《PythonWebsockets库的使用指南》pythonwebsockets库是一个用于创建WebSocket服务器和客户端的Python库,它提供了一种简单的方式来实现实时通信,支持异步和同步... 目录一、WebSocket 简介二、python 的 websockets 库安装三、完整代码示例1.

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Kotlin 作用域函数apply、let、run、with、also使用指南

《Kotlin作用域函数apply、let、run、with、also使用指南》在Kotlin开发中,作用域函数(ScopeFunctions)是一组能让代码更简洁、更函数式的高阶函数,本文将... 目录一、引言:为什么需要作用域函数?二、作用域函China编程数详解1. apply:对象配置的 “流式构建器”最

C#如何动态创建Label,及动态label事件

《C#如何动态创建Label,及动态label事件》:本文主要介绍C#如何动态创建Label,及动态label事件,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#如何动态创建Label,及动态label事件第一点:switch中的生成我们的label事件接着,

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用

Linux系统之dns域名解析全过程

《Linux系统之dns域名解析全过程》:本文主要介绍Linux系统之dns域名解析全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、dns域名解析介绍1、DNS核心概念1.1 区域 zone1.2 记录 record二、DNS服务的配置1、正向解析的配置

Linux系统中配置静态IP地址的详细步骤

《Linux系统中配置静态IP地址的详细步骤》本文详细介绍了在Linux系统中配置静态IP地址的五个步骤,包括打开终端、编辑网络配置文件、配置IP地址、保存并重启网络服务,这对于系统管理员和新手都极具... 目录步骤一:打开终端步骤二:编辑网络配置文件步骤三:配置静态IP地址步骤四:保存并关闭文件步骤五:重