Wall stick/Gravity Controller

Oof sound was removed due to copyright or something…

The controller isn’t meant to work with rapidly changing normals, so doing this will make the controller a bit glitchy on fast moving parts but it works
In the LocalWallstick script, replace the getFloorAndNormal function with just

local function getFloorAndNormal(self)
	return floor, lNormal
end

And then remove the if statement on line 128, replace it with just

floor, lNormal = hit, rNormal
1 Like

If you use the newest version of wallstick on github it handles rapidly changing normals much better. Otherwise, yeah this is correct :+1:

3 Likes

hey egomoose, do you have any idea why my player dies randomly when walking on overlapping parts? More detail in my post above

I’d need more detail to give any suggestions. If you haven’t already I recommend using the version on github as it’s fixed a lot of issues and whatever is causing that may be one of them.

I’m using the latest version thats on your github. Essentially, jumping around a lot on a surface covered in small, thin parts that overlap each other results in the player’s character essentially being deleted.


Here is a surface that is covered in about 80 flat, 8.4x0.05x8.4 cylindrical pieces that are tagged so that you can only walk on walls covered with them. If the player rapidly triggers the gravity effect, be it jumping or walking forwards and backwards so that you step on and off rapidly, it appears to cause some internal chaos and the character dies.
It seems to be happening less often now as I disable the gravity controller unless you stand on these parts so that I can use bodymovers for momentum etc. but it is still possible to cause the player to die.

As this is such a strange issue and I really don’t fully understand why it’s happening, a solution I can think of is to track the player’s position every frame. If the distance between now and the previous frame is incredibly large, or the character just dissapears, then call :LoadCharacter() and send them back to where they die to try and hide the bug? It is very rare now, but the fact it still exists causes me concern.

I really wish I could be of more help but this is basically all I know. The only changes I made to the wall stick scripts are in the GravityModule that the client activates with module.equip() where I changed the height that the player is considered falling at (can’t remember the default to check if this has an effect):

wallstick.Maid:Mark(RunService.Heartbeat:Connect(function()
	local height, distance = wallstick:GetFallHeight()
	isFalling = (distance < 1)
end))

And of course a line in the wall stick that checks if the part you stand on is tagged, but I doubt that would be causing a player to be killed as it is simply an extra if statement.

This is a really frustrating issue, but if you can’t help me I will try to implement my solution i mentioned previously.

Can you provide a place file that can reproduce this issue? If i can test it myself i can probably fix it.

I don’t seem to be able to recreate the issue anymore, perhaps its because I am disabling the effect when you don’t stand on gravity paint.

Another theory I just thought is that it might be an FPS unlocker. Would using an FPS unlocker have any side effects to the module?

I published this place a while ago. If you try it out you might be able to cause it to happen again. If it does, let me know and I’ll open it for editing. Use scroll wheel to change your paint. Purple is the one that affects gravity.

I might also have another theory: when I shoot paint, I actually shoot two paintballs. One is on the client so that the player sees their paint immediately, the other is on the server because thats a good thing to do. Because the server takes forever to do anything and replicate to the clients, the client paint makes your painting instantaneous. BUT, after the server paint is made, the client paint is removed. If the player is standing on CLIENT paint and it gets removed in favour of the SERVER paint, maybe thats why you die, because all of a sudden the object you were standing on is now gone?

I’m not sure, but this issue seems to have magically cleared itself up. If I see it happening again I’ll provide a full place file.

Is there a way to pull a player towards the surface with a lineforce?

I have tried pulling or forcing the player towards the surface, but it just does absolutely nothing.

1 Like

Is it compatible with R6? if not, is there a way to make it compatible?

Hello, I have a question. Can I somehow make this work only when part is touched and stop it when another part is touched?

So i am making a game with this wall-stick thing and i’ve incountered an issue and that is that the normal ways of forcing the player to jump doesn’t work

This. Is. AWESOME! This is super cool, and very well made! I got no complaints, :clap:

1 Like

This is expected behaviour. Most of the time you have to adjust properties on Wallstick.Physics.Humanoid for them to carry over to your character. There are some common cases however where you shouldn’t have to as detailed by this method:

How are you attemting to make the player jump?

1 Like

I am attempting to do Humanoid.Jump = true inside a click event for a clickdetector.
I’ve also noticed that it also acts weird if you try to remove collision between players

Collision between players should be toggled in the constants file:

Made a change to the source code to make your case w/ Humanoid.Jump = true work

2 Likes

To force the player to jump using Humanoid.Jump = true what do you have to change it to? true, false, nil or something else?

You probably didn’t see this because I made an edit to my post right as you posted. You should be able to use it like you originally intended now.

2 Likes

It works now thanks for the help

You should add a camera delay so it doesn’t look too dizzy.

Basically minor movements don’t move the camera until there’s a big difference in the camera direction.