Strange glitch-into-floor glitch bug fix?

I keep having this glitch occur:

The character can gets stuck inside the ground if you jumps at the floor from a specific angle.

Has anyone else had a similar experience?
Know of any good way to prevent this from happening?
The current solution I have is to check the Humanoid’s state change to see if it’s on Enum.HumanoidStateType.Freefall for too long. This isn’t a good prevention method though.

The character is a default R15 dummy character.

1 Like

Did you try changing the Hip Height of the character?

You can also make it so the character spawns 5-10 studs above the ground so people don’t glitch into the floor.

Changing Hiphight doesn’t seem to be doing anything.
Also, this isn’t something that happens as soon as the character spawns, it happens when you run into the side/tip of the floor-part at a specific angle

1 Like

It seems like you’re CFraming the rotation to match that of the camera’s direction, correct?

1 Like

I recommend you to post this in Game Design Support or perhaps Building Support, they know more than us about these stuff since your problem doesn’t involve any coding issues.

You won’t get good answers here so just move it into one of these categories since they specialize in creating custom characters and how building works and how you can glitch into it.

Try welding invisible parts to leg limbs, with collision set to true, that would fix the issue, and yes this is more for building support.

1 Like

@MightyDantheman Yes but only the rotation.

local cameraLookVector = CFrame.new(Char.HumanoidRootPart.Position)*Camera.CFrame.LookVector
local frontLookVector = Vector3.new(cameraLookVector.X,Char.HumanoidRootPart.Position.Y,cameraLookVector.Z)
Char.HumanoidRootPart.CFrame = CFrame.new(Char.HumanoidRootPart.Position,frontLookVector)

@Nerkonl Generally speaking, modelers know less about the specifics of how technical stuff works

@jcnruad900 That’s a good suggestion. I’ll try that if nothing else works.

1 Like

So that’s most likely the cause. I’m not entirely sure how I’d fix that directly, but you can code a patch that pushes the player out of an object that it’s intersecting with. GetTouchingParts will conveniently get any intersecting parts (even when anchored and no physics are used). This does not include touching parts, only parts that are actually inside and intersecting. With that, you can work out some maths to figure out how you want to push the player out of the object.

1 Like

I had an issue like that one time, but it was because of the root part.

1 Like

@MightyDantheman
I checked to see if it was the custom shiftlock by disabling it and using the default Roblox shiftlock.
I also tried disabling shiftlock altogether.
The glitch still occurred during both tests.

I might settle with using GetTouchingParts, though then I would have to attach Touched events to a lot of stuff and that might not be super efficient.

@jcnruad900
The root part is just a default Roblox R15 root part.

1 Like

You don’t actually need to add events to anything. You can call GetTouchingParts and it will do its job. I suppose you could put a touch event in the HumanoidRootPart to check for said intersections though.

1 Like

Oh yea, that’s only if CanCollide is set to false.
Alright, maybe I could have a tiny part inside the HumanoidRootPart and check if anything touches that.

1 Like

Well, I meant that you could use HumanoidRootPart itself as the touch event part.

2 Likes

yes but then it would activate whenever you walk into walls and whatnot

Yes, though that’s the point of using GetTouchingParts. It only returns a table of intersecting parts, not parts that are simply touching.

1 Like

Dispeller does it do the same with other rigs too? To resize the rig did you use the values inside the humanoid?

@MightyDantheman
Oh ok cool, looks like this works

Player = game.Players.LocalPlayer
Char = Player.Character
Humanoid = Char:WaitForChild('Humanoid')


HRP = Char:WaitForChild('LowerTorso')
HRP.Touched:connect(function(hit)
	if hit.Parent ~= Char then
		local parts = HRP:GetTouchingParts()
		for i,v in pairs(parts) do
			if v.Parent ~= Char then
				--print(v)
				HRP.CFrame = HRP.CFrame*CFrame.new(0,1,0)
			end
		end
	end
end)

Except I had to use LowerTorso instead of HumanoidRootPart

@jcnruad900
I dont think it did this with my previous rig but I could be wrong.
Yes I did actually, I made the character a little skinnier.
The BodyWidthScale is set to 0.8

3 Likes