Releasing Character Physics Controllers

Increase Friction to 2 and put FrictionWeight 20-100 depending on if you want it to slow down while walking on ramps or keep the same speed

Hi walking down a set of stairs is quite janky (while walking up is fine), also an option to disable directional changes mid-air would be nice, as well as keeping momentum when jumping and jumping while running would also be nice.

What’s the mass of the part that you’re walking on?

1 Like

Here’s some feedback:

local RayParams = RaycastParams.new()
RayParams.FilterType = Enum.RaycastFilterType.Exclude
RayParams.FilterDescendantsInstances = {Char}

function jump()
	local Raycast = workspace:Raycast(HumanoidRootPart.Position,Vector3.new(0,-5,0),RayParams)
	if Raycast and Raycast.Instance and Raycast.Instance.CanCollide then
		HumanoidRootPart.AssemblyLinearVelocity += Vector3.new(0,50,0)
	end
end
UserInputService.JumpRequest:Connect(jump)
  • Not sure if I’m doing something wrong but this gets spammed in the console:

Player:Move called, but player currently has no humanoid. (x122)

unless I do

game.Players.LocalPlayer.Character = nil
  • It’d be nice to disable rotational velocity inheritance in the Y axis

  • Some sort of togglable built in “coyote time” mechanic, so players can change direction mid jump, might make things feel more fluid

Cool stuff overall, really excited about the realistic velocity inheritance!

1 Like

Not sure, I only noticed it when I had accidental unanchored parts in the game.

here’s the bug report:

1 Like

Threw together a whole character physics controller demo place to show some of the features I implemented.

1 Like

Changing the Base move speed of the ControllerManager doesnt not affect the character speed when a Humanoid is present… Any fix to this? if I dont use a Humanoid, game health script throws a bunch of errors.

Are there any updates on this official implementation? Maybe an ETA or a newer version of these scripts?

2 Likes

they seem to be getting close to releasing it, an enum relating to it was recently removed from the engine in either 607 or 608

1 Like

Is this not working for anyone else? I tried the InitializeCharacters script given as well as just making it based on the setup guide.

It seems to have a lag period of at least 30 seconds before characters start using the GroundSensor / GroundController appropriately. And until then, they’re stuck in the ground, and if I walk into them to see if it’ll refresh their position, it knocks them over but does nothing until it all of a sudden starts working, and once it starts working it doesn’t seem to have any issues.

image
image

ControllerManagerFailure.rbxl (105.2 KB)
^ Placefile

i’m having this issue too but for only a few seconds when playtesting in studio for the first time, when i tried your place file the controllermanagers only seem to work when the client has network ownership of them and they just don’t respond when the server owns them

however, it started working on the server while i was writing this after like 2 minutes, except that it went back to breaking unlike what you’re experiencing and it never worked in run mode, i genuinely can’t figure out why

also, when each controllermanager “loaded” in on the server i could also audibly hear my pc’s fans firing up for a bit which is a bit concerning, i don’t really know how to use the micro profiler so i can’t really provide data or anything but it still worries me a bit

2 Likes

Hi
Any update on fixes or the lua release?
Would like to use this, but in it’s current state it’s not really usable…

yup this is pretty much unusable in most of my cases

i’m trying to make an obby but having yourself get flung for absolutely no reason when going up trusses is annoying

NOTICE

This week we will be releasing fixes and stability improvements to the ControllerManager.

One in particular is a fix for GroundController turning. This prevents it from overshooting the FacingDirection at high speeds. In fact, the actual angular velocity was often higher than was defined by ControllerManager.BaseTurnSpeed * GroundController.TurnSpeedFactor defaults. This lead to turning faster with a GroundController as opposed to the AirController despite the same settings. Now, turn speeds should be consistent for both.

As a result, the GroundController turn speeds may appear slower than before. You can compensate for this by increasing the TurnSpeedFactor on the Controller or BaseTurnSpeed.

4 Likes

very cool roblox

(character limit)

Is there a way to keep the RootPart from rotating indefinity without needing to use AlignOrientation? Currently when the offset is high and the object is floating, the part basically rotates left and right many times, and doesn’t get to face the right direction. Why is this? It should automatically just face the direction properly. (Not sure if this fix getting released fixes this)

I am using ControllerManager, GroundSensor, and GroundPartController with their default properties, except that the RootPart is just by itself, is big 200 each axis, and has an offset that creates this levitating effect that I need, and the SearchDistance is high as well to account for the GroundOffset.

If is to be expected that it will never get to face the direction fast enough and properly without going forward and then back again, should I just use the AlignOrientation?

1 Like

So, I’ve been messing around with this for a long time. I like my current result but am sort of at a stopping point as I prefer Gravity being lower for more real-world-like physics. However, it seems that messing with gravity messes with the friction or something so my character slides around and rotation overshoots even more than before. In a way, it makes sense but it’s annoying.

Is this intentional? If so, how can I avoid this sliding?

Increase the Friction and FrictionWeight properties on the GroundController

Thanks!
It seems to work, but it comes with the quirk of moving unanchored parts under the character. I guess that’s because it’s all physics-based, but I think I can come up with a solution for that.