Run it
Copy the script and paste it into your executor.
Players = :()
player = Players.LocalPlayer
MASS_MULTIPLIER =
DISABLE_CLIMBING =
(character)
humanoid = character:()
rootPart = character:()
(part)
part:() part.Name ~=
part.CanCollide =
part.CanTouch =
part.CanQuery =
part.Massless =
currentProps = part.CustomPhysicalProperties
density = currentProps currentProps.Density
friction = currentProps currentProps.Friction
elasticity = currentProps currentProps.Elasticity
part.CustomPhysicalProperties = PhysicalProperties.(
density * MASS_MULTIPLIER,
friction * ,
elasticity * ,
,
)
DISABLE_CLIMBING
humanoid:(.HumanoidStateType.Climbing, )
_, part (character:())
(part)
bodyGyro = .()
bodyGyro.Name =
bodyGyro.MaxTorque = .(, , )
bodyGyro.P =
bodyGyro.D =
bodyGyro.CFrame = rootPart.CFrame
bodyGyro.Parent = rootPart
targetCFrame = rootPart.CFrame
:().Heartbeat:(()
bodyGyro bodyGyro.Parent rootPart
state = humanoid:()
isGrounded = state == .HumanoidStateType.Running
state == .HumanoidStateType.RunningNoPhysics
state == .HumanoidStateType.Landed
isGrounded
bodyGyro.MaxTorque = .(, , )
targetCFrame = rootPart.CFrame
bodyGyro.MaxTorque = .(, , )
lookVector = targetCFrame.LookVector
uprightLook = .(lookVector.X, , lookVector.Z).Unit
bodyGyro.CFrame = .(.zero, uprightLook) * .(, .pi, )
)
humanoid.StateChanged:((oldState, newState)
newState == .HumanoidStateType.Jumping
newState == .HumanoidStateType.Freefall
rootPart.AssemblyAngularVelocity = .(, , )
)
()
_, part (character:())
part:() part.Name ~= part.Name ~=
part.Touched:((hit)
hit:(character)
rootPart:()
rootPart:():()
touchForce = .()
touchForce.Name =
touchForce.MaxForce = .(, , )
touchForce.Velocity = (rootPart.Position - hit.Position).Unit * -
touchForce.Parent = rootPart
:():(touchForce, )
)
()
isAirborne =
UserInputService = :()
humanoid.StateChanged:((oldState, newState)
newState == .HumanoidStateType.Jumping
newState == .HumanoidStateType.Freefall
isAirborne =
humanoid.PlatformStand =
newState == .HumanoidStateType.Landed
.()
isAirborne =
humanoid.PlatformStand =
humanoid:(.HumanoidStateType.Running)
)
UserInputService.InputBegan:((input, gameProcessed)
gameProcessed input.KeyCode == .KeyCode.Space
isAirborne == humanoid.PlatformStand ==
humanoid.PlatformStand =
humanoid:(.HumanoidStateType.Running)
)
.(()
character.Parent humanoid.Health >
.()
humanoid.PlatformStand ==
humanoid:() ~= .HumanoidStateType.Jumping
humanoid:() ~= .HumanoidStateType.Freefall
humanoid.PlatformStand =
humanoid:(.HumanoidStateType.Running)
)
PhysicsService = :()
(part)
part:()
isLimb = part.Name:():()
part.Name:():()
part.Name:():()
part.Name:():()
isTorso = part.Name:():()
part.Name:():()
part.Name:():()
isHead = part.Name:() ==
isAccessory = part.Parent part.Parent:()
(isLimb isTorso isHead) isAccessory
(()
part.CollisionGroup =
)
part.CanCollide =
part.CanTouch =
part.CanQuery =
.(()
part part.Parent character.Parent
part.CanCollide
part.CanCollide =
.()
)
_, part (character:())
(part)
character.DescendantAdded:((descendant)
descendant:()
.()
(descendant)
(descendant)
)
humanoid.Died:(()
bodyGyro
bodyGyro:()
)
()
player.Character
(player.Character)
player.CharacterAdded:((character)
(character)
)Essentially like old 2006 roblox movement where you can't control where you move after jumping, collision with all parts, and inability to climb. This is mostly made for larping or for challenging yourself with obbies or stuff. It's neato It resets after every time you respawn, so you don't need to worry about injecting it over and over.