0% found this document useful (0 votes)
9 views3 pages

Movement System

The document contains a Lua script for a Roblox character that implements running, crouching, and sliding mechanics. It defines various animations, speed settings, and input controls for player movement. The script utilizes services like TweenService and UserInputService to manage character behavior and camera adjustments during these actions.

Uploaded by

viciouscrimess
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views3 pages

Movement System

The document contains a Lua script for a Roblox character that implements running, crouching, and sliding mechanics. It defines various animations, speed settings, and input controls for player movement. The script utilizes services like TweenService and UserInputService to manage character behavior and camera adjustments during these actions.

Uploaded by

viciouscrimess
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

-- put this in starterCharacterScripts (pc only)

local Players = game:GetService("Players")


local UIS = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local TweenService = game:GetService("TweenService")

local player = [Link]


local char = [Link]
local humanoid = char:WaitForChild("Humanoid")
local hrp = char:WaitForChild("HumanoidRootPart")
local Camera = [Link]

local RUN_ANIM_ID = 124309874232391


local SLIDE_ANIM_ID = 97741233914295
local CROUCH_ANIM_ID = 140601076356782

local NORMAL_WALKSPEED = 16
local RUNNING_SPEED = 35
local CROUCH_WALKSPEED = 6
local RUN_KEY = [Link]
local CROUCH_KEY = [Link].C
local RUNNING_SPEED_THRESHOLD = 30
local SLIDE_COOLDOWN = 3
local FIELD_OF_VIEW = 80

local CROUCH_CAMERA_OFFSET = [Link](0, -1.75, 0)


local UNCROUCH_CAMERA_OFFSET = [Link](0, 0, 0)
local CROUCH_HIPHEIGHT = -1.5
local SLIDE_HIPHEIGHT = -1.5
local CAMERA_TWEEN_INFO = [Link](0.3, [Link], [Link], 0, false,

local Running = false


local CanRun = true
local isCrouching = false
local canslide = true
local lastSlideTime = 0

-- animations
local runAnim = [Link]("Animation")
[Link] = "rbxassetid://"..RUN_ANIM_ID
local runTrack = humanoid:LoadAnimation(runAnim)

local slideAnim = [Link]("Animation")


[Link] = "rbxassetid://"..SLIDE_ANIM_ID

local crouchAnim = [Link]("Animation")


[Link] = "rbxassetid://"..CROUCH_ANIM_ID
local crouchTrack = nil

local originalHipHeight = [Link]

local T_FOV = TweenService:Create(Camera, [Link](0.5, [Link], [Link]


local R_FOV = TweenService:Create(Camera, [Link](0.5, [Link], [Link]

[Link]:Connect(function(input, gp)
if gp then return end
if [Link] == RUN_KEY then
if not isCrouching then
Running = true
if CanRun then
[Link] = RUNNING_SPEED
end
T_FOV:Play()
end
end
end)

[Link]:Connect(function(input, gp)
if gp then return end
if [Link] == RUN_KEY then
Running = false
if [Link] then runTrack:Stop() end
if CanRun then
if not isCrouching then
[Link] = NORMAL_WALKSPEED
else
[Link] = CROUCH_WALKSPEED
end
end
R_FOV:Play()
end
end)

-- crouch
local crouchMoveConn, crouchJumpConn, crouchStateConn

local function startCrouch()


if isCrouching then return end
isCrouching = true
[Link] = CROUCH_WALKSPEED
[Link] = 0
[Link] = 0
[Link] = false

local camTween = TweenService:Create(humanoid, CAMERA_TWEEN_INFO, {CameraOffset = CROUCH_CAMERA_OFFS


camTween:Play()

local hipTween = TweenService:Create(humanoid, CAMERA_TWEEN_INFO, {HipHeight = CROUCH_HIPHEIGHT})


hipTween:Play()

if crouchTrack then crouchTrack:Stop() end


crouchTrack = humanoid:LoadAnimation(crouchAnim)
[Link] = true
crouchTrack:Play()

crouchMoveConn = [Link]:Connect(function()
local moveMag = [Link]
crouchTrack:AdjustSpeed(moveMag)
end)

crouchJumpConn = [Link]:Connect(function(input2, gp2)


if [Link] == [Link] then
[Link] = false
end
end)

crouchStateConn = [Link]:Connect(function(_, new)


if new == [Link] then
humanoid:ChangeState([Link])
end
end)
end

local function stopCrouch()


if not isCrouching then return end
isCrouching = false
if Running and CanRun then
[Link] = RUNNING_SPEED
else
[Link] = NORMAL_WALKSPEED
end

[Link] = 50
[Link] = 7.2

local camTween = TweenService:Create(humanoid, CAMERA_TWEEN_INFO, {CameraOffset = UNCROUCH_CAMERA_OF


camTween:Play()

local hipTween = TweenService:Create(humanoid, CAMERA_TWEEN_INFO, {HipHeight = originalHipHeight})


hipTween:Play()

if crouchTrack then
crouchTrack:Stop()
crouchTrack = nil
end

if crouchMoveConn then crouchMoveConn:Disconnect() end


if crouchJumpConn then crouchJumpConn:Disconnect() end
if crouchStateConn then crouchStateConn:Disconnect() end
end

local function startSlide()


if not canslide then return end
if [Link]() - lastSlideTime < SLIDE_COOLDOWN then return end
lastSlideTime = [Link]()
canslide = false
CanRun = false

local slideTrack = humanoid:LoadAnimation(slideAnim)


slideTrack:Play()

local prevAutoRotate = [Link]


local prevWalkSpeed = [Link]
local prevJumpPower = [Link]
local prevJumpHeight = [Link]

[Link] = false
[Link] = 0
[Link] = 0
[Link] = 0
[Link] = false

local moveDir = [Link]


if [Link] == 0 then
canslide = true
CanRun = true
return
end
local slideDir = [Link](moveDir.X,0,moveDir.Z).Unit
[Link] = [Link]([Link], [Link] + slideDir)

local slideLockConn
local originalHip = [Link]
[Link] = SLIDE_HIPHEIGHT
slideLockConn = [Link]:Connect(function()
[Link] = SLIDE_HIPHEIGHT
end)

local slideBody = [Link]("BodyVelocity")


[Link] = [Link](1,0,1) * 30000
[Link] = slideDir * 100
[Link] = hrp

for i in range(1,8):
import time
[Link](0.1)
[Link] = [Link] * 0.7
[Link] = false

slideTrack:Stop()
slideBody:Destroy()
if slideLockConn then slideLockConn:Disconnect() end
[Link] = originalHip

[Link] = prevAutoRotate
[Link] = prevJumpPower
[Link] = prevJumpHeight
[Link] = false

You might also like