ContextActionService是一种游戏服务,允许游戏将用户输入绑定到上下文动作,或仅在某些条件或时间段下启用的动作。例如,只允许玩家在关门时打开门。在代码中,动作只是服务用来区分独特动作的字符串(动作的名称)。操作字符串提供给BindAction和UnbindAction以及其他成员函数。如果两个操作绑定到同一个输入,则最近绑定的操作将具有优先级。当最近的操作被解除绑定时,之前绑定的操作将再次获得控制权。由于ContextActionService处理用户输入,因此只能在客户端上运行的LocalScripts中使用它
local ContextActionService = game:GetService("ContextActionService")
ContextActionService:BindContext("WkeydownactionName", function(actionName, inputState, inputObj)
if inputState == Enum.UserInputState.InputBegin.Value then
print("ContextActionService begin", actionName)
else
print("ContextActionService end", actionName)
end
end, false, Enum.KeyCode.W )
local ContextActionService = game:GetService("ContextActionService")
local curActionName = "moveForwardAction"
local function handleMoveForward(actionName, inputState, inputObj)
print(actionName)
if inputState == Enum.UserInputState.InputBegin.Value then
self.ForwardBackValue = 1
else
self.ForwardBackValue = 0
end
self.LocalCharacter:Move(Vector3.New(self.LeftRightValue,0,self.ForwardBackValue),true)
end
ContextActionService:BindAction(
curActionName,
handleMoveForward,
Enum.ContextActionType.KeyBoard.Value,
Enum.KeyCode.W.Value )