Phát hiện đầu vào của người dùng

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

Kết nối đầu vào của người dùng với các hành động mang lại cho người dùng khả năng kiểm soát tốt hơn và trực quan hơn đối với các tính năng của trò chơi của bạn. Trong hướng dẫn này, bạn sẽ liên kết một hành động nạp lại với một phím cụ thể.

Bắt đầu

Hướng dẫn này sử dụng công cụ Blaster được tạo ra trong Tạo Công Cụ Người Chơi. Bạn có thể làm theo các hướng dẫn đó để tạo công cụ hoặc bạn có thể tải xuống mô hình Blaster và chèn nó vào StarterPack.

Các mô hình có thể được thêm vào Kho của bạn để sử dụng giữa bất kỳ trò chơi nào. Để thêm một mô hình vào trò chơi của bạn:

  1. Trong trình duyệt, mở trang mô hình, nhấp vào nút Lấy. Điều này sẽ thêm mô hình vào kho của bạn.
  2. Từ menu Cửa sổ của Studio hoặc thanh công cụ Trang chủ, mở Toolbox và chọn tab Kho.
  3. Đảm bảo rằng menu thả xuống đang ở Mô hình của tôi.
  4. Chọn mô hình Blaster để thêm nó vào trò chơi.

Tạo một trình xử lý hành động

Đầu tiên, bạn sẽ cần một hàm để xử lý khi đầu vào của người dùng được phát hiện.

  1. Mở LocalScript ToolController bên trong Blaster.

    Xem của Explorer nơi mà script ToolController bên trong công cụ Blaster được chọn

  2. Tạo một biến để lưu trữ tên cho hành động.

    local tool = script.Parent
    local RELOAD_ACTION = "reloadWeapon"
    local function toolEquipped()
    tool.Handle.Equip:Play()
    end
    local function toolActivated()
    tool.Handle.Activate:Play()
    end
    tool.Equipped:Connect(toolEquipped)
    tool.Activated:Connect(toolActivated)
  3. Tạo một hàm có tên onAction nhận ba đối số: actionName, inputState, và inputObject. Đây sẽ là hàm chạy khi đầu vào của người dùng được phát hiện.

    local tool = script.Parent
    local RELOAD_ACTION = "reloadWeapon"
    local function onAction(actionName, inputState, inputObject)
    end
    local function toolEquipped()
    tool.Handle.Equip:Play()
    end
  4. Bên trong hàm, kiểm tra rằng actionName cho trước khớp với tên hành động nạp lại và đảm bảo rằng inputStateUserInputState.Begin (trạng thái bắt đầu). Điều này rất quan trọng vì hàm sẽ chạy mỗi khi inputState thay đổi, nhưng việc nạp lại chỉ cần xảy ra một lần.

    local function onAction(actionName, inputState, inputObject)
    if actionName == RELOAD_ACTION and inputState == Enum.UserInputState.Begin then
    end
    end
  5. Để làm cho việc nạp lại của người dùng trở nên rõ ràng, hãy thay đổi TextureId của công cụ thành "rbxassetid://6593020923" trong một khoảnh khắc, và sau đó thay đổi lại thành giá trị ban đầu của nó là "rbxassetid://92628145".

    local function onAction(actionName, inputState, inputObject)
    if actionName == RELOAD_ACTION and inputState == Enum.UserInputState.Begin then
    tool.TextureId = "rbxassetid://6593020923"
    task.wait(2)
    tool.TextureId = "rbxassetid://92628145"
    end
    end

Liên kết hành động

ContextActionService có thể được sử dụng để liên kết một hàm với một đầu vào cụ thể bằng cách sử dụng hàm BindAction, hàm này chấp nhận một số đối số:

  • Tên của hành động.
  • Hàm để xử lý hành động (còn được gọi là "callback").
  • Có nên hiển thị một nút cảm ứng hay không.
  • Bất kỳ số lượng Enum.KeyCodes nào để phát hiện và liên kết với hành động.

KeyCodes là các giá trị đại diện cho các nút đầu vào khác nhau, chẳng hạn như phím bàn phím hoặc nút điều khiển. Một danh sách đầy đủ các mã có sẵn tại đây.

  1. Lấy ContextActionService ở đầu script.

    local ContextActionService = game:GetService("ContextActionService")
    local tool = script.Parent
    local RELOAD_ACTION = "reloadWeapon"
  2. Bên trong hàm toolEquipped, gọi BindAction và truyền qua các đối số sau:

    • Tên của hành động (RELOAD_ACTION)
    • Trình xử lý hành động (onAction)
    • Một giá trị để tạo một nút cảm ứng (true)
    • Một lần nhấn phím để phát hiện (Enum.KeyCode.R)
    local RELOAD_ACTION = "reloadWeapon"
    local function onAction(actionName, inputState, inputObject)
    if actionName == RELOAD_ACTION and inputState == Enum.UserInputState.Begin then
    tool.TextureId = "rbxassetid://6593020923"
    task.wait(2)
    tool.TextureId = "rbxassetid://92628145"
    end
    end
    local function toolEquipped()
    ContextActionService:BindAction(RELOAD_ACTION, onAction, true, Enum.KeyCode.R)
    tool.Handle.Equip:Play()
    end
  3. Chơi thử bằng cách trang bị công cụ và nhấn phím R trên bàn phím của bạn. Biểu tượng ba lô nên thay đổi tạm thời thành một biểu tượng chờ để báo hiệu rằng vũ khí đang nạp lại:

Hủy liên kết hành động

Khi người dùng bỏ trang bị công cụ, hành động cần được hủy liên kết để họ không thể nạp lại mà không có công cụ được trang bị.

  1. Tạo một hàm mới có tên toolUnequipped và gọi UnbindAction, truyền qua tên hành động.

    local function toolEquipped()
    ContextActionService:BindAction(RELOAD_ACTION, onAction, true, Enum.KeyCode.R)
    tool.Handle.Equip:Play()
    end
    local function toolUnequipped()
    ContextActionService:UnbindAction(RELOAD_ACTION)
    end
    local function toolActivated()
    tool.Handle.Activate:Play()
    end
    tool.Equipped:Connect(toolEquipped)
    tool.Activated:Connect(toolActivated)
  2. Kết nối hàm toolUnequipped với sự kiện Unequipped để hàm sẽ chạy khi sự kiện được kích hoạt.

    local ContextActionService = game:GetService("ContextActionService")
    local tool = script.Parent
    local RELOAD_ACTION = "reloadWeapon"
    local function onAction(actionName, inputState, inputObject)
    if actionName == RELOAD_ACTION and inputState == Enum.UserInputState.Begin then
    tool.TextureId = "rbxassetid://6593020923"
    task.wait(2)
    tool.TextureId = "rbxassetid://92628145"
    end
    end
    local function toolEquipped()
    ContextActionService:BindAction(RELOAD_ACTION, onAction, true, Enum.KeyCode.R)
    tool.Handle.Equip:Play()
    end
    local function toolUnequipped()
    ContextActionService:UnbindAction(RELOAD_ACTION)
    end
    local function toolActivated()
    tool.Handle.Activate:Play()
    end
    tool.Equipped:Connect(toolEquipped)
    tool.Unequipped:Connect(toolUnequipped)
    tool.Activated:Connect(toolActivated)
  3. Chơi thử để xác nhận rằng mọi thứ hoạt động đúng cách. Bạn nên có thể nạp lại khi công cụ được trang bị, nhưng không khi nó không được trang bị.

Hoạt hình nạp lại của bạn giờ đã hoàn thành - để có một thử thách thêm, hãy thử đếm ngược một bộ đếm đạn mỗi khi blaster được bắn. Sau đó, bạn có thể vô hiệu hóa hàm toolActivated khi súng không còn đạn, sau đó kích hoạt lại nó khi hoạt hình nạp lại hoàn tất.

©2026 Roblox Corporation. Roblox, logo Roblox và Powering Imagination là các nhãn hiệu đã đăng ký và chưa đăng ký của chúng tôi tại Hoa Kỳ và các quốc gia khác.