There is this game called ‘Grave/Digger’ and a mechanic called ‘Charge’, when you charge and aim with shiftlock or first person, your character doesn’t immediately looks at the center of the screen, instead it makes the character slowly point towards the center of the screen.
looks like the player is ‘Drifting’ or something
i tried messing with the PlayerModule and other things but none can help me at all, can someone help me?
With other Perks in game, you can make the turn be faster
1 Like
AlignOrientation or BodyGyro can accomplish this.
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local player = Players.LocalPlayer
local camera = workspace.CurrentCamera
_G.slowturn = function() end -- Disabled by default
local enabled = false
local humanoid
local root
local align
local function update()
if not humanoid or not root or not align then
return
end
local locked = UserInputService.MouseBehavior == Enum.MouseBehavior.LockCenter
if enabled and locked then
humanoid.AutoRotate = false
align.Enabled = true
local look = camera.CFrame.LookVector
local flatLook = Vector3.new(look.X, 0, look.Z)
if flatLook.Magnitude > 0.001 then
align.CFrame = CFrame.lookAt(Vector3.zero, flatLook.Unit)
end
else
align.Enabled = false
humanoid.AutoRotate = true
end
end
local function setupCharacter(character)
humanoid = character:WaitForChild("Humanoid")
root = character:WaitForChild("HumanoidRootPart")
local attachment = root:FindFirstChild("TurnAttachment")
if not attachment then
attachment = Instance.new("Attachment")
attachment.Name = "TurnAttachment"
attachment.Parent = root
end
align = root:FindFirstChild("SmoothTurn")
if not align then
align = Instance.new("AlignOrientation")
align.Name = "SmoothTurn"
align.Attachment0 = attachment
align.Mode = Enum.OrientationAlignmentMode.OneAttachment
align.RigidityEnabled = false
align.Responsiveness = 8 -- Lower = slower turning
align.MaxTorque = math.huge
align.Enabled = false
align.Parent = root
end
update()
end
_G.slowturn = function(state)
enabled = state == true
update()
end
RunService.RenderStepped:Connect(update)
if player.Character then
setupCharacter(player.Character)
end
player.CharacterAdded:Connect(setupCharacter)
You have to put this in StarterPlayerScripts, and it can be enabled or disabled by calling _G.slowturn(true/false) in other LocalScripts.
You can also modify it to accept a “speed” parameter so you can adjust its speed by doing _G.slowturn(true, 16).
2 Likes
thanks twin i didnt knew it was that easy lol ![]()