I’ve been doing a lot of work on the CharacterMovementcomponent. Mostly changing the Z is up logic to consider the character capsules up vector as the Z. My world is an inverted Sphere so the character is always walking on a constant slope and eventually is walking on what would be a wall ordinarily or even the ceiling. As of 4.3 I had this almost completely working as seen in the image on the left. The only remaining issue I was encountering is at the perfectly 90 degree angle (yellow arrow). At that angle my character would enter a state of constant falling. Because my character falls along his upvector he falls correctly towards the floor (or in that situation the wall, which is his floor). Because I have air control enabled and working I could at that point slide around that perfect 90 degree wall until I passed through to a new angle, be it lower on the wall or higher (which is more like a ceiling at that point). Once he stepped off a perfect 90 I would again have normal control of the character. Aside from that my character could walk and jump and act as expected. It was my last issue or at least visible problem.
Now that 4.4 came around I migrated my code over and built the engine again. It worked on the first attempt no errors (which I knew was too good to be true). Now when I move my character everything behaves normally until I hit the yellow arrow again (The right side in the image). At this point he does the same behavior as before where he enters a state of falling but never recovers, until I Air control him off to above or below (any floor that isn’t world 90 degree). The difference is now when I move above or past the 90 degree he continues to never leave a state of falling. At this point additional bumps and locks into invisible walls occur.
So I’m taking this as an opportunity to help me nail down what is causing the original error at 90. Perhaps by narrowing down on what the changes were in 4.4 I can deduce where the illusive falling occurs from when on the perfect 90 slope. Any ideas what may have changed to cause this negation of my previous work? Any ideas as to where in the characterMovementComponent I should look to nail down this issue would be greatly appreciated.