I wouldn’t tie the footsteps to the character controller directly. What I would do is probably go into your walk animation, then add an animation event on each keyframe where the character’s foot touches the ground. Then I’d connect a function to those events that makes a footstep sound/effect every time the event fires
fair enough because i managed to get some code working with the character controller and was awfull… so i will probably do that ty
For some reason this method isnt working for me by now (since im using roblox animate script) though i edited it changed the anims by the ones with the events added the getreachedmarker signal thingy at line 267 but still nothing so idk what to do tbfr
i might replace it by a better one or custom coded one
Hi, this tutorial has been great help for me! but i was wondering if there was a way to completely remove the use of humanoids? as right now i’m not sure how to go about doing so.
Hi, nice tutorial!, one question, what’s the music you used in your movement demo 2 video?, it’s cool
GET ENUF by Hideki Naganuma!
<827393288374282828> (character limit)
Unfortunately there isnt really a good way to replace Humanoids without flaws (one of the biggest, if youre making client-client replicated humanoids, is the server cant physically see where the character is), however these flaws arent too big and the one I mentioned can be fixed using attributes.
I myself have designed a client-client replicated Humanoid alternative which anchors the HRP called FastHumanoid (however it doesnt deal with vertical and horizontal collisions too well because I forgot to give the character a collision hitbox :P), you can check out the source code if you don’t know where to start
Alright, i’ll probably have a look, thanks, i think i might just create a custom character controller so i can have more control over player movement, which is a crucial aspect of my game.
im trying to make climbing work like the climbing state in humanoids with the controller manager’s ClimbController and ClimbSensor but i have no idea how to go about making this. I want to understate how did Humanoids detect ladder parts or truffel parts
local function updateControllerManagerSensor()
local raycastParams = RaycastParams.new()
raycastParams.FilterDescendantsInstances = {character} -- Character should not be included within things that the raycast can return
raycastParams.FilterType = Enum.RaycastFilterType.Exclude
local raycastToGround = workspace:Raycast(humanoidRootPart.Position, Vector3.new(0, -4.5, 0), raycastParams)
if raycastToGround then -- Character is 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) -- Changing humanoid states so we have animations
controllerManager.ActiveController = groundController -- Switch the ActiveController to groundController.
else -- Character is midair, raycast didn't return anything
humanoid:ChangeState(Enum.HumanoidStateType.Freefall)
controllerManager.ActiveController = airController
end
-- Define a constant for the multiplier in the raycast direction calculation
local CLIMB_RAYCAST_MULTIPLIER = 2
-- Define a function to calculate the raycast direction
local function getRaycastDirection(humanoidRootPart)
return (humanoidRootPart.CFrame.LookVector * CLIMB_RAYCAST_MULTIPLIER) + Vector3.new(0, 7.6, 0)
end
local raycastToLadder = workspace:Raycast(humanoidRootPart.Position, getRaycastDirection(humanoidRootPart), raycastParams)
if raycastToLadder then -- Character is climbing a ladder, raycast returned something
-- Handle the case where the raycast hit a ladder
climbSensor.SensedPart = raycastToLadder.Instance
climbSensor.HitNormal = raycastToLadder.Normal
climbSensor.HitFrame = CFrame.new(raycastToLadder.Position)
humanoid:ChangeState(Enum.HumanoidStateType.Climbing)
controllerManager.ActiveController = climbController
return
else -- Character is not climbing
climbSensor.SensedPart = nil
controllerManager.ActiveController = groundController
if humanoid:GetState() ~= Enum.HumanoidStateType.Jumping then
humanoid:ChangeState(Enum.HumanoidStateType.Running)
end
end
end
basicly i want the climbController to do this:
but it does this:
i also want to add siting functionality as well because when the player sits a seat for VehicleSeat they get stuck and can’t jump out.
How would you increase jump height? BaseMoveSpeed modifies walk speed, but I can’t figure out a way to change the jump height.
You can increase the jump height by increasing the Y value of the jumpImpulse Vector3.
In this part of the code:
local function doJump(actionName, inputState)
if actionName == "JUMP_ACTION" and inputState == Enum.UserInputState.Begin and humanoid:GetState() ~= Enum.HumanoidStateType.Ragdoll then
local jumpImpulse = Vector3.new(0, 750, 0) -- Y is jump power. Change as you see fit.
controllerManager.RootPart:ApplyImpulse(jumpImpulse)
humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
local floor = controllerManager.GroundSensor.SensedPart
if floor then -- Character's on the floor?
floor:ApplyImpulseAtPosition(-jumpImpulse, controllerManager.GroundSensor.HitNormal) -- Equal and opposite force
end
end
end
The relevant part would be:
local jumpImpulse = Vector3.new(0, 750, 0)
This is where the jump force is being applied.
How about swimming? how do i activate swimming functionality
Hello, good tutorial.
Have you made any reliable methods for the “Landed” HumanoidStateType to work when character actually has landed, if yes would you mind sharing?
Hello! When I was coding landing animations for my game, I used Humanoid.StateChanged. In particular, I checked for when the oldState was Freefall and the newState was Running. Then I simply changed the state to Landed.
Wonderful tutorial! I haven’t found alot like this in a while. I was just wondering:
Somebody already said how to detect player deaths and such previously on this thread. How can I respawn the player and stop the player from moving/controlling the character after death?
Now this is crazy impressive! Glad this topic was helpful