Steam Deck家庭共享创意工坊可用手柄

--

+关注

--

热度

STORMWORKS: BUILD AND RESCUE加入一个你自己设计、创造和指引海上救援服务的世界。 Stormworks: Build and Rescue 是一款精彩纷呈的物理学游戏。带上自己定制设计、基于组块的可编程交通工具,冲入猛烈的海洋风暴。在各种具有挑战性的危机场景中,规划并执行惊心动魄的救援行动。通过 Steam 工作室导出自己精心设计的交通工具和任务,并与其他玩家分享。 Stormworks:Build and Rescue——创造、拯救和释放自己心中深藏的英雄!游戏特色!创意模式创意模式适合那些天马行空,喜欢自由挥洒创意的玩家。在这种模式下,组件可以不限量供应,玩家可以从一开始就搭建结构复杂的大型交通工具。此模式非常适合喜欢在游戏中复制现实交通工具或者搭建自己设计的新奇创意大作的玩家。 职业模式职业模式注重循序渐进的过程和整体的规划。在这种模式下,玩家要“白手起家”,发起自己的搜救行动并逐步扩大范围,直到全面覆盖Stormworks:Build and Rescue的世界地图。一开始,你只拥有数量有限的组件和狭小的建造空间。你必须利用它们来完成各种任务以解锁更多组件并赚取金钱,从而购买更大的建造区域。生存难度选项你现在可以启用创意和职业模式中的生存难度选项。这些选项将带来真正的挑战,因为它们会引入最深入、最高级的游戏特色,为搜救行为增添额外的难度。这些游戏特色包括先进的引擎和燃料技术,交通工具损坏机制以及多种可能导致玩家死亡的伤害机制: 坠落/冲击伤害火灾伤害长时间泡在海水中导致体温过低 机械伤害(转子叶片)水压伤害鲨鱼攻击 交通工具设计通过将组块放入丰富的编辑套件构建交通工具,用自己的设计定制它们,并用强大的游戏内逻辑系统对这些交通工具的行为进行编程。从各种各样的组件中选择,以组装自己的救援直升机、船只、潜艇等等…导航、驾驶、引领乘坐自己新造的交通工具前去大海、陆地或天空。融身一个充满活力的世界,在 15,000 平方公里的海域和群岛中航行。每个任务都是独一无二的,玩家需要确保为自己的工作制作合适的交通工具。 运作自己的海岸警卫队设计特定的交通工具,以应对公海、岛屿设施、远程钻井平台等处的挑战性任务。从水中救起幸存者、灭火、帮助修理石油钻井平台、操作核电站机器等等。使用内容丰富的任务编辑器来创建和分享自己的任务。在职业模式中打开新的位置和组件,或者在创意模式中发掘自己的想象力。 和朋友一起玩在合作多人游戏中加入你的朋友,以操纵多乘员交通工具,或者执行需要仔细规划和协调的复杂任务。精彩纷呈的模拟世界昼夜循环和动态天气系统创造了考验玩家作品的多样环境。从平静的晴日清晨到无情的暴风雨之夜,甚至海啸,大风可把海洋柔和的涟漪变成猛烈的波浪,使用基于物理的流体力学和排量浮力系统影响你的交通工具。
游戏圈
共27条帖子
形质偏离
2026-04-03 07:00:27 · 发布在 「Stormworks: Build and Rescue」
PID简明指南
如何设置和调整用于侧倾稳定座椅的PID的快速演示。设置方法对于PID系统,有四个关键部分: 执行器:这是与外界交互的部件,可以是机械铰链、枢轴、发动机或活塞。在本案例中,我们要防止座椅滚动,所以机械枢轴是明显的选择。无需担心旋转方向。 传感器:为了让系统对环境做出反应,我们需要能对环境进行测量的装置。我们使用倾斜传感器。要测量滚动,需旋转传感器,使其箭头朝向船的侧面。朝向哪一侧无关紧要。确保传感器安装在船的可旋转部件上,而非主体部分。 设定值:这是系统的目标值。我们希望座椅保持完全水平,因此将使用逻辑模块中的【数字】方块。此数值将自动设为零,无需手动更改。 触发信号:用于开启PID控制器。若需控制PID的启停,建议使用开关替代。 切换至逻辑模式,并完成以下步骤: 1. 将PID的【过程变量】连接至倾斜传感器 2. 将PID的【设定值】连接至【数字】门 3. 将PID的【控制输出】连接至机械转轴的【旋转目标】 4. 将PID的【激活】端连接至【触发信号】 PID参数整定 这是大多数人容易困惑的部分,尽管看起来复杂,但其实非常简单。开始前,我们先了解一下PID三个参数的作用。比例环节: 这是衡量我们与目标值偏差程度的指标。如果测量值与目标值非常接近,P的输出就会很小;反之,如果偏差很大,P的输出就会很大。本质上,P=目标值-测量值。 P承担了大部分工作,但并不完美。想象我们正在为直升机设计自动悬停功能。起初直升机高度过低,目标值与当前位置的偏差很大,发动机便会全力运转以提升高度。一旦达到正确高度,PID系统检测到偏差很小就会关闭发动机。糟糕!这时直升机就会开始下坠。最终,当我们下降时,差距变得足够大,油门会增加,我们会回到原来的高度。这导致我们的直升机不断上下跳动,这可不太理想! 微分: 等一下,我们是不是跳过了I?D是衡量我们向目标移动速度的指标。如果我们正快速冲向目标并可能超过它,D会产生一个相反的力。或者,如果我们正偏离目标,它会增强修正力度。 让我们回到直升机的问题。D不关心我们离目标有多远,只关心我们如何向目标移动。所以想象一下,我们的直升机已经到达了高度。如前所述,这会导致P值下降,我们的直升机应该会开始下坠。D值比P值能更快地检测到这种下坠,并迅速修正直升机姿态。现在我们就能以稳定的高度平稳飞行了。 调试步骤: 1. 在编辑器中切换到【选择】工具,点击PID控制器,将所有变量设为零。 2. 从P值开始调试,先将P值设为一个较低的数值,比如0.1。生成载具并观察其反应。 3. 如果系统反应不足(即达到目标的速度太慢),我们需要增大P值。由于数值可能变化很大,我通常会将之前的数值翻倍。 4. 如果系统反应过度(即修正旋转幅度过大,导致向相反方向倾斜),我们需要减小P值。 5. 如果系统朝错误方向移动(即船只发生倾斜时,座椅的倾斜幅度甚至更大。我们需要反转输出,将所有数值设为负数。 完成上述步骤后,座椅就能较好地应对海浪了。但你可能会发现它有点“醉态”,像钟摆一样左右摇摆。 如果系统摆动缓慢,从0.1这样的低值开始增大D值。 如果系统快速振动,则说明D值过高,需要减小。 基本上就是这些了。记住,从P值开始调节,在调整到最佳状态前,保持其他所有变量为零。我会在之后添加更复杂的指南,其中将包含I值和多个PID控制器的内容。
master
2026-04-02 07:00:40 · 发布在 「Stormworks: Build and Rescue」
一些可在代码中使用的实用Lua函数(通用、自动驾驶/导航、3D/向量)
以下是一些你可以复制粘贴到代码中的函数列表,用于执行各种计算,其中大部分是我在制作自动驾驶仪或航点导航系统时个人使用的函数,并包含解释说明。 如何在Lua中使用函数 如果已经熟悉,可以跳过此部分。) 虽然大多数通用函数仍然适用,但在我的《Lua向量指南》中,我现在有一套更简洁紧凑的向量专用函数,适用于3D场景。 免责声明:在本指南中,我有时会在变量名周围使用""。这只是为了强调名称并提高可读性,并不意味着它们是字符串。函数,有时也称为子程序(我认为),是一种将一小段代码分离出来的方式,以便之后可以“调用”并使用它。你无需每次执行特定计算时都手动写出该计算过程,只需在函数标签下编写一次该计算,然后每次想要使用那段代码时直接调用该函数即可。 举个例子: 假设你正在编写一个脚本,该脚本需要在多个地方进行摄氏度到华氏度的转换。atan()函数以这种方式使用时,会输出该函数应有的值。此函数已存在于游戏中。 该函数虽然在功能模块中也可使用,但实际效果可能略有不同(我从未在功能模块中使用过它)。如果你熟悉单位圆,atan2()函数会接收x和y值,并返回指向这些值的角度(以弧度为单位)。注意,0度角指向正右方(x轴方向),角度沿逆时针方向绕原点增加。如果你想用它来确定到航点的方位角,只需将y当作x,x当作y,如下所示: atan2(航点X, 航点Y) (确保这些输入是相对于你的位置,而非仅地图坐标) 函数norm(x) 返回 x - pi2 * math.floor(x / pi2) 结束 函数norm2(x) 返回 x - pi2 - pi2 * math.floor((x-π)/π2) end --或者... function norm(x) return x%π2 end function norm2(x) return (x-π)%π2-π end 这些函数norm()和norm2()接收一个角度(以弧度为单位)并返回简化后的相同角度(以弧度为单位)。norm()将输出限制在0到π2之间,norm2()将输出限制在-π到+π之间。 详细说明: 想象纸上有一个圆。从圆心向圆的上边缘画一条线,这条线是垂直的。这是0度的参考线。现在想象第二条线,同样从圆心到边缘,但可以像时钟的指针一样绕着圆旋转。如果你旋转这条线使其正对着右边,你可以说它处于+90度的位置。如果你继续旋转它,使其正面向下,此时可以说它处于+180度的位置。如果你保持同一方向继续旋转,直到它正面向前,此时可以说它处于+360度的位置。现在,如果你将其旋转至正面向右,就是在360度的基础上再增加90度,得到+450度。问题在于,当你进行某些计算时,例如求两个角度的差值,你可能希望得到的角度是+90度,而非+450度。 这两个函数可以将带有额外360度的+450度转换为+90度,方法是去除多余的360度,只不过这里的输入和输出单位是弧度而非角度。norm()和norm2()的区别在于角度被限制的范围。norm()函数会将输入角度限制在0到+2π(完整的360度)之间,这对于需要向飞行员或导航员提供信息的显示装置来说非常有用。norm2()函数则会将输入角度限制在-π到+π(-180到180度)之间。该函数与atan2()搭配使用时非常实用,因为它能让你轻松计算出两个角度之间的实际差值,即便其中一个或两个角度都偏移了完整的旋转量(π2的倍数)。示例:out = norm2(atan2(wpX-gpsX,wpY-gpsY)-heading)。由于角度加减的特性,这将返回指向航点的方位角与载具当前航向之间的真实差值。这是自动驾驶系统中最重要的部分。你也可以使用norm2()函数来获取角度的变化率,这对于指南针非常有用。示例: dcomp = norm2(comp-comp1) comp1=comp dcomp将是每 tick 的弧度变化率,如果你需要,可以通过一些简单的数学运算将其转换为其他单位。(确保在 onTick() 外部将 comp1 定义为一个数字,例如写成 comp1=0,否则游戏将无法处理 comp-comp1,因为此时 comp1 实际上还不存在) 只要稍作创意,你还可以创建航线跟随自动驾驶仪,以及几乎任何你可能需要的航点系统。 一大段旧文本(旧的 3D/坐标变换/多边形相关内容) (缩进不是必需的) function roll(ltlt,ftlt,utlt) local roll=math.asin(math.sin(ltlt)/math.此函数接收三个倾斜传感器轴(分别朝向左侧、前方和上方)的输入,并输出载具的真实横滚角度。这对于任何涉及载具位置或方向的程序(如雷达或人工地平仪)都极为重要。幸运的是,一个朝前的简单倾斜传感器就足以获取俯仰角度。与其他所有函数一样,此函数的返回值以弧度为单位,且输入也需为弧度(只需将倾斜传感器的值乘以pi2即可)。如果您使用的倾斜传感器朝向右侧而非左侧(比如物理传感器),只需将该倾斜输入设为负值,即使用roll(-rtlt,ftlt,utlt)而非roll(ltlt,ftlt,utlt)。如果没有朝上倾斜传感器(咳咳,物理传感器),并且你不打算让设备翻转(比如雷达等设备),那么你可以直接将utlt输入设为1。(或者使用即将推出的rotmat2d()函数,结合欧拉角x、y、z手动计算方向) 函数calcutlt(ltlt,ftlt) 返回math.asin(math.sqrt(1-math.sin(ltlt)^2-math.sin(ftlt)^2)) 结束 说实话,这不一定非得是个函数,但我想把它包含进来,因为我认为在节省控制器输入和输出空间时它会很有用。这个函数将根据朝左和朝前倾斜传感器的值来计算朝上倾斜传感器的值。与之前的函数不同,输入的符号并不重要,因此如果需要,你可以使用右倾斜或后倾斜来替代左倾斜或前倾斜。 函数 rot(x,y,z,a,e,r) qa=atan(x,y)+r qd=math.sqrt(x^2+y^2) x=qd*math.sin(qa) y=qd*math.cos(qa) qa=atan(y,z)+e qd=math.sqrt(y^2+z^2) y=qd*math.sin(qa) z=qd*math.cos(qa) qa=atan(x,z)+a qd=math.sqrt(x^2+z^2) x=qd*math.sin(qa) z=qd*math.cos(qa) return x,y,z end 函数 arot(x,y,z,a,e,r) qa=atan(x,z)-a qd=math.sqrt(x^2+z^2) x=qd*math.sin(qa) z=qd*math.cos(qa) qa=atan(y,z)-e qd=math.sqrt(y^2+z^2) y=qd*math.sin(qa) z=qd*math.cos(qa) qa=atan(x,y)-r qd=math.sqrt(x^2+y^2) x=qd*math.sin(qa) y=qd*math.cos(qa) return x,y,z end 这两个复杂的函数本质上是使用缓慢且不美观的角度和三角函数进行手动矩阵旋转。输入空间中某点的x、y、z坐标,然后输入你想要旋转该点的角度(以弧度为单位)。 a是方位角,e是仰角,r是横滚角(我不知道对应的希腊字母是什么)。理解这些角度作用方式的最佳方法是,想象空间中有一个点在你前方。想象这个点略偏离你的视线中心线,位于左侧且偏上的位置。你的视线中心线是点坐标旋转的基准。“r”会使点围绕视线中心线旋转,你可以想象这个点绕着你的视线中心旋转。“a”会使点沿水平面左右平移,你可以想象这个点绕着你的头部水平旋转。“e”会使点上下平移。你可以想象一个点在上下移动,向上越过头顶,向下到脚下。记住这些操作的执行顺序很重要,因为“r”和“e”旋转是以你的视线中心线为基准进行旋转的。这就是为什么会有rot()和arot()两个函数。 rot()会根据旋转直接旋转一个点。arot()会撤销这些旋转。两者在创建雷达系统时都非常有用,尤其是当你的雷达在波浪中摇晃颠簸时。rot()和arot()可以让你撤销或重做船只可能经历的旋转,返回雷达轨迹相对于地图而非船只的坐标。 天啊,我真同情那些真的会读这些内容的人。你可以在每次需要进行转换时手动写出该转换公式(x*9/5+32),这会占用大量宝贵空间,并且可能使代码更难阅读;或者你也可以定义一个函数,该函数接收输入并执行计算后输出结果。 ——假设这是你正在编写的脚本的一部分。通常情况下,你不会想为这样简单的计算使用函数,但为了举例说明,我们还是会这样做。 摄氏度 = input.getNumber(1) 华氏度 = 摄氏度*9/5+32 output.别再用rot和arot了,试试这个函数: rotmat2d(x,y,r) return x*math.cos(r)-y*math.sin(r), x*math.sin(r)+y*math.cos(r) end 这是rot()和arot()更精简的版本,但它处理的是2D而非3D。它同样基于矩阵推导,因此理论上效率更高。和常见的数学函数一样,x和y代表从原点出发的向量的x和y坐标,r是向量旋转的弧度角。该函数返回旋转后向量的x、y坐标。+r会使向量逆时针旋转,-r会使向量顺时针旋转。这些在演示中效果显著。 如果你只有物理/天文传感器的欧拉角输出作为方向信息,却需要横滚角或俯仰角这类角度数据,可以参考这份指南。其中有一节专门介绍如何计算这些数值。它还包含一个章节,展示如何使用rotmat2d()和欧拉角输出实现与rot()及arot()相同的功能,且能减少字符使用量。 如果希望通过仅计算一次三角函数来快速实现全局坐标到局部坐标的转换,请查看【向量】章节。 多边形专用:(过时) function inside(n) t={} for i=1,3 do t[i]=atan2(n[i].x,n[i].z) end return sgn(norm(t[1]-t[2]))==sgn(norm(t[2]-t[3])) and sgn(norm(t[2]-t[3]))==sgn(norm(t[3]-t[1])) end --或: function inside(t) return sgn(cross(t[1],t[2]).z*cross(t[2],t[3]).z)==sgn(cross(t[2],t[3]).z*cross(t[3],t[1]).z) and sgn(cross(t[3],t[1]).z*cross(t[1],t[2]).z)==sgn(cross(t[2],t[3]).z*cross(t[3],t[1]).z) end 此函数仅适用于多边形。输入“n”必须是一个表格,格式为{{x=,y=,z=},{x=,y=,z=},{x=,y=,z=}},其中每个子表格代表多边形的一个顶点。当你直接站在由这些坐标描述的三角形上方时,inside()将返回true。(坐标必须相对于玩家/摄像机位置) 函数height(n) n1=n[3].z-n[1].z n2=n[3].x-n[1].x n3=n[3].y-n[1].y n4=n[2].z-n[1].z A=((n[2].y-n[1].y)*n1-n3*n4)/((n[2].x-n[1].x)*n1-n2*n4) B=(n3-A*n2)/n1 h=n[1].y-A*n[1].x-B*n[1].z return A,B,h end --或者: function height(t,x,y) local n=cross(vadd(t[2],t[1],-1),vadd(t[3],t[1],-1)) return -((x-t[1].x)*n.x+(y-t[1].y)*n.y)/n.z+t[1].z end 与inside()类似,height()采用相同的输入数据结构。height()函数会计算描述多边形的函数,然后计算X和Y梯度以及你在三角形上方的高度。第二个版本会接收一个三角形t以及x和y坐标,然后返回从点(x,y,0)到其前方三角形上对应点的距离。这在3D空间中的显示和平台跳跃方面非常有用,如果你足够有勇气,或许也可用于光线追踪,但除此之外几乎毫无用处。 向量(进一步的坐标变换) 本节中的所有函数均假设向量量的形式为{x=,y=,z=}。幸运的是,这些运算是通用的,因此每个字母在现实世界中代表哪个轴并不重要。 function mag(v) return math.sqrt(v.x^2+v.y^2+v.z^2) end function scal(v,s) return {x=v.x*s,y=v.y*s,z=v.无法识别内容,已删除。很长一段时间以来,我一直误以为函数无法返回表格。现在我知道这是错误的,以下是一些最有用的向量运算。 function norv(v) return scal(v,1/mag(v)) end function proj(a,b) return scal(norv(b),dot(a,norv(b))) end --或者: function proj(a,b) return scal(b,dot(a,b)/mag(b)^2) endmag(v) 返回向量v的模长(||v||) scal(v,s) 返回向量v与标量s的乘积(v * s) vadd(a,b) 返回向量a与向量b的和(a + b) dot(a,b) 返回向量a与向量b的点积(a * b) crs(a,b) 返回向量a与向量b的叉积(a x b) norv(v) 返回向量v的单位向量(v / ||v||) proj(a,b) 返回向量a在向量b方向上的投影分量(b * (a * b) / ||b||²) 向量转换:localv={x=dot(globalv,locali),y=dot(globalv,localj),z=dot(globalv,localk)} 其中local i、j、k是旋转参考物体的三个基单位向量,globalv是表示某点全局坐标的向量。localv将是该点相对于旋转物体的局部坐标。 这里使用点积而非投影函数,但数学原理完全相同。proj 就是一个点积,仅按 v1 的长度进行缩放,再乘以 v2 方向上的单位向量。这会产生一个向量输出。由于我们只关心每个单位向量的大小(正负),因此可以跳过乘以 v2/||v2|| 这一步,直接使用点积。单位向量的大小始终为 1,所以无需按 v1 的长度进行缩放,因为 v2 的长度始终为 1。 函数 megaproj(v,i,j,k) 返回 {x=dot(v,i),y=dot(v,j),z=dot(v,k)} 结束 函数 megascal(v,i,j,k) 返回 vadd(vadd(scal(i,v.x),scal(j,v.y)),scal(k,v.z)) 结束 megaproj 会将世界坐标投影到由局部单位向量 i、j 和 k 定义的局部坐标上。megascal函数则会执行相反的操作,它利用局部的i、j、k向量将点的局部坐标扩展为全局坐标。如果已经通过三个单位向量定义了一个变换,那么这些函数会非常实用。 这些函数始终互为逆运算,这意味着对于任意三个单位向量(前提是任意两个都不相同)所定义的变换,都可以通过另一个函数进行反转和“解码”。这意味着它们的使用方式可能类似于XML中的数字列表,但我暂时想不到什么实际用途。 事实证明,我在这里意外地推导出了一个旋转矩阵。如果感兴趣,可以查看我的欧拉角指南中的矩阵正切部分。此函数将根据物理传感器的欧拉角生成矩阵i、j和k基向量: function ijkfromeuler(ex,ey,ez) cx=math.cos(ex) sx=math.sin(ex) cy=math.cos(ey) sy=math.sin(ey) cz=math.cos(ez) sz=math.sin(ez) i={x=cy*cz,y=cy*sz,z=-sy} j={x=sx*sy*cz-cx*sz,y=sx*sy*sz+cx*cz,z=sx*cy} k={x=cx*sy*cz+sx*sz,y=cx*sy*sz-sx*cz,z=cx*cy} return i,j,k end --或者... function ijkfromeuler(ex,ey,ez) local cx,sx,cy,sy,cz,sz=math.cos(ex),math.sin(ex),math.cos(ey),math.sin(ey),math.cos(ez)math.sin(ez) local i,j,k={x=cy*cz,y=cy*sz,z=-sy},{x=sx*sy*cz-cx*sz,y=sx*sy*sz+cx*cz,z=sx*cy},{x=cx*sy*cz+sx*sz,y=cx*sy*sz-sx*cz,z=cx*cy} return i,j,k end 这些向量可用于megaproj()和megascal()函数来执行或反转旋转。setNumber(1,华氏度) --我们的函数可能看起来像这样: function ctof(x) return x*9/5+32 end --函数名称可以是任意的,在这个例子中是“ctof”,但通常来说,最好让函数名称与Lua提供的标准库函数有明显区别。 “return”到底有什么作用?当你要为函数提供输出时,你可以写“return x”,其中x可以是数字或布尔值(真/假)。之后在代码中调用该函数时,你可以通过将变量赋值为该函数来获取这个输出,例如: 华氏度 = ctof(摄氏度) 此时“华氏度”的值就等于函数内部的x*9/5+32,不过由于我们在括号中输入的是“摄氏度”的值,所以“华氏度”等于摄氏度*9/5+32。本质上,你将一个值输入到函数中,函数就会输出结果。 不过,函数并不局限于只有一个输入和一个输出。 ——这是一个接收两个输入(x和y)并输出两个结果的函数,一个结果是x除以y的商,另一个是用于检测是否除以零的布尔值(开/关)。 函数 divide(x,y) 如果 y==0 那么 返回 0, true 否则 返回 x/y, false 结束 ——调用此函数时,不能只将一个变量赋值给函数,而必须将两个变量赋值给该函数。赋值方式与函数输出两个结果的方式相同: a=1 b=2 result, divideByZero = divide(a,b) ——在这种情况下,“result”将等于a/b,“divideByZero”将等于false。注意输入和输出的顺序决定了每个值的结果。如果我写成divideByZero,result = divide(a,b),那么“divideByZero”将等于a/b,“result”将等于false。函数括号中的输入也是如此。 替代语法:有时你可能会看到函数以这种形式定义: functionName = function (parameters) --执行操作 return something end 这与传统的function functionName()完全相同,只是重新排列了形式。这在Lua中是允许的,因为Lua是所谓的“面向对象”语言,即几乎所有事物都被视为可以移动和操作的对象或变量。另一种定义函数的语法让函数看起来更像是一个特殊的变量,它可以执行任务并根据输入参数发生变化。 这也意味着,由于函数本质上是对象,它们可以被用作其他函数的参数。如果你做一些研究,可能会发现这样的函数写法: table.sort(table, function (a,b) return a>b end) 这看起来确实令人困惑和害怕,但要记住,函数本身可以用作参数。在这种情况下,这种语法是更合适的,因为在预定义的table.sort函数内部,该函数的参数(a,b)会像其他任何参数一样被赋予自己的局部名称。唯一的区别在于,该参数不是带有某个值的变量,而是一个函数。 不过,对于本指南而言,那些替代语法并不重要,所有内容都以常规形式编写。说实话,我不确定哪种形式更常规,哪种是“语法糖”,但我喜欢第一种方式,所以会一直使用它。 在Lua中,缩进和return语句并非必需,但它们能让代码更易于阅读。 这应该是在使用本指南其余部分中的函数之前,你需要了解的所有内容。 一大段文字(通用和自动驾驶使用的函数) (缩进不是必需的) pi=math.pi pi2=pi*2 这不仅方便使用,而且是许多函数所必需的。它节省了空间,并使三角函数更易于阅读。本指南中的所有角度测量单位均为弧度,而非度。当然,如果有人确实使用梯度单位,也可采用。 函数sgn(x) 如果x<0,则 返回-1 否则 返回1 结束 或者... 函数sgn(x) 返回x<0且-1或1 结束 此函数与你在微控制器功能框中可能使用的sgn()函数相同。当输入大于或等于0时,它返回+1;当输入小于0时,它返回-1。 第二个版本的sgn()函数之所以能工作,是因为lua对and和or的处理方式。如果and的第一个参数为false或nil,它将返回第一个参数的值,否则返回第二个参数的值。or的工作方式类似,只有当第一个参数的值为false或nil时,它才返回第二个参数的值,否则返回第一个参数的值。这种if语句类型的逻辑可以通过在满足另一个条件时避免执行代价高昂的计算来优化某些函数,与if-then-else语句的作用相同。 函数clamp(x,l,u) 返回math.min(math.max(x,l),u) 结束 与sgn()函数类似,这是微控制器中函数盒里可用的一个函数。它将值x“限制”在l和u之间,其中l代表下限值,u代表上限值。 函数len(x,y) 返回math.sqrt(x^2+y^2) 结束 同样可在函数盒中找到。这其实就是伪装后的勾股定理。 函数atan2(dy,dx) 如果dx>0则 返回math.atan(dy/dx) 否则如果dx<0则 返回math.atan(dy/dx)+pi*sgn(dy) 否则 返回0 结束 结束 --编辑:我真傻,显然如果你使用默认的math.
Mie
2026-04-01 10:00:26 · 发布在 「Stormworks: Build and Rescue」
《风暴工程:建造与救援》非官方教程
本教程将引导你了解在《风暴工程:建造与救援》中制作一艘能正常运行的入门级船只所需的全部知识。 本指南将以分步流程为主,教你制作一艘简单但用途广泛的入门级船只。不过,你完全可以在跟随教程的同时,使用类似组件设计属于自己的船只。这艘船或许称不上艺术品,但希望它能成为你迈向更有趣创作的第一步。本指南涵盖以下内容: 1. 工作台工具及其用途 2. 建造可漂浮的船体 3. 设计带有可用仪表和控制器的驾驶舱 4. 建造基础柴油发动机 5. 变速箱 6. 电力系统 7. 逻辑与数据连接 8. 微控制器 9. 驾驶和操控你的第一艘船 10. 模块化发动机更新警告 随着几周前模块化发动机的发布,即便是简单发动机的发动机/变速箱机制也发生了变化。我尚未有时间更新本指南以反映这些变化。尽管如此,指南中的绝大部分内容仍然适用,对新玩家来说依然有用。由于我正在暂停游玩该游戏,短期内不会有任何更新,但一旦我回归,我会尝试进行相关修改。0 更新 我于2019年6月16日完成了本指南的第一版。《风暴工程:建造与救援》于2020年9月18日正式发布1.0版本,而本指南早已需要重写。我从头开始重写了整个指南,船只设计也基本从零开始重新进行(实际上没什么大的改动),并且加入了GIF动图,相信现在会更容易理解。如果你是《风暴工程:建造与救援》的新手,并且觉得各种YouTube教程要么解释不足,要么过于过时,那么你来对地方了。 现有教程 随着1.0版本的发布,现在已有由YouTube用户Mrnjersey制作的官方视频教程。视频教程可通过点击主菜单或暂停菜单中的【视频教程】获取。对于部分玩家而言,这些相对简短的视频足以帮助他们开始创建载具,但本Steam文字指南旨在更深入地详细解释游戏系统和菜单的运作方式。这是本指南的第二版,包含了比之前更多的截图,且解释也更为全面。 设置游戏 如果这是你首次游玩,你可能希望查看上述部分的教程,不过我会在此对所有涵盖内容进行更详细的讲解。游戏内虽包含教程,但主要讲解基础玩法,还会提供一艘相当复杂的船只,新手可能难以拆解学习。因此,我们将从零开始打造自己的船只。从主菜单选择【新建游戏】(中间带加号的圆形图标)。之后会出现一个包含少量选项的界面。如果现在点击【确认】,将会启动默认教程开启的标准生涯模式,这并非我们想要的。 世界种子:世界种子是输入计算机的一个数字,计算机会根据该数字来确定各个岛屿的位置,从而为每个游戏存档生成一个相对独特的地图。大多数时候,你无需触碰此选项,除非你希望生成与之前或他人使用过的相同游戏世界。 游戏模式 《风暴工程:建造与救援》包含天气效果,这可能会增加建造和驾驶你的第一艘船的难度,此外还有昼夜循环,可能会导致视线受阻。本指南假设你将启用创意菜单进行游戏。遗憾的是,这意味着我们无法进行标准的生涯模式游戏。如果你不介意无法控制时间和天气,可以选择跳过此步骤。 从游戏模式下拉菜单中,选择【自定义】 选择基地 在游戏模式下拉菜单下方,有一个带有所选起始基地缩略图及其名称的大按钮。由于我们选择了自定义游戏,这里会默认设置为【创意基地】。我们需要点击这个按钮并选择【起始基地】,这是默认生涯游戏开始的地方。它应该是左上角的第一个选项,显示“设有小型码头”。 启用插件(并禁用默认教程) 点击【启用插件】按钮,会显示默认生成的任务列表。这里的“任务”包括各种岛屿上的燃油泵、电梯/升降机等。有时你可以在创意工坊下载特殊的自定义加油站和其他建筑,但由于我们运行的是默认游戏,所以需要确保所有选项都处于勾选状态。不过,在列表底部是【默认教程】,我们要确保它没有被勾选,然后点击【返回】。进入游戏 当你按自己的喜好设置好新游戏后,点击确认,会进入加载界面。之后你可以选择角色外观,这纯粹是装饰性的,如果你想更改,之后可以在初始小屋的衣柜处进行调整。满意后点击完成。如果你选择了初始基地作为起始基地,你会在一个小屋内生成。 自定义菜单一旦到了室外,你可能会注意到天气可能不太好,而且时间在稳定流逝。如果你创建了自定义游戏,你可以暂时消除这些问题,否则请跳至下一部分。打开暂停菜单(按Escape键),然后点击【自定义菜单】(图标为上半部分白色、下半部分深色的圆形,上半部分有太阳图案,下半部分有月亮图案)。或者,你也可以在【设置】►【控制】►【杂项】►【自定义菜单】中重新绑定一个按键,以便快速访问该菜单。 当创意菜单打开后,会有很多可调整的选项,但我们只关注最左侧的部分。将【时间覆盖】设为【开启】,然后拖动【当前时间】的滑块,将时间调整到大约中午12点左右(我通常设为11:30左右)。这将阻止时间流逝,从而使白天永驻。接下来,将【覆盖天气】设为开启,然后把【雾】、【风】和【雨】的滑块全部拉到最左侧或0%。现在就是无限美好的白天,你可以开始打造你的第一辆载具了!之后我们可以尝试把风力调到最大,看看载具在恶劣天气下的表现,或者切换到夜晚来测试灯光。工作台 现在只需沿着小路前往那间大型绿色棚屋,我们将在那里建造船只。进入大门后,右侧机库内应该有一个蓝色的工作台。与工作台互动即可进入建造模式。如果机库中已有载具,该载具将进入编辑模式,你可以对其进行删除或修改。 工作台界面 工作台界面(或简称建造模式界面)包含许多按钮和一些不显眼的功能。本节将详细介绍用户界面中的所有内容,从左上角开始按顺时针方向依次讲解。大部分功能不言自明,但我还是会对它们进行说明。如果你已经熟悉这个界面,那么可以直接跳转到下一部分,我们将开始建造船体。顶部面板 用户界面的顶部面板左侧用于保存/加载载具,右侧则包含多种专用工具。 第一个按钮用于退出工作台,在战役模式中会退还载具组件的费用以便后续使用。之后再次进入工作台时,除非创建或加载了新载具,否则会加载该载具供再次编辑。生成按钮会生成当前载具,将鼠标悬停在该按钮上会显示载具的重量/质量以及总成本。 新建载具按钮会清除所有内容,并生成一个带有单个方块的新载具供开始建造。加载按钮用于访问您已保存的载具以及任何已下载的创意工坊作品。保存按钮用于在建造载具时避免进度丢失。经常保存!创意工坊允许你将载具上传至Steam创意工坊,供其他玩家下载和使用。 两个圆形箭头按钮用于撤销/重做操作。这些按钮也有快捷键,正如你所期望的,CTRL+Z用于撤销,CTRL+Y用于重做。 接下来的8个按钮中,大部分将在后面详细介绍,但在这里你可以找到删除和涂装工具。至于选择、移动、逻辑、合并、选择网格和微控制器编辑器,目前可以先不用管它们。值得注意的是,删除工具设有快捷键,按X键即可切换。 右侧面板主要是用于视觉辅助以及相机/对称控制的工具。第一个按钮用于切换所有三个轴的对称工具,此外还有一个【禁用】按钮和一个【显示/隐藏移动控件】按钮,分别用于禁用对称平面和移动对称平面。设置好对称方式后,你可以点击该按钮隐藏面板,直到需要时再重新调出。 剖面平面工具与对称工具类似,不过它用于查看载具的剖面/横截面视图。 相机部分有一个【重置相机】按钮,可将相机恢复到默认视图,还有用于在【轨道模式】和【自由模式】之间切换的选项。大多数人建议将其切换为自由模式,这样你就可以使用常规移动键来移动相机。 质心会在载具上显示一个紫色方框,表示载具总重量/质量的集中点。这对于平衡载具很有用,可防止其在水中向一侧倾斜或原地打转而无法直线行驶。 方向箭头会为各种特殊方块显示蓝色箭头,指示它们的朝向,同时也会显示涂装方块的蓝色边框。因此,如果你使用涂装方块进行涂装,可以关闭此功能以便更清晰地查看涂装效果。通常建议启用此功能。 旋转标签是放置方块前用于指示旋转方向的视觉标记。最终你可能会记住哪个按键对应哪种旋转方向,届时就可以关闭此功能。可通过P热键切换这些标签的显示。 网格线会在方块周围显示轮廓,有助于方块的放置。我并不喜欢它们,但为了本教程的目的,我还是启用了这些功能。 测量功能会在你以直线或平面放置方块时显示所覆盖区域的尺寸。每个方块为0.25米。第一个数字是方块数量,第二个数字是实际测量值。放置方块时,你点击的点会显示彩色线条,以表明哪个测量值对应哪个轴。 世界视图会显示工作台区域在实际游戏世界中的样子。载具会完全按照这里显示的样子生成。 编辑器警告是一项调试功能,当某些组件缺少连接或电力等时,它会发出警告。因此,如果你的载具中某个部分无法正常工作,开启此功能来检查是否有缺失的内容可能是个好主意。请注意,这也可能会显示误报,因此不要将其建议视为绝对正确。 底部面板 此部分大部分是方块和组件的快捷栏,可通过按数字键或直接点击来访问。快捷栏右侧是物品栏界面,也可通过按Tab键打开。在生涯模式中,公司当前资金也会显示在右侧。 空白区域 底部面板与左右两侧面板之间有一些空白区域。如果启用了测量功能,右侧会显示测量数据。左侧是上下文提示,这些提示通常容易被忽略,我强烈建议在使用新工具或按住修饰键时查看此处。左侧面板 这是一个上下文敏感的工具栏,但最常见的是显示一组默认颜色样本,用于为你的载具上色。底部的大圆圈是你访问自定义颜色和RGB滑块的地方(不过没有十六进制或HSV输入!开发者请添加)。当选择不同工具时,此面板会替换为其他选项,特别是逻辑工具会显示各种不同的逻辑类型,选择网格会显示剪切/粘贴、调整大小选项、插入子载具等。选择涂装工具还会解锁顶部的涂装模式按钮。 边界框和灰色大箭头 视图中间有一系列虚线,显示你可以制作的载具的最大尺寸。每个工作台都有其自己的最大尺寸。如果你使用的是初始基地,那么这是最小的工作台区域之一。底部始终会有一个灰色大箭头,指示载具前端应朝向的方向。 建造(防水)船体 现在是时候开始实际建造了。首次打开工作台时,屏幕中央应该有一个白色立方体,如果启用了质心功能,立方体内会有一个紫色方框。如果显示的不是单个白色立方体,请点击左上角的【新建载具】按钮。我们先从建造船体甲板开始。确保第一个快捷栏插槽中已选中方块,并从对称菜单中启用X平面对称(工作台区域应出现红色网格)。点击并拖动现有方块的侧面来开始建造方块平面,注意相同的方块会自动在红色对称网格的另一侧镜像生成。按住Shift键通常会改变方块的建造方向,但这在很大程度上也取决于当前的相机角度。启用测量功能也是个好主意,这样我们可以检查甲板的尺寸。我们需要一个宽19方块、长21方块的甲板。获取正确尺寸的一种方法是从起始方块侧面延伸9个方块并向前延伸9个方块(包含起始方块共10个方块)来建造一个平面。这样你会得到一个10×1×19的平面。然后从这整个结构的后方再延伸11个方块建造一个平面,填充所有空隙后,最终甲板尺寸将为21×1×19。此方法已在GIF中演示。 虽然你可以通过数每个单独的方块来确认尺寸是否正确,但你也可以通过点击并拖动一个方块平面覆盖现有方块,将其用作测量工具。如果操作正确,右下角的红色数字应为19,蓝色数字应为21。你可以按X键或选择擦除工具并点击拖动来移除多余的方块,使用CTRL+Z和CTRL+Y进行撤销和重做操作。当你开始点击并拖动时,可以看到一个关于不同颜色分别代表哪个轴的小参考。如果您在让方块以正确方向绘制时遇到困难,请尝试移动相机或按住Shift键来改变平面方向。您可以按住右键并移动鼠标来旋转相机,中键可以平移相机,或者如果使用自由相机,可以使用标准移动键。 一旦甲板尺寸正确,请查看工坊区域底部,找到大型灰色箭头。该箭头指向船只的前方。在船只前中央添加一组垂直的3*3方块,我们稍后将用它来建造舵轮,但最好现在就添加。 在仍启用对称模式的情况下,将船体两侧向下延伸2个方块,使侧面(包括甲板部分)高度为3个方块。现在选择【楔形块】,它应该位于快捷栏的第二个槽位。楔形块自然并非所有侧面都对称,因此你需要使用J、K和L键来旋转它至合适位置。(也可以使用U、I和O镜像键,但操作起来难度较大)。按P键可切换旋转标签的显示或隐藏。将相机移动到船下方靠近中心的位置,并朝向船头或船尾,旋转楔形块使其向内倾斜,以形成船体的圆弧形部分,然后点击并将其斜向下拖动3个方块的距离。使用橡皮擦工具删除它生成的多余方块。如果按住Shift键仍难以用这种方式创建这3个方块,可能是相机位置不对。这种情况下,你可以先创建一个由普通方块组成的“阶梯”,然后在上面进行建造。接下来,你可以点击并拖动楔形方块,使其沿着船体排列成线,从而赋予船体一种略带弧度的外观。这些GIF展示了两种建造斜坡起点的方法(右侧的GIF经过大幅编辑/加速处理)。之后,你应该可以从楔形块的侧边点击并拖动,一直延伸到船的侧面。 下一个GIF总结了我们刚刚建造的内容。斯特恩移动到船尾,然后建造2个楔形方块,使船尾略微弯曲。用普通方块连接整个宽度,并填补甲板上的缺口。向下额外建造一层方块,然后从两侧各删除一个,这样在底部添加最后两行楔形方块时就能对齐。制作拐角时,我们将使用位于快捷栏第三格的金字塔方块。你会发现,当正确旋转后,它能与我们之前在侧面制作的3格高斜坡完美对齐。只需点击并拖动拐角区域,它就会自动填充所有部分。这可能会生成一些多余的方块,需要按需移除。如果遗漏了某个方块,可以尝试使用倒金字塔方块来填补,或者删除其中一个金字塔方块后重新尝试。记得尝试按住Shift键来改变线条方向。最后,使用普通方块填充船的底部(我忘记做这一步了,所以下图中的底部仍是空的)。 船头:如果你还没有在前端建造3×3的垂直方块,现在应该这样做。将甲板向前延伸2个方块,然后使用楔形方块向前斜向建造,直到船头甲板达到所需位置。删除多余的方块,然后在前端用标准方块填补最后一块。移除刚才建造的线条内侧的楔形方块,接着点击并拖动一片方块来填满整个区域。如果操作正确,系统会自动只填充甲板区域,不会在外侧建造多余的方块。从这里移动镜头,查看我们刚刚建造的部件的底部。拿起你的金字塔方块,然后从船的底部/侧面点击并拖向船头方向,就像我们在上方甲板所做的那样。移除多余的方块,然后用楔形方块填充最前端,点击并向上拖动,形成从龙骨到甲板的斜坡。现在开始从楔形方块向侧面点击并拖动,填补任何缺失的倒金字塔方块或普通方块。最后,像处理船头甲板那样,点击并拖动一片方块来密封底部。测试是否漏水 完成上述所有步骤后,你应该拥有一个完全密封的船体,并且了解了通过点击和拖动基本形状方块来加快建造速度的各种方法。保存你的载具,然后看看它是否能漂浮。点击左上角的【生成】,载具就会在船坞中生成。载具应该能在水中平稳地浮起。如果它看起来像半沉状态,那就意味着某处存在漏洞,即使是你认为水无法进入的顶部也可能有。除少数例外情况外,在《风暴工程:建造与救援》中,物理计算要求所有部分都必须用方块完全密封,才能算作提供浮力的气室,否则游戏会认为整个载具处于“外部”,没有充满空气。驾驶舱与外部结构 恭喜,你现在已经有了一个勉强能浮起来的船形物体。在添加更复杂的组件之前,我们先来处理外部结构并完成它。还记得我让你搭建的那个垂直3×3的方块组吗?在那个方块组的侧面,朝船的后侧/侧面搭建2高3长的楔形方块,同时移除内部的楔形方块。在其上方再搭建第三排,但这一排要保留内部的楔形方块。接下来,从这些斜坡朝船尾方向搭建5长3高的方块。这将是驾驶舱的起点。我把顶部角落的最后一个方块改成了向下的楔形,让它的形状稍微更有趣一些。现在从前方三格高区域的中间部分开始,向两侧的第一个普通方块填充,以制作一个仪表盘,然后填充其下方的单行方块,这样我们就无法看到下方了。让我们添加一个座椅来操控船只。按TAB键或点击快捷栏右侧的物品栏按钮打开物品栏。会弹出一个菜单,里面有海量的建造材料。现在我们只需要其中一个部件,所以在顶部的搜索栏输入“Seat”来缩小范围,然后选择紧凑型驾驶座或驾驶员座椅,它们功能相同但外观不同。就我们的目的而言,我更喜欢驾驶员座椅,但你需要删除仪表板中间的2个方块,以容纳方向盘和转向柱。 作为可选步骤,你可以删除我们刚建造的所有部件下方的甲板方块,只要不造成漏洞即可。这些方块只会给船只增加重量,却带来相对较少的收益。你可能需要将相机移动到船内来完成此操作,或者使用剖面工具从底部观察船只。 目前看起来不错,现在我们来添加挡风玻璃。在物品栏中搜索或找到大型转角窗,然后将其放置在我们之前建造的3格长斜坡上。放置好这些之后,我们就可以在正中央直接添加一块大型斜角窗了。你需要将光标对准其中一个转角窗的内侧边缘,才能将其放置在正确的位置,因为如果我们尝试直接将大型窗户放置在普通方块上,窗户的边缘会从中心凸出来。同时要确保以正确的方向旋转它,使其与转角窗户看起来齐平。 乘客与货物区域 在舵的形状确定后,让我们开始建造其余的外部结构。从船尾向上搭建2个方块来制作栏杆,然后结合使用方块和楔形块,将栏杆沿着侧面环绕,直至与驾驶舱的末端对齐。删除船侧面3个宽的方块组,然后用梯子方块替换它们,这样人们就能轻松爬上船。我还将栏杆逐渐收窄到梯子处,再延伸到甲板,以增加船的造型感。船的前部没有设置栏杆,以便在必要时可以从前部跳到码头或水中。现在从舵轮后沿向后退6格,在船的两侧各添加一对乘客座椅,紧贴栏杆,座椅对之间留出5格宽的通道,距离后栏杆则保留6格空间。这样可以让4名乘客安全乘坐(他们也可以站在甲板上,但由于没有固定,在遇到大浪时可能会落水),同时还能在乘客座椅后方塞进一些货箱用于运输。 舵轮仪表 某些游戏模式下,各种特殊仪表或按钮默认可能未解锁,需要进行研究。如果需要,按键按钮可以用切换按钮替代,且该按钮需通过按钮研究解锁。如果未解锁仪表显示器,可用两个刻度盘替代,一个用于油门,一个用于离合器,它们可通过显示器研究解锁。让我们在舵手的仪表盘上装满有助于操作船只的实用设备。按照截图来放置推荐的仪表可能是最简单的方法。你可以将任何仪表放在任何位置,这只是我最终最喜欢的设置。添加仪表前确保先关闭对称功能,完成后再重新启用。 我们将使用以下设备: 4个刻度盘 数字显示器 指示灯 仪表显示器 2个切换按钮 按键按钮 油门杆 再次说明,可参考截图,但我还是会尽量解释各设备的放置位置,并根据需要替换模块。将仪表显示器直接放在中央位置,如果使用驾驶座的话,就在方向盘正前方,水平的白色和红色条都应朝向方向盘。在仪表左侧放置3个仪表盘。在仪表显示器右侧,靠下方位置放置一个切换按钮,靠前方位置放置一个指示灯。在切换按钮右侧放置一个油门杆。 在仪表盘正面,方向盘柱的两侧各放置一个切换按钮和一个钥匙按钮,两者都朝向驾驶员。最后移除大型斜窗下方的3个方块,在左侧放置一个数字显示屏,且加号朝左,然后在其右侧、指示灯上方放置最后的仪表盘。我们不会使用节流杆来控制发动机的油门,而是用它来控制离合器的离合压力。不过,在本指南中,该部件仍将被称为节流杆。要知道,尽管它的名称如此,但它的功能不仅仅是控制油门。 仪表属性 现在让我们更改所有这些仪表的属性,使其真正发挥作用。使用屏幕顶部的选择工具(不是选择网格工具)并更改每个仪表的属性,为它们命名并将最小/最大值调整为合理数值。以下是推荐属性表格: 仪表 最小值 最大值 初始值 灵敏度 保持时间 离合器 0 1 0 80% 发动机 0.2 油门/离合器 0 1 转速表 0 16 发动机温度 5 100 电池 0 1 燃油 0 1125 如果不更改表盘的最小/最大值,指针会随着数值变化而剧烈转动,但游戏内提示框仍会显示正确数值。 舵轮属性 既然我们在这里更改属性,不妨也调整一下驾驶座的设置。这些设置可能不会立即生效,但最终会起作用。大多数默认设置可以保留,但以下是需要更改的设置: 控制标签模式灵敏度:轴2 重置 100% 轴3 泛光灯粘性 8% 热键1 低速/高速档位切换 热键2 离合器接合 按下 热键3 离合器分离 按下 你也可以根据个人喜好交换热键2和3,或将标签更改为你能理解的内容(如离合器上/下、进/出、上箭头/下箭头等),只需确保切换/按下模式正确即可。“标签”是坐在驾驶座上并按H键切换时,在载具控制帮助中显示的内容。留空将完全隐藏该控制的提示。 灯光、螺旋桨、方向舵和涂装在继续处理内部之前,先完成剩下的外部部件。移动到驾驶舱前方,在物品栏中找到探照灯。将光标对准中心方块,然后旋转(可能按L键),直到带有加号的实心箭头顺时针指向船只右侧(右舷),然后放置探照灯。如果看不到任何箭头,请确保右侧的方向箭头已启用。 接下来移动到船只的底部。在底部中央附近,用一盏灯替换其中一个方块。这有助于在夜间水下游泳时找到你的船只。现在前往船尾。将向内倾斜前最底部中间的完整方块替换为小型螺旋桨。在仍启用对称模式的情况下,从螺旋桨向一侧数5个方块,垂直删除1个楔形块和2个完整方块。现在暂时禁用对称模式,因为我们要放置方向舵,如果在启用对称模式的情况下放置它们,那么每次尝试转向时它们都会相互抵消。拿起鳍状推进器,将它们放置在我们刚刚在两侧删除的垂直方块组中,确保实心箭头指向右侧。完成后确保重新打开对称模式。你可以删除方向舵下方的单个楔形块,用完整方块替换它们,然后添加另一个楔形块使其看起来更美观。最后的修饰 让我们在乘客座位后面添加一个类似笼子的结构,这样当我们遇到汹涌的海浪时,运输的货物就不会飞出去。你可以组合使用直管、弯管、三通管,甚至四通管。或者你可以复制下面截图中的样子。我还在两排椅子之间的过道上添加了一组管道,以防止板条箱从 cargo area(货物区)向前滑出。 在船的最前端,楔形物之间有一个完整的方块。我们可以用 Rope Anchor(绳索锚)替换这个方块,这样在需要救援船只时,我们就可以在船上系上拖绳。如果你不嫌麻烦,想尝试用这艘船拖曳其他车辆,也可以在船尾添加一个。涂装 到目前为止,我们一直在使用纯白色方块进行建造。启用屏幕顶部的涂装工具,在左侧选择一种颜色,然后点击方块即可更改所选面的颜色。你可以点击并拖动来加快涂装速度,也可以点击左侧颜色上方的按钮来更改涂装模式。平面填充模式可以一次性涂装整个区域,而替换颜色模式则可以将所有一种颜色更改为另一种颜色。使用平面填充模式时,它会保留颜色的变化,因此你可以先涂装一个空白矩形,然后进行填充。你还可以通过点击所有小彩色圆圈下方的大圆圈来获取和保存新的自定义颜色。你可以尽情地按照自己的喜好为船只涂装。 这是我涂装它的方法。还有一种【叠加涂装模式】,起初看起来似乎没有任何效果。这是因为该模式仅会改变发光物体的颜色,例如激活的按钮、启用背光的仪表盘、我们之前放置的大型探照灯、船底的灯光等等。如果灯光或仪表背光过于刺眼,你可以用较深的叠加色“涂装”它们,使其稍微变暗。 发动机选择 我们已经基本完成了那些枯燥的方块和楔形块的操作,接下来让我们转向更有趣的部分(警告:你可能很快就会怀念只需要处理那些简单立方体的时光)。为了让我们这艘外形普通的船能够在水中移动,我们需要某种推进装置,而这种推进装置需要机械能或动力才能工作。在《风暴工程:建造与救援》中有多种发电方式,但我们将采用直接驱动的柴油发动机装置,因为这是最常见的方法,而且了解如何建造它非常重要。 虽然在《风暴工程:建造与救援》中,柴油发动机的运行涉及许多因素,但与真实的柴油发动机相比已经相当简化了。发动机运行需要氧气(来自新鲜空气)和燃料。空气和燃料燃烧后,产生的废气需要排放到船只外部,否则废气会积聚导致发动机熄火。正如你所料,在狭小空间内不断发生小型爆炸会使温度迅速升高,因此发动机还需要某种形式的冷却液来防止其起火和爆炸。需要注意的是,这里需要连接4种不同的流体,其中冷却液使用2个接口,一个用于输入,一个用于输出。 目前游戏中有3种尺寸的柴油发动机,但对于如此小型的载具来说,一对小型发动机已经足够。我们将把它们放置在一个极其特定的位置,并采用特定的朝向,所以请务必注意。如果你正在使用自由摄像机,你可以将摄像机直接飞入船体内部进行查看,或者你可以启用Y平面剖切平面,然后使用移动控件(如果隐藏则启用它)来移动该平面,这样船的甲板就会消失,当你从上方往下看时就能看到内部。在狭窄空间内移动时,你可以按住SHIFT键来减慢摄像机移动速度。从这里开始的许多图片都会将船的部分区域切除,以获得更好的视野。放置打开物品栏,确保已选中小型引擎。先不要放置,将其定位在距离后墙9格、距离侧面突出方块2格(或距离侧墙本身3格)的位置。现在旋转引擎,使5个孔朝向船的前方。仔细观察并按几次U键。你会注意到,有一个类似油箱的部件连接着中间的两个孔,但它并没有完全覆盖其中一个孔。你需要调整它的朝向,使这个“油箱”覆盖靠近船中部的孔,而不是外侧的孔。放置好后,安装发动机,然后将光标悬停在各个孔上查看其功能(选择一个普通方块可以让查看更清晰)。正确放置后,标有“冷却液输入”和“燃油输入”的孔应朝向船中部,“冷却液输出”和“排气”孔应朝向侧壁,并且所有孔都应朝船头方向。记得开启对称模式(你应该还开着吧?)。另一侧将放置一个相同的发动机,其管道输入口朝向正确方向。 最大转速(转速限制器,红线转速) 继续操作前,请选择选择工具,并将两个发动机的“最大转速”更改为16。保持20也可以,但完全没有必要,因为我们永远不会让发动机以那么快的速度运行。对称模式不适用于选择工具,因此你需要分别对两个发动机进行设置。“最大转速”的作用类似于汽车的红线转速,通常可以防止发动机爆炸。一个常见的误解是,将限制器提高到100会增加发动机在低速时的功率输出,这完全是错误的。限制器的作用只是防止发动机转速超过特定速度。请记住,我们希望所有将要连接在一起的发动机都设置相同的RPS限制,否则一台或多台无RPS限制的发动机将试图让受RPS限制的发动机超过其转速限制,并给无限制发动机带来巨大压力,从而更有可能导致过热。 发动机流体 正如上一节所提到的,发动机需要3种流体输入,并会有2种流体输出。为实现这一点,我们需要使用物品栏中【方块】类别下的各种管道。如果物品栏未按类别排序,你可以点击左上角的第二个按钮。第一个按钮用于取消分类,第三个按钮则会按字母顺序排列物品栏。目前游戏中有7种管道方块,每种都有对应的防水/封闭式变体,总计14种。建议你通过点击并从物品栏拖动的方式,将直管、弯管和三通管添加到快捷栏中,不过这取决于你的个人喜好。除非另有说明,否则我们将使用普通管道,而非封闭式管道。需要注意的是,尽管普通管道的“开口”端看起来是开放的,但流体无法从这些开口进出。流体要进出管道,必须连接到发动机、液罐等部件,或者连接到流体端口、流体排气口、流体进气口等特殊“流体接口”。 颜色编码:为了让你杂乱的管道布局更容易理解,你可以将每条管道设置为不同的颜色。你选择什么颜色完全取决于你自己。我个人会用浅蓝/粉色分别表示冷/热冷却液,自定义红色表示燃料,深灰色表示废气,白色表示空气。这纯粹是为了美观和让内容更易读,所以选择适合自己的颜色就好(或者不选也没关系,燃料才不在乎它流经的管道是什么颜色,只要能到达目的地后爆炸就行)。 冷却液冷却发动机最常见的方式是使用水。小型发动机自带约196升水作为冷却液,因此在许多情况下,最简单的冷却方法是将其直接连接到散热器。如果你放置一个流体散热散热器,会发现它的输入/输出接口与发动机冷却液管道的输入/输出接口完美对齐。需要注意的是,散热器无需暴露在空气中即可工作,且冷却液的进出方向并不重要,因为它就像一个没有特定输入/输出的大型管道部件。我将以这种方式连接其中一个发动机来展示其外观,但由于我们车辆的设计,有一种更好更简单的发动机冷却方法。我们将不再使用流体散热器,而是直接从船底抽取海水。除非船只在空中或沙滩上,否则它将持续获得冷海水供应,并且我们可以在海水流经发动机后将温水直接排回大海。《风暴工程:建造与救援》目前并不区分盐水、淡水或实际的“发动机冷却液”,因此这种做法是完全安全的。 要实现这一点,首先删除两个发动机冷却液输入/输出口正前方和正下方的两个方块。然后在物品栏中找到流体端口,并将其放置在原来方块的位置,确保通风口朝下,管道接口朝上通向船内。现在只需添加【管道角度】来连接流体端口和发动机,你的冷却问题就解决了!显然,当你开始制造直升机或卡车时,这种方法就行不通了,这就是为什么散热器仍然有用(尽管大多数人使用自定义冷却罐)。 排气系统 排气系统将是下一个最容易处理的部分。我们只需要将其从车辆的某个位置排出,对此我有两个建议供你选择: 将排气管缠绕起来,然后直接从船尾引出,使用【流体端口】将排气管连接到船的外部。如果按照我的指示将排气装置安装在船的外侧,那么它最终会直接位于方向舵旁边。用第三个流体端口替换冷却液现有两个流体端口之间的模块,然后将废气导入其中,使废气从船底排入水中。关于进气口,我们将采用逆向操作。回到之前创建的舵手区域,在仍启用对称模式的情况下,删除角落窗口部件后方的普通方块,并用一个通风口朝上的流体端口替换它。接下来,将其下方的方块替换为封闭式直管。启用屏幕右侧的方向箭头选项,以查看管道的连接位置。接下来,将管道朝向发动机并笔直搭建过去,然后将管道向下移动以连接到发动机。这就是上图中的红色管道,但在后续图片中会显示为白色。如果没有删除仪表盘下方的任何方块,外观可能会有所不同,但功能仍然正常。管道需要尽可能贴近天花板,因为我们将在下一部分在其正下方建造一个燃油箱。 自定义燃油箱 某些游戏模式可能默认未解锁流体生成器或流体计量器,必须通过流体管理研究来解锁。只要预先填补好这些组件应安装位置的孔洞,自定义流体箱即使没有它们也能正常工作,只是每次都需要手动为油箱加注燃油。你也可以使用6个中型流体罐通过管道连接来代替自定义油箱,但要读取燃油含量则需要逻辑组件或微控制器。发动机冷却液可以冷却并循环使用,空气可以不断从载具外部获取(潜艇除外),废气则直接从载具排出。到目前为止,这些事情都相对简单,然而燃油并非在载具外部的所有地方都自然存在,因此我们不能简单地通过一个进气口来获得稳定的燃油供应。相反,我们需要油箱来在载具中储存燃油,而实现这一点主要有两种方法。我们可以使用小型流体罐、中型流体罐或大型流体罐来携带燃料,但这些罐子携带的燃料量(或其他流体,如有需要)相对较少,因此我们需要在载具上放置多个,而且与使用自定义燃料箱相比,相同空间下的燃料容量会更少。所以,我们还是选择制作自定义燃料箱。要制作自定义燃料箱,只需使用普通方块(或其他防水部件)创建另一个封闭空间即可。就像Stormworks会计算船体内部充满空气以使其具有浮力(因为没有通向外部的孔洞)一样,我们将在船体内部创建一个小型封闭空间,这个空间会被视为独立的区域,可以装满柴油而不会泄漏到船体的其他部分。我们的油箱尺寸为11×3×6,即宽11格、高3格、长6格。你可以根据需要将其改大或改小,但我觉得这个尺寸对于大多数用途来说相当合适,其容量也与6个中型流体储罐相同。从发动机所有输入/输出端口留出2格空间(或从冷却液弯管留出1格空间),然后朝着另一台发动机的方向搭建方块。对称模式仍会帮你完成一半的工作,并在中间对接。添加更多方块,使墙壁高度达到3格,刚好碰到之前的进气管道。现在应该可以轻松地在侧面和顶部添加方块,直到形成一个11×3×6的空心盒子。如果你愿意,可以用楔形块和金字塔块替换所有棱角以减轻重量,然后为整体上色,让它更明显是一个燃料箱,而不是船体里的随机箱子。如果你需要最大化油箱容量,可以用楔形块或其他特殊方块建造内壁,但这里已经有足够的空间,所以不用担心。 连接:燃料箱需要与发动机相连,同时还需要以某种方式与外部连接,以便日后给船只加油。最简单的连接是与发动机相连。从发动机的燃料端口拖出直管到燃料箱的壁上,然后将该方块替换为流体端口。请记住,流体无法从管道的【开放部分】进出,必须通过流体端口、进气口、排气口或插槽,才能在管道与其连接的部件之间传输流体。 若要为油箱添加加油位置,我们需将油箱侧面的一个方块替换为【流体端口】,然后在船只侧面向上添加管道。将船只侧面的一个方块替换为【封闭式弯管】,并使其与甲板上的【流体软管固定器】底部相连。使用蓝色指示器确保油箱侧面的流体端口与流体软管固定器底部之间存在连接。流体传感器与生成器最后,我们来设置让油箱在生成时就注满柴油,这样每次生成载具后就无需再加油了。删除构成流体油箱边缘的任意一个完整方块(由于我们仍处于对称模式,只需删除一个方块,位置最好在中心附近),然后找到【流体生成器】并放置,确保其特殊外观的一侧朝向油箱内部。注意不要让特殊外观的一侧朝向其他方向,否则它会将整个船体注满燃油,而油箱却仍是空的。默认情况下,它应该已选择柴油作为流体类型,但你可以使用选择工具确认这一点。 现在,重复上述操作,不过这次要放置一个【流体计量器】。这将使我们能够测量油箱内的液体量,并在仪表盘的某个显示屏上读取数据。 机械能、传动轴和离合器 最后,我们已完成发动机正常运行所需的所有流体连接。从理论上讲,如果现在启动发动机,它们会一直运转到燃油耗尽。然而,这对我们并没有实际用处,因为发动机的旋转部件(曲轴)没有连接到任何装置上。我们需要将发动机连接到螺旋桨,这样当发动机旋转时,螺旋桨也会随之旋转,从而驱动船只前进。不过,如果我们多付出一些努力,不仅能显著提升速度和效率,还能让引擎在不带动螺旋桨转动的情况下运行,这样我们就可以让引擎怠速运转,不必每次停车都重新启动它们。让我们先在曲轴上添加一根传动轴。幸运的是,我们不需要什么特殊工具来完成这个操作,只需找到发动机顶部的动力输出端,然后连接普通管道即可,就是我们之前用来传输流体的那种管道。和流体管道一样,我会给动力管道进行颜色编码,我个人喜欢用橙色。由于我们使用的是两台发动机,所以要将这些管道引向船的中央,并用一个向下倾斜的管道三通接头将它们连接起来。不用太纠结我们是如何随意地让传动轴以这种方式扭曲和弯曲的,“它就是能正常工作”。将输出端连接好后,把管道向下延伸到地板,然后朝船尾方向弯折,但先不要往那个方向继续拖动管道。离合器 不知为何,这个部件对很多人来说理解起来相当困难。如果我们将管道直接连接到螺旋桨,那么只要发动机在运转,螺旋桨也会跟着转动,因为它们是直接相连的。理论上,如果我们能用外力让螺旋桨转动,也会带动发动机转动。离合器将驱动轴分成两部分,这里指的是发动机部分和螺旋桨部分。 当离合器分离时,发动机运转但不会对螺旋桨施加力,船只将保持静止。随着你增加离合器压力,两部分系统会逐渐相互传递动力,使发动机能平稳地带动螺旋桨。对于较重的载具、较大的螺旋桨、较弱的引擎或轮式驱动载具而言,这一点至关重要,因为如果不以此方式平稳接合离合器,很可能会直接导致引擎熄火。完全不使用离合器意味着你将依靠内置的电动启动马达来尝试让引擎和螺旋桨都达到运转速度,这会迅速耗尽电池电量,若在引擎启动前电池就耗尽,你的载具就会陷入困境。 尽管离合器是可选部件,但我们仍将在这辆载具上使用它。学习如何使用离合器仍然非常有益。重要提示:离合器有A侧和B侧,但安装方向无关紧要,所以无需担心装“反”了。继续在我们目前制作的管道末端添加一个离合器。 变速箱简单讲解 警告:自2021年2月18日更新后,变速箱发生了巨大变化,本节内容现已过时。我最近没有玩《风暴工程:建造与救援》,需要对引擎改动进行试验,以便了解如何重写本节内容。 让我们来谈谈新玩家甚至一些有经验的玩家都难以理解的内容之一:变速箱。关于变速箱的教程有很多,但我会让你彻底搞懂它。 就我们目前所讨论的而言:【变速箱是转速倍增器】(它们也是反向的扭矩倍增器,但我们尽量保持简单)。《风暴工程:建造与救援》中,旋转速度以每秒转数(RPS)为单位,玩家通常也以此来衡量。RPS即每秒转数,1 RPS等于60转每分钟。游戏中的柴油发动机运行速度远低于普通汽车的汽油发动机。 显然,这其中还有更多门道,但对于新手而言,了解这些基本内容就足以开始使用发动机了。不过,我们还是来详细解释一下什么是“转速倍增器”。假设你有一台发动机以10 RPS的速度运转,将其连接到螺旋桨后,发动机和螺旋桨都会以10 RPS的速度旋转。这没什么问题……但我们可以做得更好。在我们的情况中,引擎的功率足以驱动螺旋桨以更高强度运转,但我们并不想过度提高引擎的转速(RPS),因为较高的引擎转速不仅会增加燃油消耗,还会使引擎温度升高,更容易发生爆炸故障。下面介绍变速箱/转速(RPS)倍增器。在引擎和螺旋桨之间放置一个变速箱,将其倍增器设置为2,此时引擎会像往常一样以10 RPS的转速运转,而螺旋桨的转速则会翻倍至20 RPS,这意味着船只在燃油消耗与之前大致相同的情况下速度会快很多(在此设置中:引擎转速(RPS)×变速箱=螺旋桨转速(RPS))。 方向 变速箱是转速(RPS)倍增器,但如果你现在尝试放置一个变速箱,会注意到上面有类似箭头的►标记。这是因为乘法运算的结果取决于箭头所指的方向。如果我们将上述示例反过来,发动机转速将达到10转/秒,但螺旋桨转速只会是5转/秒,因为此时是用螺旋桨转速乘以变速箱的传动比。 (在此设置中:螺旋桨转速×变速箱传动比=发动机转速) 那么我们应该如何放置变速箱呢? 由于我们希望提高螺旋桨的转速,因此需要将变速箱按特定方向放置,使较小的传动比朝向发动机,而较大的传动比朝向螺旋桨。记住这一点的最简单方法是:箭头►的小端对应较小的传动比,大端对应较大的传动比。因此,我们希望添加一个连接到离合器的变速箱,使箭头►的小端指向离合器,而大端指向螺旋桨。这通常被称为“将箭头朝向发动机放置”。既然我们正在操作,那就用同样的方式再放置一个变速箱,让箭头►的小端指向第一个变速箱箭头的大端。像这样串联变速箱可以让我们在已有的传动比基础上进一步叠加,从而获得更高的速度,但在这个例子中,我们主要用它来实现“负传动比”,也就是通常所说的倒挡,这样我们就能实现前进和后退了。最后将第二个变速箱连接到我们之前放置的小型螺旋桨的后端。 选择传动比/倍率:现在我们已经放置好了两个变速箱,但接下来需要实际选择它们要使用的传动比。使用选择工具,点击我们放置的第一个变速箱,它会变成橙色,并且左侧会出现两个选项。对于传动比1,点击箭头直至找到6:5,然后将传动比2设为1:-1,即倒挡。现在点击第二个变速箱以更改其属性。将传动比1设为6:5,传动比2设为2:1。你可以自行计算这些数值最终会产生的具体结果。现在只需假设你已通过多次试验得出这些数值,或者你很聪明,通过计算找到了最适合你发动机设置的传动比。 变速箱有两个传动比,但一次只能选择一个。默认情况下输出的是第一个传动比。开启变速箱会切换到第二个传动比,关闭则会恢复为第一个传动比。我们稍后会为此设置逻辑。比率显示与实际倍率 游戏内,RPS倍率以未简化的除法或比率形式列出,这虽然非常令人困扰,但却是齿轮比率的典型表示方式。在我们上述发动机转速为10 RPS、螺旋桨转速为20 RPS的示例中,变速箱会显示为2:1的比率,即每1圈发动机旋转对应2圈螺旋桨旋转。这虽然奇怪但尚可接受,但随后你会遇到诸如9:5和5:2这样的比率。它们分别表示每5圈发动机旋转对应9圈螺旋桨旋转,以及每2圈发动机旋转对应5圈螺旋桨旋转。通过计算你会发现,这两个比率可简化为1.8倍率和2.5倍率。下一部分为你提供了所有这些内容的转换表,以方便使用。如前所述,将变速箱转向另一个方向会使发动机转速加快,但螺旋桨转速减慢。这体现为【反向倍率】,主要用于陆地载具,帮助它们加速或拖运重物,因为让车轮在地面上转动比让螺旋桨在水中转动更困难。 变速箱传动比/倍率参考表 本部分并非完成教程所必需,而是为你在学习变速箱使用细节、自行建造载具时提供便利的参考。 所有数值均假设变速箱的箭头【朝向发动机】。当箭头【背离发动机】时,转速倍率会变为扭矩倍率,反之亦然。传动比 RPS倍率 扭矩倍率 6:5 1.2 0.83 3:2 1.5 0.66 9:5 1.8 0.55 2:1 2.0 0.50 5:2 2.5 0.40 3:1 3.0 0.33 变速箱参数表(另表) 游戏内显示 6:5 3:2 9:5 2:1 5:2 3:1 实际倍率 1.2 1.5 1.8 2.0 2.5 3.0 反向倍率 0.83 0.66 0.55 0.50 0.40 0.33 示例 当发动机以10 RPS转速运转,变速箱朝向发动机且传动比设为9:5时,推进装置的转速将为18 RPS,计算方式为10 RPS×1.8=18 RPS输出。 当发动机以10 RPS转速运转,两个变速箱依次朝向发动机且传动比均设为2:1时,推进装置的转速将为40 RPS,计算方式为10×2×2=40。记住,当变速箱像这样串联时,它们的传动比会相互叠加。 发动机以10转/秒的速度运转,若连接一个背离发动机、传动比为5:2的变速箱,其推进装置的转速将为4转/秒,计算方式为10×0.4=4。 传动比1:-1会反转输出方向,使推进装置反向旋转。这一点很重要,因为发动机无法“反向”运转,所以需要变速箱来反转输出方向。 奥兹变速箱经验法则: • 如果你的载具能轻松达到速度,且有充足的发动机动力余量(持续处于红线转速)…… 你需要更高的传动比/更多速度。 • 如果载具无法从静止状态启动而不熄火…… 你需要更低的传动比/更多扭矩。• 若车辆达到一定速度,但在最高档位时发动机转速(RPS)极低,导致最高速度下降……可降低最高档位以换取更高速度,但会牺牲燃油效率。 • 若你想要更高速度,且发动机在最高档位时能达到理想转速(RPS),但无法在不损失速度的情况下进一步提高变速箱倍率……说明发动机无法为理想速度提供足够动力,需增加更多发动机。 电力系统 在部分游戏模式中,【电力继电器】组件并非默认可用,必须通过【电力研究】解锁。继电器是一个可选但推荐的组件,它可以用位于舵附近的电动断路器替代,不过该断路器需要手动操作。如果有必要,你也可以直接将所有设备连接到电池上。恭喜你成功打造了自己的第一台发动机。一旦你掌握了其中的窍门,之后的操作就不会像本指南中这么耗时了。不过还需要再添加一个小部件。在通向离合器的弯管上方,将直管替换为三通管,使其第三个开口朝上指向离合器。然后取一个小型发电机并将其安装在该管道的末端。发电机会利用发动机产生的动力来发电,为我们的电池充电。对于这艘载具,一个小型发电机就足够了,我们不想添加太多,因为每个发电机都会消耗我们用来驱动螺旋桨的动力。我们可以添加一个变速箱来让它转得更快,但这也会进一步降低发动机转速,而且即使没有变速箱,它也能产生足够的电力。现在我们来为这台发电机添加一些电池以便充电。在物品栏中找到小型蓄电池,将其放置在管道和燃油箱之间的地面上。你可能希望放置3个,这样能在电量耗尽前提供更多电力,但单个电池应该也足够了。要记住,在资金有限的战役模式中,电池和发电机往往都相当昂贵。电池也比较重,所以在船上塞满电池是不明智的。 大多数船只都包含一个或多个电路断路器,但我们将设计这样的电气系统:当我们转动发动机钥匙时,系统就会启动,且只有很少的组件直接连接到电池。为实现这一点,我们将使用一个继电器。电动继电器的功能与电动断路器相同,不同之处在于断路器只能通过手动扳动开关来操作,而继电器可以远程激活。在我们的示例中,当我们转动发动机钥匙时,它就会开启。将电动继电器放置在电池附近的某个位置,我把我的继电器安装在了天花板上。 电气逻辑 连接电气元件比使用管道连接发动机部件要简单得多。我们无需铺设实体电缆或管道,而是使用逻辑工具将电气节点连接起来。在屏幕顶部选择【逻辑】,然后在左侧点击【电气】。此时应该会出现几个带加号的黄色圆圈,这些就是我们要连接的电气节点。与发动机离合器将传动轴分为两个独立系统的原理类似,我们的继电器会将两个电力系统分隔开,直到我们将其开启。如果你不小心将一个系统的节点连接到另一个系统的节点,电路就会闭合,所有设备将作为一个系统运行,因此要注意你所连接的对象。也不要将继电器的一侧连接到另一侧,因为这同样会使电路短路并产生相同的效果。 要进行实际连接,只需点击并拖动一个节点到另一个节点即可。尝试建立已存在的连接将会删除现有连接。按住CTRL键的同时点击,可以快速建立多个连接。建立连接最快的方法是选择一个电池,然后将其连接到电池系统中所有需要供电的设备以及继电器的一侧,接着按住Ctrl键点击,将其他所有设备连接到继电器的另一侧。这种方法会产生大量黄色连接线,虽然能正常工作,但如果进行大量连接,可能会导致视线受阻,难以看清其他内容。 另一种方法是采用链式连接。电流可以毫无问题地通过这些连接流动,路径甚至可以在任何地方进行分支、合并或分叉。关键在于确保每个组件都有一条连接路径,能够连接到电池、继电器或断路器。“蜘蛛网”和“链条”两种方法均有效,因此选择其中一种(或根据需要将它们结合)并开始连接。图示:假设我们使用3个电池,继电器“电池侧”所需的所有连接,其他节点呈灰色。 以下是应在继电器之前(电池侧)连接的部件列表。未在此列出的任何部件都应连接到继电器的另一侧。 小型发电机 所有电池 钥匙按钮(控制发动机开关) 油门杆(控制离合器) 后部的两个尾舵 电动继电器(A节点或B节点二者择一连接,不可同时连接。另一节点用于连接其他所有部件) 记住,不要将继电器另一侧的任何部件与此列表中的任何部件连接,否则电流将直接绕过继电器。同时要确保所有部件都已连接,否则它们将无法获得电力,并且根据部件的不同,可能根本无法正常工作。仪表盘相对来说影响不大,因为它们无需电力即可工作,只是不会有背光;但如果不给引擎供电,你就无法使用启动马达;如果方向舵没有电力供应,它们会锁定在当前位置。如图所示:西部最快的电工?还是只是个反恐精英玩家?你来决定。 数据逻辑 由于画面会变得杂乱,用图像来描绘逻辑非常困难。请尽力跟上思路!既然你已经了解了如何使用逻辑工具连接逻辑节点,我们可以继续学习更复杂的内容了。没有数据逻辑,我们的船可能就只是一块会漂浮的带燃料的砖头。我们需要一种方式来告诉船只,当我们坐在驾驶座上按下移动键时该做什么,或者当我们使用按键按钮时希望发生什么,又或者哪个表盘应该显示电池电量、哪个应该显示燃料量,诸如此类的事情。开始操作前,请确保已选择屏幕顶部的【逻辑工具】,并在左侧选中【数据模式】。此时,只有具有某种逻辑连接的方块以及各种彩色圆圈和圆点会显示出来。如果您有某种形式的色盲,或者难以区分红色和绿色的圆圈及圆点,可以在暂停菜单的【设置】►【常规】►【辅助功能】►【颜色方案】中更改颜色。截图和所引用的颜色将使用【经典方案】。 数据逻辑节点 您可能想知道这些圆点和圆圈究竟有什么作用。数据逻辑有两种类型,逻辑节点也有两种类型。圆点代表【输出端】,圆圈代表【输入端】,逻辑从【输出端】流向【输入端】。一个输出端可以连接任意数量的输入端,但输入端只能接受一个输出端的连接。输入端不能与其他输入端相连,输出端也不能与其他输出端相连,逻辑仅沿一个【方向】流动。将鼠标悬停在节点上会显示更多相关信息,包括组件名称、节点本身的名称、数据及输入/输出类型,以及节点功能的描述。 接下来是不同颜色,用于区分逻辑类型。红色节点用于开关逻辑(有时称为布尔逻辑),绿色节点用于数字逻辑。将鼠标悬停在节点上会显示它是用于开关逻辑还是数字逻辑。正如你所料,开关逻辑只有开或关、启用或禁用、是或否、真或假等布尔值状态。当没有输入时,开关逻辑默认处于关闭状态。 另一方面,数字逻辑可以是数轴上的任何值,包括小数。需要注意的是,数字永远不会像某些计算器在除以零时显示的【非数字】那样。如果某个数字无效、未定义或没有输入,它将默认设为0。 建立连接就像电力逻辑一样,你只需点击并拖动一个节点到另一个节点,就能建立逻辑连接。如有必要,你可以从输入端点击并拖动到输出端,但如果需要建立多个连接,从输出端开始使用Ctrl+点击的技巧效果最佳。不过,我们目前还没有连接所有部件所需的全部条件,而且事情很快就会变得复杂起来,所以我们现在先连接所有能连接的部分,其余部分稍后再处理。下面是我们现在要建立的所有逻辑连接列表,分为开关表和数字表。所有连接在图片中也能看到,但从无法旋转的静态图片中很难看清所有连接。开关逻辑连接 输出组件输出节点 ► 输入组件输入节点 驾驶座热键1 ► 变速箱(第二个)档位开关 驾驶座热键2 ► 油门杆向上 驾驶座热键3 ► 油门杆向下 切换按钮(倒车)已切换 ► 变速箱(第一个)档位开关 切换按钮(探照灯)已切换 ► 探照灯灯光开关 按键已激活 ► 继电器继电器状态 按键已激活 ► 灯光灯光开关 按键已激活 ► 仪表盘(全部4个)背光 按键已激活 ► 仪表显示背光 按键已激活 ► 数字显示背光 注意:你可以交换热键2和3以及两个油门杆输入的连接,以改变按下2是增加离合器压力还是按下3是增加离合器压力。根据你的偏好进行设置。 数字逻辑连接 输出组件输出节点 ► 输入组件输入节点 驾驶座轴1 ► 尾舵(两者)旋转 驾驶座轴3 ► 探照灯旋转 油门杆油门 ► 离合器离合器压力 油门杆油门 ► 仪表显示器次要显示值 液体计量器液位 ► 刻度盘(燃油)显示值 电池(任意一个)电量 ► 刻度盘(电池)显示值 小型发动机转速 ► 刻度盘(转速表(转速))显示值 小型发动机温度 ► 刻度盘(发动机温度)显示值 由于我们有两个发动机,但转速和温度各只有一个刻度盘,只需选择其中一个发动机获取数值即可。对于更大、更复杂的载具,你可能希望为每个单独的发动机配备独立的仪表,但就我们目前的情况而言,两者的运行状态应该基本相同,所以这不成问题。 逻辑门 到目前为止,我们一直将输入直接连接到输出,但如果我们想在逻辑信号到达目的地之前对其进行某种修改,该怎么办呢?例如,目前当我们按下驾驶座的热键1时,会使第二个变速箱挂入高速挡,但我们的仪表盘上有一个低速挡指示灯,它应该在我们选择低速挡时亮起。如果我们将热键直接连接到指示灯,那么只有当我们挂入高速挡时指示灯才会亮起,这与我们想要的效果正好相反。不过,如果我们先让热键1信号通过逻辑门,就可以接收输入、进行更改,然后输出修改后的值。在我们的例子中,我们希望指示灯在热键1输出关闭信号时获得开启信号,反之亦然。 幸运的是,这是一种相当常见的情况,我们可以使用一种非常简单的逻辑门,叫做非门。要在物品栏中找到它,只需在搜索栏中输入NOT,因为所有逻辑门都以其实际名称显示,且末尾不带“gate”。左侧:物品栏中已选中的非门,以及所有可放置的逻辑门。由于微控制器的存在,你不会经常使用这些逻辑门。右侧:放置一个非门,然后将其逻辑从座椅连接到指示器。 如果对称功能仍处于启用状态,可以将其关闭,因为我们只需要放置一个非门。然后在船体内部找一个看不见的空位将其放下。我的非门放在仪表盘下方,正好在它将要连接的指示灯正下方。现在将驾驶员座椅的热键1连接到非门的A输入端,再将非门的非A输出端连接到指示灯。操作就是这么简单,这是一个极其基础的逻辑门。其他逻辑门可能有多个输入,或者只有当输入值为特定数字输入时才会激活信号,这里种类太多无法一一涵盖,所以我只介绍与这艘船相关的逻辑门。 速度表:某些游戏模式可能默认未解锁线性速度传感器,必须通过传感器研究来解锁。速度表是接下来最容易设置的部分,现在我们就来操作。在你的船内某处放置一个线性速度传感器,其感应部分朝向车辆前方(或者不朝向,在这种情况下无关紧要)。使用选择工具将传感器模式更改为水平,使其感应任何水平方向的移动,而不是任意方向的移动。你也可以选择【定向模式】,如果你希望检测传感器探头(我认为它应该是一个特殊的皮托管)所朝向方向的速度,并且会将反向移动检测为负数。 线性速度传感器设置完成后,我们可以直接将其连接到速度表,但这里有个小问题。该传感器的输出速度单位是米每秒,这不是大多数人常用的速度计量单位,通常人们会用千米每小时或英里每小时来衡量常规速度。由于我们正在制作船只,所以我们要将传感器输出的米每秒转换为节。 在物品栏中找到【单输入函数模块】,并将其放置在船内的某个位置。函数逻辑门及其各种迭代版本是非常独特且强大的逻辑门,它将库存中至少12种逻辑门的功能整合到了一个组件中。通常情况下,我们需要同时使用乘法器和常数值才能实现的功能,现在只需输入正确的函数,它就能同时完成这两个逻辑门的工作。 使用选择工具点击【单输入函数】,左侧会出现一个文本框以及可供参考的下拉菜单。点击“单位转换”下拉菜单,你会找到一些最常用的速度单位转换参考。根据你想要显示的单位,找到“米每秒转节”“千米每小时”或“英里每小时”的转换公式,然后将其输入到左上角的f(x)框中。由于我要将米每秒转换为节,所以函数应为x*1.943844(不包含引号)。这意味着x是输入变量(即速度传感器的输出值),星号(*)是乘法运算符,1.943844是用于乘以输入值x的常数。组合起来就是我们的【函数】。设置好函数后,剩下的就是将其与逻辑工具连接。将线性速度传感器连接到函数(1输入)的输入1(x),然后将f(x)输出连接到数字显示屏。 微控制器 我们已经知道如何放置和使用逻辑门,但如果在船上不断添加越来越多的逻辑门,最终船会被它们覆盖,事情很快就会变得非常混乱。为了解决这个问题,我们可以创建微控制器(MC)。本质上,微控制器是一个个整洁的小盒子,里面装满了原本会让你的载具显得杂乱的逻辑门。不仅如此,如果你有一组经常一起使用的逻辑门,你可以将它们打包成一个【微控制器】,然后保存起来,以便日后在其他载具中使用,它甚至会像其他方块一样直接出现在你的物品栏中。 由于我们的载具使用单个燃料箱,而不是6个中型燃料箱,因此我们不需要将每个燃料箱的容量相加来得到总燃料量。原本这是一个非常方便的向新玩家介绍微控制器的方式,因为通常需要使用大约5个加法逻辑门(或者一个8输入功能,但这说起来就超前了)。你可能已经猜到了,本指南的第一版就是这样做的,但现在我该用什么作为微控制器的例子呢?好的,我们刚刚制作的那个功能可以将线性速度传感器的速度转换为更易读的数值,这听起来是我们在很多载具上可能会经常用到的功能,所以或许我们就从这里开始。反正我有个想法能让它变得更好。 设计方案:让我们来构建一个速度转换微控制器。和往常一样,先保存你的载具,因为我们即将切换到微控制器编辑器。在右上角应该有一个看起来像电脑处理器的按钮,叫做【微控制器编辑器】,你现在就应该点击它。你会看到一个与载具编辑器有些相似的界面,只是顶部的部分选项有所变化,主视图也看起来大不相同。左侧应该是【示意图】,它是我们微控制器(MC)的俯视图,右侧则有三个标签,分别是【属性】、【逻辑】和【符号】。现在先选择【属性】标签,为微控制器输入一个名称(我觉得“速度转换器”比较合适,但你可以自己决定)。这个名称就是我们保存后微控制器在物品栏中的名称。【描述】是在物品栏中选中该组件缩略图时显示在下方的简短说明,这是可选的。宽度方面,我们需要将其缩小到1,长度可以缩小到2,这样我们就能得到一个1x2的微控制器来进行操作。现在在逻辑选项卡下,点击添加节点按钮两次。你会注意到左侧的示意图上出现了一些东西。你需要点击并拖动我们刚刚创建的其中一个节点到空白区域,因为节点不能重叠(重叠时会显示黄色脉冲警告标志)。现在,在两个节点上点击显示为“开/关”的下拉菜单,将其更改为“数字”,因为我们的输入和输出都将是数字。现在将其中一个节点命名为“线性速度传感器输入”或其他你觉得有意义的名称,然后将另一个节点的类型更改为“输出”,并命名为“速度表输出”或类似名称。描述通常会被忽略,但它们是在逻辑模式下将鼠标悬停在节点上时显示的工具提示内容。现在你应该有两个数字节点,一个是输入节点,另一个是输出节点。 符号标签是为1位像素画作者准备的。你在这里绘制的内容将用作物品栏界面中的缩略图。 与载具一样,你需要经常点击屏幕顶部的保存按钮。保存时使用的名称不必与之前在属性标签中设置的名称一致。 逻辑以下是我们将要创建的微控制器(MC)。具体创建方法将在下方详细说明,先展示出来是为了让你了解我们要做什么。 准备就绪后,点击屏幕顶部的【逻辑】按钮,切换到微控制器的“内部视图”,这里就是实现功能的关键区域。在设计模式中创建的两个节点目前叠在一起,点击并将它们拖到两侧。如果需要移动视角,可以按住鼠标中键平移视图。我们还需要添加两个节点,所以像在载具编辑器中一样打开【物品栏】。找到【f(x, y, z)】(在【算术】分类中查找比搜索更容易找到)和【属性下拉菜单】,并将它们都放置好。现在请进行如下布置:将设计视图中创建的输入项和属性下拉菜单放置在左侧,f(x, y, z)函数模块置于中间,输出项放在右侧。 接下来,将速度传感器输入连接到函数的X输入,将属性下拉菜单连接到函数的Y输入,并将函数的输出连接到速度表输出。现在点击该函数以打开其属性面板。与我们创建的另一个函数类似,我们将把速度传感器的输出乘以一个常数。不同之处在于,这个常数将来自我们的【属性下拉菜单】,这是一个特殊的逻辑门,允许我们点击微控制器并更改其属性,就像我们可以更改油门杆或驾驶座的属性一样。因此,我们这次的函数很简单,就是“x*y”,即“线性速度传感器乘以属性下拉菜单”。函数的“Z”输入对我们没有任何作用,因为我们只需要X和Y输入。如果我们现在尝试在函数中使用Z,Z将始终为0,因为它没有输入。如果逻辑门的某个输入功能不需要,或者默认状态可以使用,那么无需连接该输入。让我们为属性下拉菜单添加一些可选选项,使其变得有用。点击该下拉菜单,然后在左侧输入“将毫秒转换为...”作为其属性名称。接着点击“添加”按钮3次,以创建3个选项。然后输入以下值: 标签 值 千米每小时 3.6 英里每小时 2.236936 节 1.943844 勾选标记表示默认选项,因此如果你更常使用千米每小时,可以将勾选标记更改为该选项。 现在,每当我们选择这些选项中的一个时,它将更改此输出的常数。由于当前选中的是“节”,因此它会将1.943844输出到我们创建的函数的“y”变量中。在点击左上角的【返回】按钮回到载具编辑器前,请记得保存微控制器。回到载具编辑器后,你可以用我们刚刚制作的微控制器替换【功能(1输入)】。它应该会以你之前命名的名称出现在【微控制器】分类的物品栏中。像之前一样连接速度传感器和数字显示器之间的逻辑,然后启用【选择工具】并点击微控制器,就能看到我们制作的下拉菜单运行了。如果你出错了或想编辑微控制器,点击带有三个点的小按钮可以当场重新打开微控制器进行编辑。你甚至可以在不保存微控制器的情况下将其更新到载具上,这样就无需将特定于某些载具的微控制器保存在微控制器编辑器中。 发动机管理微控制器 此时,船只已接近完成。现在我们只需要一些逻辑来控制发动机油门和启动马达等。通常人们会在载具上添加一个专门用于启动马达的按钮,但我们已经有一个钥匙按钮可以完成这项工作。问题在于,我们只需要启动马达运行到发动机启动为止,但现在将钥匙直接连接到启动马达会导致启动马达一直运行直到电池耗尽。 除此之外,我们还需要一种控制发动机油门的方法,而我们正通过驾驶座来控制油门。发动机的油门输入值范围为0到1,但驾驶座的控制轴输出值范围为-1到1,这意味着有一半的输出范围是无效的死区。更理想的情况是,只要钥匙处于开启状态,发动机就能平稳怠速;而当关闭钥匙时,发动机就会熄火。我们可以通过一个带有简单逻辑的微控制器来实现上述所有功能。设计打开微控制器编辑器并点击新建微控制器以清除当前设计。默认的微控制器尺寸为2x2,这正是我们所需要的,因此无需更改尺寸。输入一个名称,我使用的是【引擎启动/停止按键】,你也可以使用【简易引擎微控制器】或类似名称,描述为可选内容。在属性选项卡下点击添加节点四次。我们需要2个开关节点和2个数字节点,且每种类型各需要一个输入和一个输出。至于名称,你可以将开关输入命名为【按键输入】,输出命名为【引擎启动】,然后将数字输入命名为【油门输入】,输出命名为【油门输出】。最后,在符号选项卡中,你可以根据需要绘制图案。 启动逻辑和之前一样,这是该部分结束时MC的样子,包括那个不祥的空白区域。 接下来到逻辑界面,移动现有的逻辑,以便你能看到全部4个逻辑,输入在左侧,输出在右侧。我还建议将开关放在数字下方,以便之后更容易阅读。这个MC将使用6个逻辑门,但我们首先要将开关逻辑连接到启动电机输出。在钥匙输入的右侧放置一个脉冲(切换到推送),然后在其右侧放置一个电容器,并在电容器之后放置发动机启动输出。 将所有组件放置好后,将钥匙输入连接到脉冲(切换到推送),脉冲连接到电容器,电容器再连接到发动机启动输出。你可以点击这些选项来查看不同的属性。【脉冲(切换至触发)】的默认设置无需调整,但你需要将【电容器】的“充电时间”改为0.0秒,“放电时间”设为约0.5秒。 下面来了解这些设置的作用。默认情况下,按键输出关闭信号,当我们按下按键后,它会向微控制器的按键输入端发送开启信号,该信号随后进入【脉冲(切换至触发)】模块。【脉冲(切换至触发)】会向【电容器】短暂发送一个开启信号,之后立即关闭,即使它仍在接收来自按键的开启信号。同时,由于【电容器】的充电时间被设为0,短暂的开启信号会立即为其“充电”。它将开始向启动马达输出开启信号,并且由于不再接收开启信号,它会在接下来的0.5秒内持续输出开启信号,直至完全“放电”后关闭。 所有这些可以简化为“当钥匙按钮开启时,让发动机的启动马达运行0.5秒” 发动机管理微控制器(续) 油门逻辑前面的微控制器已经完成,在整个章节中可以参考它。 这是比较简单的部分。现在让我们着手处理船只将要使用的最复杂系统。在之前逻辑的上方某处放置以下逻辑模块:大于、小于、增减计数器和数字开关盒。要记住数字开关盒在物品栏中的位置,甚至可以将其添加到底部的快捷栏中,因为我保证你会一直用到它。现在排列这些逻辑模块,将“大于”模块放在“小于”模块上方,且两者都位于“油门输入”的右侧。然后将“增减计数器”放在其右侧,“数字开关盒”放在计数器右侧,最后连接“油门输出”。有些人可能会建议使用阈值门代替大于门和小于门,但就我们设置驾驶座的方式而言,最终结果是相同的。 按以下方式连接逻辑:将油门输入连接到大于门和小于门的A(最上方)输入。大于门连接到增减计数器的向上输入,小于门连接到其向下输入。增减计数器连接到数字开关盒的第一个值(开启),然后数字开关盒连接到油门输出。最后,将按键输出连接到数字开关盒的开关信号节点。 在解释这些组件的作用之前,请打开增减计数器的属性并设置以下属性: 增量:0.008 重置值:0 启用钳制 最小值:0如果它们朝着错误的方向移动,说明它们被反向放置了。如果它们朝着彼此相反的方向移动,那么是在启用对称模式时建造的,其中一个需要翻转到正确的方向。 • 尝试前后推动油门杆。如果油门杆不移动,那么它的电力需要像钥匙按钮一样连接到继电器的【电池侧】。如果它移动了,你还应该看到仪表显示器上的红色条也随之移动。如果没有,则需要将杠杆的输出连接到仪表的【次要】输入。 • 按下热键2和热键3(默认情况下是键盘上的2和3。你也可以按H键切换控制提示)。当按下其中一个按键时,油门杆应随之移动,松开按键时则停止移动。如果释放热键后油门杆仍继续移动,你需要在驾驶座的属性中将热键模式从“切换”更改为“按压”。完成后确保将油门杆复位到0位置。 启动引擎:现在启动引擎,并按住交互键与钥匙按钮来启用电力继电器。如果使用按钮时没有反应,你需要检查其电气连接是否位于电力继电器的“电池”侧。如果转动钥匙的时间过长,你需要降低其“按住持续时间”属性。当钥匙开启后,多项操作应同时进行。• 你应该能听到发动机的启动马达运转0.5秒。如果运转时间超过这个时长,请确保你将启动器连接到我们之前制作的微控制器,而非直接连接到钥匙。如果已连接到微控制器,则说明微控制器本身存在问题。如果启动马达完全不运转,意味着你需要检查发动机的电气连接,或者检查微控制器的设置是否正确。 • 仪表盘上所有仪表的背光灯应点亮,船底的灯光也应亮起。虽然这些并非至关重要,但在夜间非常有用。如果某个设备无法启动,请确保它与按键有数据连接,并且与继电器有电力连接。 • 假设你未按下热键1,指示灯应处于亮起状态。如果即使按下热键1后指示灯仍不亮,请检查其数据是否已连接至非门,以及其电力连接是否正确。此外,如果热键1尚未连接至非门,请进行连接。继续操作前,请确保指示灯已亮起。 • 转速表表盘读数应约为3-4转/秒。如果读数降至2.5转/秒以下,发动机将会熄火,你需要重新启动它们。如果起动机运转时读数仍停留在0,请确保转速表已与发动机的其中一个转速输出端建立数据连接。• 仪表显示器上的白色条现在应可见,数值显示为0.08。若未显示,请确保微控制器的油门输出已连接至仪表的主数值接口。 • 按左右按钮(默认设置)可控制探照灯左右转动。此时应能听到旋转电机运行的声音,并看到探照灯在驾驶舱旁转动。若探照灯不移动,请检查其与驾驶座的数据连接和电力连接。接着按下仪表板上的【探照灯】按钮。若按钮未亮起,检查其电力连接;若按钮亮起但探照灯仍不工作,而你能用方向键转动它,则需将按钮的数据连接至探照灯。如果松开方向键后探照灯仍继续移动,说明驾驶座的3号轴灵敏度过高,7或8是合适的数值。如果松开按键后探照灯一直回到中立位置,则需要将3号轴的“重置”值改为“粘性”。如果需要,现在可以关闭探照灯。 船只完成!驾驶它去兜兜风吧 假设清单上的所有内容都正确,那么你的船应该已经完成了!现在只需学习如何驾驶它。如果船卡在码头边缘,你可以离开座位,看向船只,然后按R键将其带回工作台。在这里你可以再次生成它,使其回到默认位置。当引擎启动,你舒适地坐在驾驶座上时,就可以准备出发了。08 最大值:1 逻辑门的【增量】显示不正确,因为它会对显示的数字进行四舍五入,尽管其内部使用的是正确数字。 要理解这些逻辑,让我们从驾驶座开始。如前所述,驾驶座会输出一个介于-1到1之间的值。通常,它会沿其轴平滑移动,但提高灵敏度会改变其移动速度。由于我们的灵敏度设为100%,所以每当我们按下前进按钮时,它会立即跳至1;按下后退键时,则立即跳至-1。此外,我们将其设置为【重置】而非【保持】,因此一旦停止按键,它就会朝相反方向移动至0。这意味着我们的驾驶座只会输出三个值之一:-1、0或1,不会有中间值。考虑到这一点,座椅会连接到我们的【节流输入】,然后再连接到【大于门】和【小于门】。【大于门】会比较其A输入和B输入,如果A值大于B值,就会输出一个开启信号。由于B输入没有接收到任何信号,它会默认设为0,这意味着它在检测座椅的输出是否大于0,如果是,就会开启其输出。【小于门】的工作原理类似,只是方向相反。 一旦我们检测到向座椅输入了指令,该信号就会进入【上下计数器】的其中一个输入端口。上下计数器的作用方式与节流杆组件非常相似,当UP输入端开启时,它会增加数值;当DOWN输入端开启时,它会减少数值。其【增量】设置决定数值变化的速度,也就是灵敏度。【限制】功能可确保数值不会超过特定范围,而【最小值】和【最大值】则设定了限制的上下边界。在这种情况下,计数器的最小输出为0.08,最大输出为1,当有向上或向下输入时,数值会每“ tick ”(1/60秒。虽然这有点奇怪,但有合理的原因)变化0.008。最后,它会将数值输出到数字开关盒。 数字开关盒……其工作方式有点像Y形路口的交通信号灯。有两个数值接入开关盒,它们都想到达输出端,但一次只能有一个通过,那么我们该如何决定哪个能通过呢?默认情况下,【第二数值(关闭)】的数值会通过,但如果开关信号输入端接收到【开启】信号,那么【第二数值(关闭)】就不再通过,而是由【第一数值(开启)】通过。由于【第二数值(关闭)】没有输入,它会默认输出0,这意味着开关盒默认会向【油门输出】端输出0。但如果我们按下按键,数字开关盒就会允许来自【增减计数器】的【第一数值(开启)】通过并到达油门。 总结:前面解释了很多内容,下面用更简单的话来概括这些逻辑的作用。我们有一个数字节流杆。坐在驾驶座上时,按下前进或后退键会增加或减少其输出。如果钥匙按钮关闭,发动机油门为0,发动机将关闭。如果钥匙按钮打开,发动机油门由数字节流杆控制,怠速时的最小油门值为0.08。同样,这个【数字节流杆】由我们的驾驶座控制。 保存微控制器后,返回载具编辑器,这样我们就可以将这个精致的微控制器添加到载具上,最好放在看不见的地方。放置好后,使用逻辑工具将钥匙按钮连接到微控制器的开关输入,然后将其开关输出连接到小型发动机的两个启动节点。然后将驾驶座的轴2连接到其数字输入端,再从其数字输出端连接两个小型发动机的油门,以及仪表盘上仪表显示器的主显示值,这样我们在驾驶时就能读取油门数值了。 系统检查清单与故障排除 我们的小船终于完成并能正常运行了……希望如此。在生成船只之前,查看工作台界面右侧靠近底部的位置。那里应该有一个名为“编辑器警告”的按钮。如果你完全按照本指南操作,应该不会有任何警告。如果有警告,请根据看到的警告内容确保数据和电路连接正确,然后关闭编辑器警告,因为在建造时它们会很烦人。现在我们可以生成船只并开始测试其所有功能和按钮。以下是一份确保所有设置正确的清单,请按顺序操作。 清单 • 如果船只沉没,可能有以下三种原因:船体某处有漏洞、自定义油箱有漏洞导致船体充满燃油,或流体生成器装反导致船体充满燃油。 • 坐在驾驶椅上,查看仪表盘上的各种仪表。燃油表、电池表和发动机温度表在查看时不应显示为0。如果显示为0,则需要将正确的传感器编号连接到其输入端。如果数值变化时指针失控,则意味着未在其属性中输入最小值和最大值。数字显示屏可能会随着船只在海洋中颠簸而略有变化,这完全正常。如果船只移动时数字显示屏仍卡在0,那么请检查其数据连接。 • 尝试同时按下倒车按钮和探照灯按钮。此时应该没有任何反应。如果其中任一按钮在此时亮起,那么你需要检查电气连接,看是否在任何时候跳过了电气继电器。同样,即使按下热键1后,指示灯此时也不应亮起。 • 如果启用了第三人称模式,你可以按默认的TAB键进入第三人称视角,然后按左右移动键。你应该能看到两个尾舵都在移动。如果一个或多个尾舵没有移动,请检查其电气和数据连接。展示一种启动移动的方法。注意观察,换挡时转速表会下降,但船只不会减速。 要让船只移动,我们需要加大发动机油门并接合离合器。过早接合离合器会导致发动机熄火。最简单的操作方法是:按住前进键,直到油门显示上的白线完全到达顶部,然后增大离合器,直至红线也完全到达顶部。此时船只应该开始移动了!你会发现我们很快就达到了RPS限制,所以需要按下热键1来换挡。不用担心换挡前要分离离合器,它可以自动顺利换挡。 当你在航行时,可以尝试一些转向操作,感受一下船只的操控性能。你会注意到转速可能会开始下降,所以如果转速过低,就用热键1降挡。当你开始移动且离合器达到100%后,除非你想完全停车,或者即使在一档时发动机转速也非常低(通常是在极其缓慢移动时),否则你不需要触碰离合器杆。你也可以使用少量油门并小心操作离合器,让船只以低速“爬行”前进。 当你准备尝试倒车时,尽量将船完全停稳,并将离合器设置为0。按下仪表盘上的【倒车】按钮,然后给发动机施加少量油门。逐渐增加离合器压力,如果转速开始下降,同时加大油门,最终你应该能在离合器100%的情况下,即使只使用很少的油门也能倒车。你甚至可以启用高速挡来降低敏感度。这艘船的设计并不适合快速倒车。螺旋桨经常会露出水面,而且操控通常非常不稳定,所以只在需要时使用倒车,实际行驶时尽量使用前进挡。 如果你启用了创意模式,可以打开创意菜单调整时间来测试灯光,或者调整天气设置,看看船只在波涛汹涌的海面上如何操控。完成后,你可以将船只带回工作台,方法是看向船只并按R键,或者按M键打开地图,点击船只将其带回。今天是冲浪的好天气! 总结 现在你已经准备好在《风暴工程:建造与救援》中执行一些简单的任务了,驾驶着你自己(在我帮助下=3)打造的船只。希望本指南内容丰富,能让你掌握开始打造自己载具的知识。作为额外福利,这里是(稍作修改的)成品,你可以将其与指南中制作的内容进行比较。

下载233乐园APP

专心推荐好游戏

关于我们 · 联系我们 · 隐私政策 · 营业执照

侵权投诉 · 开发者中心 · 用户协议 · 免责声明

不良信息举报中心

纠纷处理及不良内容举报电话:

4006600910 (工作时间: 9:00-12:30,14:00-18:00)

北京市朝阳区启阳路4号院2号楼15层1803室

本公司产品适合10周岁以上玩家使用 未成年人家长监护

首页 / Stormworks: Build and Rescue

抵制不良游戏 拒绝盗版游戏

注意自我保护 谨防受骗上当

适度游戏益脑 沉迷游戏伤身

合理安排时间 享受健康生活

京ICP备18003564号-3

经营许可证编号:京B2-20181741

京公网安备:11010502052873

Copyright © 2026 233leyuan.com All Rights Reserved

北京龙威互动科技有限公司版权所有

热门游戏: 我的世界 | 三角洲行动 | 原神 | 王者荣耀 | 超自然行动组 | 蛋仔派对 | 和平精英 | 火影忍者 | 二重螺旋 | 英雄联盟 | 梦幻西游 | 明日方舟 | 斗罗大陆 | 光遇 | 鸣潮 | 无畏契约 | 模拟山羊3 | 樱花校园模拟器