DevBlog 5: First Attempt at Wallride and Pivot
Moving forward with Radio Noize I've been working on bringing forth other maneuvering mechanics. Unfortunately in this time I've been rather focused on development itself and have been forgetting to update the Devblog, so I'm filling in with some catch up! The two main mechanics that I really wanted implement are wallride and pivot. My current attempts are honestly a touch lackluster, but here is the how and why.
The idea of wallriding or wallrunning is rather self explanatory, and nothing necessarily new. What I'm hoping for is to achieve tthe effect of the player being to move along a wall's normal for a set amount of time, before gravity over comes the force that keeps the player to the wall and she drops (similar to Jet Set Radio Future, and I-Ninja, and less like Sunset Overdrive where you can wallrun so long as you can find something to run on).
The way that I approached the wallrun was using a raycast to find an object surface, and a lerp to move you towards this point. So if the raycast finds a point, the player is able to wallride if they press the X button. From there the player will ride until there is no point to move to. It's not that this system cannot work, it can, in many cases, but it's rather easy to break. A simple way of adding control to this system would be to create very specific wallride surfaces (they atually do this in Jet Set Radio Future), but if I were to control it to that degree there are safer ways to go about it such as creat splines along each surface to control the player X and Z but taking the player's initial Y. For the time being however I am trying to create a system in which the player can move along any surface that would be concievably possible situation, so that the move can feel more intuitive.
The two main problems with this system as is though are that 1 - since the position to lerp to is constantly updating, the player needs to move to the point rather quickly in order to compensate for the next lerp position, and 2 - the fact that lerps are transformations and therefore ignore physics. To illustrate, the way that the rail components work is that the player will lerp to the next component, then check if there is another one and lerp to there, where each of these components is theoretically a meter appart. But when you set a point every frame, then these points are set at only a millimeter appart but the same speed will be set to bring her to each one. A way of fixing this could be to only have her set a point at the end of each lerp set x distance forward, but that still leaves the matter of breaking physics a problem - the player can potentially wallride through walls and other obstacles.
As for pivoting, I was rather inspired by a trick carried out in the rollerblade-esque manga/anime series Air Gear and Kingdom Hearts 3D, in which the player can pivot around pole-like structures, and even ride up them. I haven't yet finished the way I'm attempting this, but I feel more comfortable with how it's being handled. The pivoting system involves having a circular looped spline around the pivotal point that controls the X and Z of the player, but allows the player to control their Y Poisition so they can ride it up or down. The next problem would then be how to cleanly jump off or disengage in a desirable direction, and to add apprpriate animations as well as an IK hand position so her hand is always on the pivotal surface.