You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Roblox中获取游戏手柄摇杆的位置?

获取游戏手柄摇杆位置的方法

在Roblox中,ContextActionService其实支持直接监听手柄摇杆的轴输入,通过回调参数里的inputObject就能获取摇杆的位置数据,不用额外找其他方法。具体实现步骤如下:

  • 绑定动作时,指定监听的摇杆轴(比如Thumbstick1左摇杆、Thumbstick2右摇杆)
  • 在回调函数中,通过inputObject.Position获取摇杆的位置,这是一个Vector2类型的值,X轴和Y轴的范围都是**-1到1**:
    • 左摇杆X轴:-1=左推,1=右推;Y轴:-1=下推,1=上推
    • 右摇杆同理

示例代码

local ContextActionService = game:GetService("ContextActionService")

-- 处理摇杆输入的回调函数
local function onJoystickInput(actionName, inputState, inputObject)
    -- 过滤手柄输入
    if inputObject.UserInputType:IsA("Enum.UserInputType.Gamepad") then
        -- 判断是左摇杆还是右摇杆
        if inputObject.KeyCode == Enum.KeyCode.Thumbstick1 then
            local stickPos = inputObject.Position
            -- 打印摇杆位置,可替换成你的转向逻辑
            print("左摇杆位置:X =", stickPos.X, "Y =", stickPos.Y)
            
            -- 可选:添加死区处理,过滤摇杆轻微晃动
            local DEADZONE = 0.1
            local turnAmount = stickPos.X
            if math.abs(turnAmount) > DEADZONE then
                -- 这里写你的转向代码,比如控制角色或相机转向
            end
        elseif inputObject.KeyCode == Enum.KeyCode.Thumbstick2 then
            local stickPos = inputObject.Position
            print("右摇杆位置:X =", stickPos.X, "Y =", stickPos.Y)
        end
    end
end

-- 绑定摇杆轴输入到动作
ContextActionService:BindAction(
    "HandleJoystick", 
    onJoystickInput, 
    false, 
    Enum.KeyCode.Thumbstick1, 
    Enum.KeyCode.Thumbstick2
)

关键点说明

  • inputObject.Position是实时更新的,只要摇杆有移动,回调就会触发并返回最新位置
  • 死区处理是可选的,但建议加上,避免摇杆微小偏移触发不必要的操作
  • 可以根据需求只监听单个摇杆(比如只绑定Thumbstick1处理转向)

内容的提问来源于stack exchange,提问作者KillerFrog11

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 09:30:50