Nhận dạng nhập 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 nhập người dùng với các hành động cho phép người dùng có được kiểm soát tốt hơn và thông minh hơn về 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 nạp lại với một chìa khóa cụ thể.

Bắt đầu

Hướng dẫn này sử dụng công cụ Blaster được tạo trong Creating Player Tools . Bạn có thể theo dõi những hướng dẫn đó để tạo công cụ hoặc bạn có thể tải mô hình Blaster và thêm vào 1> StarterPack1> .

Các mô hình có thể được thêm vào kho của bạn để được 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 một trình duyệt, mở trang mẫu, nhấp vào nút Lấy . Điều này thêm mô hình vào kho đồ của bạn.
  2. Trong Studio, đi đến Trang chủ tab và nhấp vào Hộp công cụ.
  3. Trong cửa sổ Toolbox, hãy nhấp vào nút Inventory . Sau đó, hãy đảm bảo rằng mục dưới cuộn dây ở My Models .
  4. Chọn mô hình Blaster để thêm vào trải nghiệm.

Tạo một Action Handler

Đầu tiên, bạn sẽ cần một chức năng để xử lý khi người dùng nhập.

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

  2. Tạo một biến để lưu tên 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 chức năng tên trênHành động nhận ba argument: actionName , inputStateinputObject . Đây sẽ là chức năng chạy khi người dùng nhập được.


    local tool = script.Parent
    local RELOAD_ACTION = "reloadWeapon"
    local function onAction(actionName, inputState, inputObject)
    end
    local function toolEquipped()
    tool.Handle.Equip:Play()
    end
  4. Trong hàm, kiểm tra rằng actionName đã trùng với tên hành động nạp lại và đảm bảo inputState đã được UserInputState.Begin (nguyên trạng khởi đầu). Điều này quan trọng vì hà


    local function onAction(actionName, inputState, inputObject)
    if actionName == RELOAD_ACTION and inputState == Enum.UserInputState.Begin then
    end
    end
  5. Để làm cho nó rõ ràng khi người dùng nạp lại, thay đổi TextureId của công cụ thành "rbxassetid://6593020923" cho một thời gian, sau đó thay đổi nó trở lại giá trị nguyên bản của nó <


    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

Kết Nối Hành Động

ContextActionService có thể được sử dụng để kết nối một chức năng với một lượng dữ liệu cụ thể bằng cách sử dụng chức năng BindAction, nhận nhiều lập trình:

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

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

  1. Nhận ContextActionService ở đầu trên của script.


    local ContextActionService = game:GetService("ContextActionService")
    local tool = script.Parent
    local RELOAD_ACTION = "reloadWeapon"
  2. Trong hàm toolEquipped, gọi BindAction và qua các引数 sau đây:

    • Tên hành động ( RELOAD_ACTION )
    • Người xử lý hành động ( onAction )
    • Một giá trị để tạo một nút chạm ( true )
    • Một phím nhấn để 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. Playtest bằng cách trang bị công cụ và nhấn R key on your keyboard. The backpack icon should momentarily change to a waiting symbol to signal that the weapon is reloading:

Huỷ kết nối hành động

Khi người dùng bỏ đồ dùng, hành động cần phải là unbound để họ không thể nạp lại mà không có công cụ được trang bị.

  1. Tạo một chức năng mới có tên là toolUnequipped và gọi UnbindAction , 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 đến sự kiện Unequipped để chức năng sẽ chạy khi sự kiện bắt đầu.


    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. Thử nghiệm để xác nhận rằng mọi thứ hoạt động đúng. Bạn nên có thể nạp lại khi công cụ được trang bị, nhưng không phải khi nó bị bỏ rơi.

Hoạt hình nạp đạn của bạn bây giờ đã hoàn thành - cho một thử thách bổ sung, hãy thử đếm một đếm ngược mỗi khi máy bay phóng thuốc nổ. Bạn có thể then deactivate the toolActivated function khi máy bay không có đạn, sau đó kích hoạt lại nó khi hoạt hình nạp đạn kết thúc