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

相关文章

Spring Gateway动态路由实现方案

《SpringGateway动态路由实现方案》本文主要介绍了SpringGateway动态路由实现方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随... 目录前沿何为路由RouteDefinitionRouteLocator工作流程动态路由实现尾巴前沿S

linux系统中java的cacerts的优先级详解

《linux系统中java的cacerts的优先级详解》文章讲解了Java信任库(cacerts)的优先级与管理方式,指出JDK自带的cacerts默认优先级更高,系统级cacerts需手动同步或显式... 目录Java 默认使用哪个?如何检查当前使用的信任库?简要了解Java的信任库总结了解 Java 信

Python pickle模块的使用指南

《Pythonpickle模块的使用指南》Pythonpickle模块用于对象序列化与反序列化,支持dump/load方法及自定义类,需注意安全风险,建议在受控环境中使用,适用于模型持久化、缓存及跨... 目录python pickle 模块详解基本序列化与反序列化直接序列化为字节流自定义对象的序列化安全注

Python动态处理文件编码的完整指南

《Python动态处理文件编码的完整指南》在Python文件处理的高级应用中,我们经常会遇到需要动态处理文件编码的场景,本文将深入探讨Python中动态处理文件编码的技术,有需要的小伙伴可以了解下... 目录引言一、理解python的文件编码体系1.1 Python的IO层次结构1.2 编码问题的常见场景二

Oracle数据库在windows系统上重启步骤

《Oracle数据库在windows系统上重启步骤》有时候在服务中重启了oracle之后,数据库并不能正常访问,下面:本文主要介绍Oracle数据库在windows系统上重启的相关资料,文中通过代... oracle数据库在Windows上重启的方法我这里是使用oracle自带的sqlplus工具实现的方

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom

基于Python实现自动化邮件发送系统的完整指南

《基于Python实现自动化邮件发送系统的完整指南》在现代软件开发和自动化流程中,邮件通知是一个常见且实用的功能,无论是用于发送报告、告警信息还是用户提醒,通过Python实现自动化的邮件发送功能都能... 目录一、前言:二、项目概述三、配置文件 `.env` 解析四、代码结构解析1. 导入模块2. 加载环

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

Linux查询服务器系统版本号的多种方法

《Linux查询服务器系统版本号的多种方法》在Linux系统管理和维护工作中,了解当前操作系统的版本信息是最基础也是最重要的操作之一,系统版本不仅关系到软件兼容性、安全更新策略,还直接影响到故障排查和... 目录一、引言:系统版本查询的重要性二、基础命令解析:cat /etc/Centos-release详