HapticService doesn't work with some controllers

HapticService seems to only like to work nicely on Microsoft branded controllers, if you buy a controller that’s not made by Microsoft like this PDP controller, HapticService goes haywire and makes the motors vibrate in a completely different way then you want it to,

In my case, when I do :SetMotor() you can’t turn it off with SetMotor() again. Instead, you have to wait about 5 seconds for it to turn off on its own.

HS:SetMotor(Enum.UserInputType.Gamepad1,1,0.1)
wait(0.2)
HS:SetMotor(Enum.UserInputType.Gamepad1,1,0) -- This doesnt make it turn off on non-microsoft controllers

Weird thing is, it seems to work just fine on every other non-roblox game.

It’d be nice if HapticService was more flexible to support controllers that aren’t made by Microsoft.

4 Likes

still a problem 8 months later
bought a cheapo xbox controller off of amazon to test controller bindings and I’m running into this same issue too

1 Like

I was recently trying to add haptic support to my game and for some reason you can not change haptic motors constantly.

You are able to turn them on however you cant turn them off or change them after that, they only turn off by themselves after 5 seconds.

This only happens on PDP controllers and is easy to replicate.

local HapticService = game:GetService("HapticService")
HapticService:SetMotor(Enum.UserInputType.Gamepad1,Enum.VibrationMotor.Small,1)
wait(0.5)
HapticService:SetMotor(Enum.UserInputType.Gamepad1,Enum.VibrationMotor.Small,0)

Running that code will keep the motor on even though it has been turned off.

2 Likes