跳转至

操纵杆 2

操纵杆 2

操纵杆 2 安装在控制台上,可以向任意方向倾斜,最大 15°:前推(默认 W)、后拉(S)、左摆(A)、右摆(D)。松开按键后自动回到中心。

右手设计

该操纵杆为右手设计。推荐安装位置如上图所示,如果安装在其他位置,需要自行修改按键绑定。

摆动模式

两个轴(前后 / 左右)各自独立配置:

  • 自由模式(默认):操纵杆平滑摆动。满偏时间(tick)控制按住按键到满偏所需时间(默认 2,范围 1..100);回正时间(tick)控制松开后回到中心所需时间(默认 2,范围 0..100;0 = 不回正,操纵杆停在当前位置)。20 tick = 1 秒。
  • 档位模式:操纵杆不再平滑摆动,而是吸附到离散档位。档位数:1..31(默认 4)。档位从 -1 到 +1 均匀分布(如 4 档 → {-1, -1/3, +1/3, +1};3 档 → {-1, 0, +1};2 档 → {-1, +1})。每按一次按键进/退一档(按住不连跳),且没有自动回正 —— 离开坐垫后操纵杆仍保持所在档位,类似物理换挡杆。

按键绑定

方向 默认按键
前推 / 后拉 W / S
左摆 / 右摆 A / D

四个方向按键都跟随控制台,可在模块设置菜单中配置(打开控制台配置菜单,点击「操纵杆 2」行)。按键绑定与普通操纵杆相互独立 —— 两个控件可以同时安装、各自配置。

Lua API

local ss = require("ccpe.sensor_system")
local desk = ss.getPeripheral(4)
local joy2 = desk.getModule("joystick_2")   -- 未安装操纵杆 2 返回 nil

joy2.isAxisXActive() / joy2.isAxisYActive()

该轴任意方向键按住时返回 true(X = 左右,Y = 前后)。

joy2.getAxisX() / joy2.getAxisY()

返回该轴的幅度(数值,0..1)—— 操纵杆在该轴上的偏转程度,不含方向。

print(joy2.getAxisX(), joy2.getAxisY())   -- 0..1

joy2.getAxisXSigned() / joy2.getAxisYSigned()

返回带符号的轴值(数值,-1..1):+1 = 右摆(D)/ 前推(W),-1 = 左摆(A)/ 后拉(S)。

print(joy2.getAxisXSigned(), joy2.getAxisYSigned())

所有方法都是 mainThread = false(跑在 CC worker 线程),可以高频轮询。

示例

local ss = require("ccpe.sensor_system")
local desk = ss.getPeripheral(4)
local joy2 = desk.getModule("joystick_2")

while true do
    local forward = joy2.getAxisYSigned()  -- -1..1,推力
    local steer   = joy2.getAxisXSigned()  -- -1..1,转向
    print(("forward %.2f  steer %.2f"):format(forward, steer))
    os.sleep(0.05)
end