Hướng dẫn trung cấp

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 giúp người dùng có quyền 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ải nghiệm của bạn. Trong hướng dẫn này, bạn sẽ liên kết một hành động làm mớ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ụ cho người chơi. Bạn có thể làm theo 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.

Mô hình có thể được thêm vào Kho đồ của bạn để sử dụng giữa bất kỳ trải nghiệm nào. Để thêm một mô hình vào trải nghiệm của bạn:

  1. Trong trình duyệt, mở trang mô hình, nhấn nút Get. Điều này sẽ thêm mô hình vào kho đồ của bạn.
  2. Từ menu Window của Studio hoặc thanh công cụ tab Home, mở Toolbox và chọn tab Inventory.
  3. Đảm bảo rằng menu thả xuống đang ở chế độ My Models.
  4. Chọn mô hình Blaster để thêm nó vào trải nghiệm.

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

Trước 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 của Blaster.

    Hình ảnh của Explorer nơi kịch bản ToolController bên trong của công cụ Blaster được chọn

  2. Tạo một biến để lưu trữ một 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 tham số: actionName, inputState, và inputObject. Đây sẽ là hàm được 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 có khớp với tên hành động làm mớ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 hành động làm mới chỉ cần diễn 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 người dùng làm mới trở nên rõ ràng, hãy thay đổi TextureId của công cụ thành "rbxassetid://6593020923" trong một khoảng thời gian, và sau đó đổi lại thành giá trị gốc 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

Ràng buộc hành động

ContextActionService có thể được sử dụng để ràng buộc một hàm cho một đầu vào cụ thể bằng cách sử dụng hàm BindAction, 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").
  • Liệu 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 đủ về mã có thể được tìm thấy tại đây.

  1. Lấy ContextActionService ở đầu kịch bản.


    local ContextActionService = game:GetService("ContextActionService")
    local tool = script.Parent
    local RELOAD_ACTION = "reloadWeapon"
  2. 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)
    • Bộ xử lý hành động (onAction)
    • Một giá trị để tạo một nút cảm ứng (true)
    • Một phím bấ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. Hình ảnh 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 làm mới:

Hủy ràng buộc hành động

Khi người dùng bỏ trang bị công cụ, hành động cần được hủy ràng buộc để họ không thể làm mới mà không có công cụ đang đượ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 xảy ra.


    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 chính xác. Bạn nên có thể làm mới khi công cụ được trang bị, nhưng không thể làm khi nó đã được bỏ trang bị.

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

©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.