Disable/Stop humanoid from correcting itself at an angle

I’ve been tinkering with a script that rotates the player’s CFrame around a cylinder, so the player can smoothly walk around it. I’ve figured out the (basic) vector math needed to do it, but now I’ve hit a roadblock.

Once you walk away from the top of the cylinder, the Humanoid tries to stand up straight again, which pushes itself back and does this stuttering movement.

  • There are no forces on the player and the workspace’s gravity is set to 0, so it can’t be a physics issue.
  • I’ve already disabled the Ragdoll and FallingDown state types, so the Humanoid isn’t tripping repeatedly either.
  • Disabling Auto-Rotate does nothing.
  • As far as I could tell, there has not been a single other forum post about this issue.

i’ve been stuck here for over 2 hours please i need closure

Yep that’s just Humanoid physics. They will always try to align themselves upright when in normal running state.

No choice but to disable them entirely like what EgoMoose has done with his wallstick controller by enabling platform stand which is similar to what you are doing.

function init(self)
	setCollisionGroupId(self.Character:GetChildren(), CONSTANTS.PHYSICS_ID)

	self.Humanoid.PlatformStand = true

I was really hoping that I wouldn’t need to flip through his controller, but here I am, I suppose.

I’ll wait a while before marking this as the solution incase someone else finds something that might work.

You could try welding the character to the cylinder when they aren’t walking, and I’m pretty sure the small pushing force when they are walking will be pretty much unnoticeable.