Godot forcing Y velocity to be 0 when on floor

Godot Version

v4.6.stable

Question

I'm trying to force CharacterBody3D down a slope of a certain angle, but Godot forces the Y velocity to always be 0 when grounded (or so it seems), I know I can just change position.y but that doesn't add to the overall velocity and causes an issue in the place where the slope connects with the ground. Any workarounds would be greatly appreciated.

Could you show the script that, presumably, is on your CharacterBody3D? Having the Y-velocity stuck to 0 is not something I’ve ever encountered.

EDIT: Please remember to format your code so it’s readable (i.e. use three ``` around your code snippet)

1 Like

Thanks for the reply, I might have explained what I meant poorly.

When CharacterBody3D is on a surface that is considered a floor, applying downward velocity, even on a sloped surface, will not actually cause the CharacterBody3D to move down, instead the velocity will be set to 0. If the sloped surface is considered a wall, applying the same force will cause the character to slide down, I need to achieve that behavior without changing the `floor_max_angle` variable, as I mentioned before one of the ways I tried to just change the position of the character, which does achieve that behavior but that doesn’t “convert“ the downward movement into velocity in other directions making it feel very artificial, hope that explains it better

Have you tried to disable floor_stop_on_slope?

I did, no change sadly

This, really, would be a lot easier if you could show the code you’re using to move your CharacterBody3D instead of us having to guess your current system and propose solutions that might not even apply to your situation.