Binding Movement Keys doesn't work properly

  1. What do you want to achieve? Keep it simple and clear!

I would like to unbind/sink movement keys and rebind them for different purposes.

  1. What is the issue? Include screenshots / videos if possible!

Sinking movement keys works fine, but I am having trouble binding them for different use. The bind is created but it won’t pass to the function.

My code to sink movement function:

local cas = game:GetService("ContextActionService")

local function sink()
	return Enum.ContextActionResult.Sink
end

----Sink movement keys
cas:BindActionAtPriority(
	"MovementSink",sink,false,
	Enum.ContextActionPriority.High.Value,
	Enum.PlayerActions.CharacterLeft,
	Enum.PlayerActions.CharacterRight,
	Enum.PlayerActions.CharacterForward,
	Enum.PlayerActions.CharacterBackward
)

As I said, this works just fine for sinking. However binding w to a different function just doesn’t work.

Here’s my bind code and function code:

-- Function that should be for W
local function forward (actionName, InputState)
	print("1")
	if actionName == "forward" then
		
		if InputState == Enum.UserInputState.Begin then
			flying = true
			
			force.Force = force.Force + (Vector3.new(1,1,1) * camera.CFrame.LookVector.Unit)
			print(force.Force)
			
		elseif InputState == Enum.UserInputState.End then
			flying = false
			
			force.Force = force.Force - Vector3.new(speed,0,0)
		end
	end
	
end

cas:BindAction("forward",forward,false,Enum.KeyCode.W)
  1. What solutions have you tried so far? Did you look for solutions on the Developer Hub?

I can just dial WalkSpeed to 0 and it will work fine as i wont need to sink movement keys, however, I would rather disable movement keys entirely than set them to what I want.

Its worth noting changing the key from W to any other key that I didn’t sink works. Also, the sinking code and the function code are in two different scripts.

The problem here is the priority, you should use BindActionAtPriority for the forward action.

cas:BindAction("forward", forward, false, Enum.ContextActionPriority.High.Value + 1, Enum.KeyCode.W)

2 Likes

Thank you, it now passes the function. Although in case anyone reads the thread i had to change “BindAction” to “BindActionAtPriority”

1 Like