在《Scrap Mechanic》里打造一辆能自动躲避障碍物的车辆,听起来虽然很酷,但核心实现思路其实非常清晰——使用红外传感器作为“视觉系统”,搭配计时器与逻辑门构建响应式转向控制,再通过伺服电机驱动前轮、配合油门协同调节,就能实现真正的自主绕障行驶。

这种避障车的核心逻辑在于:它不依赖驾驶座输入指令,也不走预先设定的固定轨道,完全依靠自身识别前方障碍物并实时调整方向。一旦启动,车辆就会沿直线巡航,遇到障碍物后向左或向右绕行,随后恢复直行,形成一个完整的闭环动作。听起来是不是很适合在基地巡逻或者资源区进行无人巡检?
安装感知模块与基础定位
首先来讲解感知模块的安装方式。按下B键打开背包,搜索“infrared sensor”,拖出一个红外传感器。这里有一个关键点:传感器默认只检测玩家角色,因此必须右键打开它的属性面板,勾选【Detect All Objects】选项。否则,你辛辛苦苦制作的避障车,会对自家的机器人、矿车甚至是投石机视而不见。
传感器的朝向需要精确调整,确保它的探测锥角能够完全覆盖车体宽度。安装位置过高或过低都会导致矮小障碍物被漏检。如果传感器歪斜超过5度,左右两侧障碍物的响应延迟差就会超过0.3秒,导致转向失衡。
安装好传感器后,使用连线器将它的Output端口连接到Timer模块的Trigger输入口。将Timer设为On Delay模式,Delay Time填写0.08秒。这个值是实际测试得出的最佳平衡点:如果低于0.06秒,路边轻微的草叶晃动就会误触发;如果高于0.12秒,等传感器反应过来时,车头可能已经撞上了障碍物。
构建双模避障逻辑电路
接下来进入逻辑电路部分,这里提供两个方案,你可以根据手头的材料和设计偏好来选择。
方法一(基础版:单传感器+方向轮询)
将Timer的输出接入Logic Block A,设为Greater Than模式,阈值填2.5米。再接入Logic Block B,设为Less Than模式,阈值填0.9米。将Logic Block A和B的输出同时连接到一个AND Gate,得到“中距预警信号”。
这个信号同时接入左右两个伺服电机的Enable端:左侧伺服Rotation设为-25度,右侧设为+25度。两个电机的Control端统一接入同一个Pulse Generator(周期1.8秒,脉宽0.1秒)。这样一来,每次收到预警信号时,车轮就会交替小角度转向,形成蛇形绕障轨迹——实用,但走位稍显笨拙。
方法二(进阶版:双传感器+方向锁定)
在车头左前侧和右前侧各加一个红外传感器,间距至少1.2米。左传感器→上升沿触发器→连接OR Gate输入1;右传感器→上升沿触发器→经过Inverter→连接OR Gate输入2。
当左传感器先触发时,OR Gate输出高电平,激活左侧伺服电机(Rotation = -35度),同时禁用右侧;反之则激活右侧电机(Rotation = +35度)。
【注意】两个上升沿触发器的Delay Time必须完全相同(建议0.05秒),否则微小的相位差会导致转向判定颠倒,车子会像喝醉了一样乱转。
执行转向与动力协同
转向系统方面,前轮必须使用Motor Joint类型,旋转轴设为Y轴(左右转向),Limit Rotation设为±40度。如果使用Wheel Joint替代,伺服信号无法传递,转向指令就会完全失效。
将逻辑层的最终输出信号(AND Gate或OR Gate的输出)连接到前轮Motor Joint的Rotate输入端。信号高电平时电机转动,信号断开后,Motor Joint自带的阻尼会自动回中——无需额外添加弹簧或制动器,设计上省心不少。
后轮保持固定驱动轮(Powered Wheel),动力线仍然连接原燃气引擎。但务必在引擎和后轮之间插入一个Throttle模块,其Input端接入同一逻辑输出信号的反向端(经过Inverter)。这样当避障信号为真时,油门降至40%,防止转向时后轮推力过大导致甩尾侧滑;信号为假时恢复100%,保证正常巡航速度。
实车校准与边界测试
装好车后,就该拉出去实际测试了。找一堵垂直砖墙,挂D档空载慢速驶向它。根据实战经验,有几个关键节点值得注意:距离缩至2.8米时,应该能听到伺服电机轻微的“咔哒”声(开始预加载);距2.2米时前轮首次微转;距1.1米时完成首次有效绕行。
如果绕行半径过大导致车体擦墙,就把Logic Block A的阈值降到2.3米。如果根本没有触发转向直接撞上去,请先检查红外传感器是否被车灯模型遮挡——【注意】车灯必须后置或改用无实体的LED Light,否则发光会严重干扰红外回波。
斜坡测试也不可忽视。在坡度超过8度的坡道上测试时,如果上坡避障失效,将Throttle模块的减速比例从40%调整到25%,避免动力不足导致转向迟滞。
最后别忘了这一关键步骤:将车停稳,靠近前轮Motor Joint,按E键打开属性面板,点击【Calibrate Rotation】按钮。如果不进行校准,伺服电机会默认“0度”位置,那么你之前设置的所有转角参数就全部白费了。
