How to make a gravity control for a Sonic Game

yea this script seem fine you can use it

Ok but did you watch the video i sent in the top of the topic? Because thats what I’m trying to do

Can you at least make a video on how to do it, and could you use a sphere like he did in the devlog?

I sent a new video link and here it is "the oscillation around a sphere was patched a bit, but it causes issues with cylinders" - YouTube

You will really need to use ego moose stick gravity that what he uses in the video like he does humanoid.Running:Connect(function(speed) he check its speed then if its speed is huge then stick the character to the wall if not then it will fall

1 Like

Can you send me a link of his video please, but what about the when you jump off?!? you still stick to it and you can’t jump off, thats why i don’t want to use his gravity controller

you can jumpoff and cancel it like this script:

humanoid.Jumping:Connect(function(isActive)
 print("Jumping: ", isActive)
 end)

here is some more info Humanoid | Roblox Creator Documentation

I saw it and it doesn’t seem to be working i followed the steps but didnt work, could you record a video of it so I fully understand what to do if you can.

by the looks of it, it seems like you’re just asking him to make a script for you. That’s not how it works, this is for asking for HELP on doing it, not by somebody giving you a script for it. I recommend having initial knowledge on something like this instead of asking for others to do it

I’m gonna bump up this topic because I’m interested in creating this (or for someone else to create it). How would you check the speed of the humanoid using this function ( humanoid.Running:Connect(function(speed) )? My scripting knowledge is kinda small, so I’m confused. I tried doing this: Screenshot (1869)

but as I said, my scripting knowledge is small, so this could be VERY wrong. Any ideas?

1 Like

I also tried doing this:

but that doesn’t seem to work either. Can anyone tell me what I’m doing wrong?

when you are using this humanoid.Running:Connect(function(speed)
the speed parameter is the real speed velocity(i think) of which the humanoid is moving. so it wont work if you are putting humanoid.WalkSpeed as it just a fixed value which determine the velocity the player will be moving so you should put it like this

humanoid.Running:Connect(function(speed)
if speed <= 50 then return end

if Controller then
        Controller:Destroy()
        Controller = nil
else
         Controller = GravityController.new(PLAYERS.LocalPlayer)
          Controller.GetGravityUp = GetGravityUp
end)

Hey there. I have seen this post and I just wante to share some thoughts.

I created a similar system a year ago.
https://www.roblox.com/games/refer?IsLargeGameTile=false&PageType=GameSearch&PlaceId=6692726430&Position=1&LocalTimestamp=2021-08-15T11:16:17.111Z
What I learned is that it is that Humanoid are incredibly limiting.

I don’t actually use Humanoids for movement. I use the server to ray ast downward and find the correct orientation. Rotate then move the character according. When moving I make sure the character is flat to the ground.

I use constraints in the newer version to make it smoother.

In otherwords if I were you I would make a new Character Controller that can accommodate something like that.

or just use the Egomooses Gravity Controller if you wish.

1 Like

already solved that before you replied (I made a sonic gravity controller...What do you guys think?) Now I just need to make it so when the player is going downwards, they gain speed and vice versa. I tried doing this yesterday, but the script I made to do that broke the gravity controller. Any help?

script that I made in order to make the player go faster when going downwards:

local HRP = script.Parent.HumanoidRootPart
local orientZ = HRP.Orientation.Z
local orientX = HRP.Orientation.X

script.Parent.Humanoid.Running:Connect(function()
	if orientZ == 0 then
		script.Parent.Humanoid.WalkSpeed = script.Parent.Humanoid.WalkSpeed + 10000000000
	end
end)

2 Likes

could you maybe elaborate on how you solved it?

1 Like

the problem of all these scripts is that they run to destroy and create the controller multiple times which essentially breaks the controller, the question is how do we do it, so that it runs the function 1 time instead of a hundred

I have also tried a method where where a player get a down VectorForce pushing the players down, by tinkering with the current local script in the controller I found out that you can make it so that whenever you fall the controller reset:

RUNSERVICE.Heartbeat:Connect(function(dt)
local height = Controller:GetFallHeight()
if height > 0 then
Controller:ResetGravity(Vector3.new(0, 1, 0))
end
end)

though the problem I have with this is with implementing the homing attack,of which requires the PlatformStand in the Humanoid to be marked as false, the problems that makes is that the roblox character sounds script orients on the material footsteps of which turns into air when you are at a more then 60 degree slope angle which stops any character sounds from playing. If you happen to have a version of the controller where that isn’t an issue it would help me alot!

1 Like

I didn’t read the Desc only the title so sorry of answered incorrectly

You can go to game settings then go to I assume it was avatar then you can change things there

that might work, I’ll have to test it out, thanks for replying!

unfortunately it didn’t work, I did find a more complex solution though, but I still apreciated the help, thanks alot!

1 Like