사용자 입력 감지

*이 콘텐츠는 AI(베타)를 사용해 번역되었으며, 오류가 있을 수 있습니다. 이 페이지를 영어로 보려면 여기를 클릭하세요.

사용자 입력을 작업에 연결하면 사용자가 경험의 기능에 대해 훨씬 더 나은 및 직관적인 제어를 할 수 있습니다.이 자습서에서는 특정 키에 재로드 작업을 바인딩하는 방법을 살펴봅니다.

시작하기

이 자습서에서는 블래스터 도구를 사용하여 플레이어 도구 생성에서 생성된 도구를 사용합니다.이 지침을 따라 도구를 만들거나 블래스터 모델을 다운로드하여 스타터 팩 에 삽입할 수 있습니다.

모델은 경험 간에 사용되도록 인벤토리에 추가될 수 있습니다. 경험에 모델을 추가하려면:

  1. 브라우저에서 모델 페이지를 열고 가져오기 버튼을 클릭하십시오. 이렇게 하면 모델이 인벤토리에 추가됩니다.
  2. Studio에서 보기 탭으로 이동하고 도구 상자 를 클릭하십시오.
  3. 도구 상자 창에서 재고 버튼을 클릭하십시오. 그런 다음 드롭다운이 내 모델 에 있는지 확인하십시오.
  4. 경험에 추가할 블래스터 모델을 선택하십시오.

액션 처리기 생성

먼저, 사용자 입력이 감지될 때 처리할 함수가 필요합니다.

  1. 블래스터 내부에서 툴컨트롤러 LocalScript

  2. 변수를 만들어 액션이름을 저장합니다.


    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. onAction라는 함수를 만들어 세 가지 인수를 받습니다: actionName, inputState, 그리고 inputObject.사용자 입력이 감지될 때 실행되는 함수가 됩니다.


    local tool = script.Parent
    local RELOAD_ACTION = "reloadWeapon"
    local function onAction(actionName, inputState, inputObject)
    end
    local function toolEquipped()
    tool.Handle.Equip:Play()
    end
  4. 함수 내에서 지정된 actionName 가 재로드 작업 이름과 일치하고 inputStateUserInputState.Begin 인지(시작 상태) 확인합니다.이는 함수가 변경될 때마다 inputState 실행되지만 재설정은 한 번만 필요하기 때문에 중요합니다.


    local function onAction(actionName, inputState, inputObject)
    if actionName == RELOAD_ACTION and inputState == Enum.UserInputState.Begin then
    end
    end
  5. 사용자가 다시 로드할 때 명확하게 하려면 도구의 TextureId 를 잠시 동안 "rbxassetid://6593020923" 로 변경한 다음 원래 값인 "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

동작 액션

는 여러 인수를 받는 함수를 사용하여 특정 입력에 함수를 바인딩하는 데 사용할 수 있습니다:

  • 액션이름
  • 작업을 처리하는 함수(콜백이라고도 함)
  • 터치스크린 버튼을 표시해야 하는지 여부
  • 액션을 감지하고 연결하기 위한 모든 금액의 Enum.KeyCodes

키코드는 키보드 키나 컨트롤러 버튼과 같은 다양한 입력 버튼을 나타내는 값입니다.전체 코드 목록이 사용 가능합니다 here .

  1. 스크립트 상단에 ContextActionService를 가져옵니다.


    local ContextActionService = game:GetService("ContextActionService")
    local tool = script.Parent
    local RELOAD_ACTION = "reloadWeapon"
  2. toolEquipped 함수 내부에서 BindAction 를 호출하고 다음 인수를 통과합니다:

    • 작업의 이름( RELOAD_ACTION )
    • 액션 처리기( onAction )
    • 터치 버튼을 만드는 값( true )
    • 검색하려는 키 누르기( 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. 도구를 장착하고 키보드에서 R 키를 누르면 플레이테스트가 수행됩니다.백팩 아이콘은 무기가 재장전 중임을 알리기 위해 잠시 대기 기호로 변경해야 합니다:

동작 액션

사용자가 도구를 장착 해제하면 작업은 해제 되어야 도구가 장착되지 않은 상태에서 다시 로드할 수 없습니다.

  1. 새로운 함수 toolUnequipped 를 생성하고 작업 이름을 통해 UnbindAction 를 호출하십시오.


    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. toolUnequipped 함수를 이벤트 Unequipped에 연결하여 함수가 이벤트가 발생할 때 실행되도록 합니다.


    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. 모든 것이 올바르게 작동하는지 확인하기 위해 플레이테스트를 수행하십시오. 도구가 장착되었을 때 재로드할 수 있지만, 장착되지 않았을 때는 재로드할 수 없습니다.

재장전 애니메이션이 완료되었습니다. - 추가 도전을 위해, 블래스터가 발사될 때마다 탄약 카운터를 카운트하세요.총에 탄약이 없을 때 toolActivated 함수를 비활성화한 다음 재장전 애니메이션이 완료되면 다시 활성화할 수 있습니다.