cant really show any footage rn because my thing suddenly decided i cant attack the dummy i set up. but i think the humanoid isnt changing states or something? Edit: Also wanted to say, for some reason the ragdolls all have a choppy movement. Almost like they have a lower framerate compared to everything else.
In the RagdollR6 script I removed the NeckRequired set to false line and it worked fine for me, the ragdoll works properly and when I fall into the void, ragdolled or not, I will respawn. Hope this helps!
I had neck required set to false for my game and realised it wont be useful for others so ill update this and remove that line,
Bro you honestly just saved me hours of work
Does this work with Roblox’s new character controllers? Releasing Character Physics Controllers - #272 by Varonex_0
Yea should work fine as long as they dont break humanoid states.
ragdoll - Clipped with Medal.tv so I tried changing the boolValue ingame and as you can see, the character moves for a split second after the boolValue is set to true before returning to normal. I think it might be because of my script that handles humanoid states?
Here it is for reference:
Script
local RunService = game:GetService("RunService")
local ContextActionService = game:GetService("ContextActionService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local player = game.Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid : Humanoid = character:WaitForChild("Humanoid")
local humanoidRootPart: BasePart = character:WaitForChild("HumanoidRootPart")
local controllerManager: ControllerManager = character:WaitForChild("ControllerManager")
local groundController: GroundController = controllerManager:WaitForChild("GroundController")
local airController: AirController = controllerManager:WaitForChild("AirController")
local groundSensor: ControllerPartSensor = controllerManager.GroundSensor
local currentMovestyle = controllerManager:GetAttribute("CurrentMovestyle")
local Animations = require(ReplicatedStorage.Animations.Package.AnimationsClient)
local GrindBindable = ReplicatedStorage.Remotes.GrindBindable
local ShiftLockBindable = ReplicatedStorage.Remotes.ShiftLockBindable
local function updateMovementDirection()
local desiredDirection = humanoid.MoveDirection
controllerManager.MovingDirection = desiredDirection
if desiredDirection.Magnitude > 0 then -- Is the character currently moving?
controllerManager.FacingDirection = desiredDirection
else -- Character not moving
controllerManager.FacingDirection = controllerManager.RootPart.CFrame.LookVector
end
end
local function updateControllerManagerSensor()
local raycastParams = RaycastParams.new()
raycastParams.FilterDescendantsInstances = {character}
raycastParams.FilterType = Enum.RaycastFilterType.Exclude
local raycastToGround = workspace:Raycast(humanoidRootPart.Position, Vector3.new(0, -4.5, 0), raycastParams)
if raycastToGround then -- Character is running on the ground, raycast returned something
groundSensor.SensedPart = raycastToGround.Instance
groundSensor.HitNormal = raycastToGround.Normal
groundSensor.HitFrame = CFrame.new(raycastToGround.Position)
humanoid:ChangeState(Enum.HumanoidStateType.Running)
controllerManager.ActiveController = groundController
else -- Character is midair, raycast didn't return anything
humanoid:ChangeState(Enum.HumanoidStateType.Freefall)
controllerManager.ActiveController = airController
end
return controllerManager.ActiveController
end
local function doJump(actionName, inputState)
if actionName == "JUMP_ACTION" and inputState == Enum.UserInputState.Begin then
local jumpImpulse = Vector3.new(0, 550, 0) -- jump power
controllerManager.RootPart:ApplyImpulse(jumpImpulse)
-- Jumping anim changes based on current movestyle
local jumpTrack = Animations:GetTrack(string.format("%s.Jump", controllerManager:GetAttribute("CurrentMovestyle")))
jumpTrack.Looped = false
jumpTrack:Play()
humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
local floor = controllerManager.GroundSensor.SensedPart
if floor then
floor:ApplyImpulseAtPosition(-jumpImpulse, controllerManager.GroundSensor.HitNormal)
end
end
end
RunService.PreAnimation:Connect(function()
local currentController = updateControllerManagerSensor()
updateMovementDirection()
airController.MoveMaxForce = humanoidRootPart.AssemblyLinearVelocity.Magnitude * controllerManager.BaseMoveSpeed
if currentController == groundController and groundSensor.SensedPart.Name ~= "Rail" then
ContextActionService:BindAction("JUMP_ACTION", doJump, true, Enum.KeyCode.Space)
else
ContextActionService:UnbindAction("JUMP_ACTION")
end
end)
You are suppose to change the BoolValue from a server script since the joints are created on the server.
Try using a remote event and see if it works.
And for the humanoid states, just make sure you dont change it while the ragdoll is active.
Untitled - Clipped with Medal.tv Works like a charm, thanks! But is there a way you can think of that I can use to stop the HRP from staying upright? I already know how to restrict the player’s controls
This is because the humanoid state is not Enum.HumanoidState.Ragdoll
. In your LocalScript try checking is the BoolValue is set to true. If it is then set the HumanoidState to ragdoll.
This works! I just had to comment out the RunService connection that handles updating the controller and the sensors, but I’ll get around to having an actual implementation soon. If anyone’s using ragdolls with the character controllers, try this module!
flopping all over the place - Clipped with Medal.tv Here it is fully added into my game if you’re curious. Later I’m going to add ragdolling if you hit the ground while in the middle of a trick
Looks awesome! Can’t wait to see what your game turns into
Thank you!
Character minimum
flop rush cyberfunk - Clipped with Medal.tv Here it is, fully added! Doing a trick and then hitting the ground makes you flop/ragdoll. You can also hit P to ragdoll by yourself.
It’s not like your losing like 95% game performance, your only just loosing like 0.01%
.
anybody noticed that resetting makes your character look kinda laggy?
example (reset compared to ragdoll)
Yea I noticed this too but it probably has something to do with Roblox and not the script.
Set the character’s parts network owner to the player when they die