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

相关文章

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

Linux系统之lvcreate命令使用解读

《Linux系统之lvcreate命令使用解读》lvcreate是LVM中创建逻辑卷的核心命令,支持线性、条带化、RAID、镜像、快照、瘦池和缓存池等多种类型,实现灵活存储资源管理,需注意空间分配、R... 目录lvcreate命令详解一、命令概述二、语法格式三、核心功能四、选项详解五、使用示例1. 创建逻

go动态限制并发数量的实现示例

《go动态限制并发数量的实现示例》本文主要介绍了Go并发控制方法,通过带缓冲通道和第三方库实现并发数量限制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录带有缓冲大小的通道使用第三方库其他控制并发的方法因为go从语言层面支持并发,所以面试百分百会问到

使用Python构建一个高效的日志处理系统

《使用Python构建一个高效的日志处理系统》这篇文章主要为大家详细讲解了如何使用Python开发一个专业的日志分析工具,能够自动化处理、分析和可视化各类日志文件,大幅提升运维效率,需要的可以了解下... 目录环境准备工具功能概述完整代码实现代码深度解析1. 类设计与初始化2. 日志解析核心逻辑3. 文件处

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon

一文详解SpringBoot中控制器的动态注册与卸载

《一文详解SpringBoot中控制器的动态注册与卸载》在项目开发中,通过动态注册和卸载控制器功能,可以根据业务场景和项目需要实现功能的动态增加、删除,提高系统的灵活性和可扩展性,下面我们就来看看Sp... 目录项目结构1. 创建 Spring Boot 启动类2. 创建一个测试控制器3. 创建动态控制器注

Spring WebFlux 与 WebClient 使用指南及最佳实践

《SpringWebFlux与WebClient使用指南及最佳实践》WebClient是SpringWebFlux模块提供的非阻塞、响应式HTTP客户端,基于ProjectReactor实现,... 目录Spring WebFlux 与 WebClient 使用指南1. WebClient 概述2. 核心依

sqlite3 命令行工具使用指南

《sqlite3命令行工具使用指南》本文系统介绍sqlite3CLI的启动、数据库操作、元数据查询、数据导入导出及输出格式化命令,涵盖文件管理、备份恢复、性能统计等实用功能,并说明命令分类、SQL语... 目录一、启动与退出二、数据库与文件操作三、元数据查询四、数据操作与导入导出五、查询输出格式化六、实用功

springboot如何通过http动态操作xxl-job任务

《springboot如何通过http动态操作xxl-job任务》:本文主要介绍springboot如何通过http动态操作xxl-job任务的问题,具有很好的参考价值,希望对大家有所帮助,如有错... 目录springboot通过http动态操作xxl-job任务一、maven依赖二、配置文件三、xxl-