How to handle edges
Some of you may notice that objects with hedgehog platformer character jitters while on top of edges, the reason being that the physics are compatible enough with platform edges, the floor raycasts have a range long enough to hit the ground below the edge, making the object calculate ground angle like if the object is on a slope.
A solution to this would be adding an invisible box on each edge, and while object is in touch with these, it's floor raycast range is decreased, until there's no more contact, then the floor raycast range is set back to it's original value.
But why not just keep the floor raycast range low? well here's the reason:
A low floor raycast range will not let you calculate the angle of the ground, the steeper the slope, the higher range you'll require to calculate the ground angle for a landing.
All of this should also be applied to ceil raycast.
You may have noticed, but version 1.1.0 reduced the jittering on edges by double-checking the floor angle, it also added an experimetal physics that get the ground angle without the need of raycasts.
How to handle collision obstacles
You might get a time where you're standing still, and then when moving, your character gets stopped by an invisible wall until you've gained enough speed to break through.
That is probably caused by the edge of 2 hedgehog platform collisions in contact, and there's no solution for it besides:
1 - Floor magnet: Decreasing floor magnet decreases this error, while increasing floor magnet does the opposite.
2 - Speed-based floor magnet: This is useful to de/increase the floor magnet applied to the object by using it's speed, it's a very functional option.
3 - Make your own speed-based floor magnet formula: You could also go on and make your own system on events that would be like this:
Object.floormagnet = 5 * abs(Object.groundspeed/Object.maxspeed)
4 - Speed increase - The more speed and/or acceleration you have, the less this happends.
Just keep in mind that not having floor magnet when running on high speeds will set your character flying straight on airborne instead of going down on slopes.
Unless you have a big level of floor detection. But that doesn't make 100% successful.
How to handle high speeds
The magic with implementation of high speeds has to do with the smart manipulation of:
-Floor magnet.
-Floor detection range.
-Acceleration.
-Max speeds.
-Hedgehog platformer physics action.
This starts with a trick, in outer slopes (like this one below) your solution would be to increase floor magnet and floor detection (specially floor detection) to keep the object grounded, even if it's going pretty fast.
This could also be applied to normal slopes like this one.
In curved slopes and flat ground you don't have to relay that much on floor magnet and detection, but that doesn't mean you're gonna set them to 0.
And now this, let's say you want to make your character WAYY more faster, but you don't want it to just go fast enough to break physics and go through walls because of it's speed, the solution is EASY! but it'll cost you performance.
Executing the hedgehog physics 2 times in a row, that would obviously lead to physics running 2 times per frame, making your object 2 times fast, in almost everything.
Executing physics 1 time in a frame with 1x time scale on object's hedgehog physics is the same as executing physics 2 times in a frame with 0.5x time scale on object's hedgehog physics, BUT it has more physic done well in exchange of performance.
Keep in mind that floor magnet and floor detection, along with jump frames, ceil detection and raycasts are not affected by the hedgehog physics's time scale, so you might have to divide your floor magnet by the amount of times that physics are executed on a frame.
So the pros and cons are here:
Executing hedgehog physics 1 time per frame:
-Performant.
-Physics can't stand that much with very high speeds.
Executing hedgehog physics 2 (or more) times per frame:
-Not performant.
-Physics can stand with high speeds.