Create: Avionics

Create: Avionics

CC: Tweaked 外设,用于 Create: Simulated 和 Create: Aeronautics。

游戏机制

Create: Avionics

让你的飞艇自动驾驶。

为 Create: Aeronautics 中每个可仪表化的方块提供 CC: Tweaked 外设。读取姿态、高度、速度、航向。驱动油门、螺旋桨、气球气体。用 Lua 编写你的自动驾驶仪(这个宣传语不怎么样,但确实如此!)

构建

  • 热气球的高度保持
  • 螺旋桨飞行器的航向与俯仰自动驾驶仪
  • 绑定到方向盘的巡航控制
  • 用于车载土豆加农炮的跟踪炮塔
  • 任何你能为其编写控制回路的东西

开始

双引擎飞船的航向保持:

local nav        = peripheral.find("navigation_table")
local port, stbd = peripheral.find("analog_transmission")
local target     = nav.getHeadingRad()

while true do
    local err = (target - nav.getHeadingRad() + math.pi) % (2*math.pi) - math.pi
    local diff = math.max(-5, math.min(5, err * 4))
    port.setSignal(7 - diff); stbd.setSignal(7 + diff)
    sleep(0.05)
end

三个外设,一个 P 控制器,飞船锁定航向。每个 Aeronautics(以及几乎所有 Create)方块都是一个外设——读取传感器,设置执行器,编写你想要的回路。

不仅限于飞行器

同样的 peripheral.find() 接口驱动升降机、车辆以及你的整个旋转网络——不仅仅是会飞的东西。

Create Elevators —— 枚举楼层,呼叫轿厢,读取其位置:

local lift = peripheral.find("Create_ElevatorPulley")
lift.setTargetFloor(lift.getFloors()[3].y)   -- 将轿厢送到第 3 层
repeat sleep(0.1) until lift.isArrived()
print("已到达: " .. lift.getCurrentFloor().short_name)

Kinetic SCADA —— 遍历旋转网络,过载时报警:

local draw, capacity = 0, 0
for _, name in ipairs(peripheral.getNames()) do
    local p = peripheral.wrap(name)
    if p.getNetworkId then                       -- 任何动力方块
        draw     = draw     + p.getStressImpact()
        capacity = capacity + p.getStressContribution()
        if p.isOverstressed() then
            print("过载 " .. p.getSelfId() .. " (" .. p.getKind() .. ")")
        end
    end
end
print(("网络负载: %.0f / %.0f SU"):format(draw, capacity))

载具 —— 方向盘安装座的转向和刹车覆盖:

for _, w in ipairs({ peripheral.find("wheel_mount") }) do
    w.setSteering(0.5)                                       -- -1..1  ->  +/-30 度
    if w.getTouchingFriction() < 0.5 then w.setBrake(0) end  -- 在光滑表面上松开刹车
end

getKind、getSubnetworkAnchorId、getColumnContacts、getTouchingFriction —— 读取端和写入端一样丰富。

完整 API 文档 —— 单位、机体坐标系约定、每个方法。

阅读并行指南。5 Hz 和 20 Hz 的感觉截然不同。

安装

需要: MC 1.21.1 · NeoForge 21.1.219+ · Create 6.0.10+ · Simulated/Aeronautics/Offroad 1.2.1+ · Sable 1.1.0+ · CC: Tweaked 1.115+

搭配

ccc · create-computercraft

源码 · 问题

github.com/SolAstrius/CreateAvionics

MIT 许可。基于 Simulated 中 RyanHCode 的 CC 外设基础构建——NOTICE。

由本人创作,Sol Astrius Phoenix。