Look what I just brought back! Teetering on edges (Known internally as "Ottotto").
And it was PISS EASY. I really have learned a lot about Smash Bros. and Unity over the years <3
This is a simple Physics.OverlapBox() function. It works on solid, semi-solid and pass-through floors! And I'm 100% sure it will also work on upward slopes. I just have to test it on steeper downward ones because I have a hunch that if it misses an edge, he'll teeter right on there. Before, I had a Box gameobject attached to the fighter's feet (and slightly before) and attached a BoxCollider to it. I found this much easier to set up. The longest part? Tweaking the size and offset values for the collision. All fighters operate on the same "origin" for their main floor colliders (on the movement/Trans bone) so I can use the same values for all fighters. Naturally, this collision only checks for (a lack of) edges when your fighter is grounded.
Likely, I'm probably going to adapt it for other character types, such as Assist Trophies.
And I'm gonna do the SAME exact thing for edgegrabs. Except only check when airborne obviously. I think I had so much consistency trouble because I was using a Raycast to check edges. It's too prone to precision errors that way, and would sometimes miss the edge collider entirely, especially because of fall speed. What I want to do, is add another OverlapBox() to check for Edge colliders, and lock the fighter's position there in a way that they're always in the exact, precise position each time.
I'm also gonna add another grounded OverlapBox(), behind the fighter. That and the main Ottotto one will use the same check (if nothing is hitting it) to cancel out movement when standing at the edge of a floor, to prevent falling off, for example, if you roll dodge, to stop you from falling off the platform.
After I do all this? Next up, I'm gonna use my test Item prefab! ;) Stay tuned!
~KV
2 comments