Ragdoll, issue m6d resetting themselves

I have a ragdoll, I want to connect the players foot to a constraint so they float in the air but when I do that and the player is in ragdoll it tries to automatically reset the motor6ds is there a way to stop it? I tries disabling them and I fell through the floor.


look at the bottom left corner it stops resetting the m6d when u die

Hmm, have you tried disabling the Motor6d by setting the .Enabled property to false?

I believe the issue might be to do with the animate script of the humanoid, but I’m not sure at all.

I did mention maybe I didn’t explain it well (most likely) but when I did disable the motor6d I fell through the ground. The animate script is also disabled when I go into ragdoll mode.

Hello 1_upz

You can try this script bellow which is a kinda temp ragdoll script I found it with some people who were having kinda the same problem :

– Edit the script based off of what your working on.

local Character = game.Players.LocalPlayer.Character
local Hm = Character:WaitForChild(“Humanoid”)
local HmHRP = Character.HumanoidRootPart
local UIS = game:GetService(“UserInputService”)
local Ragdolling = Instance.new(“BoolValue”)
Ragdolling.Value = false
Ragdolling.Parent = Character
local SocketType = “BallSocketConstraint”
local RagdollKey = Enum.KeyCode.R – Chose what you’d put…

if input.KeyCode == RagdollKey then
local PlayerParts = Character:GetDescendants()
for i,M6D in pairs(PlayerParts) do
if M6D:IsA(“Motor6D”) then
if M6D.Name ~= “Root” then
if not M6D.Parent:FindFirstChildWhichIsA(SocketType) then
local Socket = Instance.new(SocketType)
M6D.Parent = M6D.Part1
Socket.LimitsEnabled = true
Socket.Radius = .25
Socket.TwistLimitsEnabled = false
Socket.TwistLowerAngle = 360
Socket.TwistUpperAngle = -180
Socket.UpperAngle = 90
local M0,M1
if not M6D.Part0:FindFirstChild(M6D.Name … “RigAttachment”) then
M0 = Instance.new(“Attachment”)
M0.Name = M6D.Name … “RigAttachment”
M0.Parent = M6D.Part0
M0.CFrame = M6D.C0
print(M0.Name … “A0”)
if not M6D.Part1:FindFirstChild(M6D.Name … “RigAttachment”) then
M1 = Instance.new(“Attachment”)
M1.Name = M6D.Name … “RigAttachment”
M1.Parent = M6D.Part1
M1.CFrame = M6D.C1
print(M1.Name … “A1”)
Socket.Parent = M6D.Parent
Socket.Attachment0 = M6D.Part0:FindFirstChild(M6D.Name … “RigAttachment”)
Socket.Attachment1 = M6D.Part1:FindFirstChild(M6D.Name … “RigAttachment”)
game.Workspace.CurrentCamera.CameraSubject = Character.Head
M6D.Enabled = false
Ragdolling = true
HmHRP.CanCollide = false

if input.KeyCode == RagdollKey then
local PlayerParts = Character:GetDescendants()
if Ragdolling == true then
for i,M6DBSC in pairs(PlayerParts) do
if M6DBSC:IsA(SocketType) then
elseif M6DBSC:IsA(“Motor6D”) then
M6DBSC.Enabled = true
HmHRP.CFrame = HmHRP.CFrame + Vector3.new(0,2,0)
HmHRP.CanCollide = true
game.Workspace.CurrentCamera.CameraSubject = Character.Humanoid


Good idea, I think this confirms my suspicion that its the fault of the humanoid and thats why it works when the humanoid dies. It’s probably to do with the humanoid state type.

Edit: Hmm,

Did you replace the motor6d with a ball socket constraint like the example script? If not then the limb probably detached and thats why the player fell through the ground.

Yeah, I hope that helped you with your problem. @1_upz

I found out that disabling everything except the Root Motor6D works great.

1 Like