In Aquars, both the Squissum and the Splotters have tails that generate paint.
By connecting them to weapons they can harness this power to to battle.
With that said, let’s discuss the mechanics of the tail in gameplay:
Paint is essentially “ammo” in the game, and the tails work as a kind of “ammo bar” as you can see how much paint you have left on the tail.
The tail will regenerate paint slowly on it’s own, but you’re able to regenerate paint more quickly by detaching your tail from your weapon.
When your tail is detached from your weapon it’ll drag on the ground behind you.
If your tail is dragged through your teams paint, it’ll soak some of it up and regenerate your paint supply more quickly.
If it’s dragged through your enemys paint or unpainted terrain, you’ll deplete paint more quickly while leaving a trail behind you.
Obviously while your tail is detached from your weapon you’ll be unable to fire, so it’s very important to pick the best opportunity to replenish your paint supply.
This can also be used tactically for example, such as leaving a paint trail behind you if someone is in pursuit and slowing them down.
Hopefully this isn’t too difficult to understand, and it’ll be much easier once you get to try it out for yourselves in-game!
Making it happen:
Figuring out the best way for the tail to flop to the ground and drag behind the player has been difficult, having tried multiple methods of doing so.
Initially I tried simple animation and rotation by script, but this lead to a stiff and unnatural look.
I then turned to IK or Inverse Kinematics. The tail was set to an IK chain and a 2nd invisible tail was constructed out of rigidBody components.
The idea was to have the rigidbody tail use Unity’s physics engine to simulate a tail, then have the actual tail follow it’s movement via IK.
If anyone is familiar with Unity physics and how unstable it can be, you’ll understand why this didn’t end up being a viable option..
Sticking with IK, I left the tail as an IK chain and used a raycast to determine the height of the ground behind the player. The tail was then given that point as a target to bend to. Although it was an improvement over other methods so far, this also looked too unnatural and stiff.
Finally I decided to use an IK rig with simulated physics.
The tail is an IK chain with simulated physics. A ray is cast from the end of the tail downwards, getting the height and normal/angle of the ground.
This information is then used in the physics calculations to tell the tail how to act as if it was actually touching the ground.
The result is what I’d envisioned for the tail all along and I couldn’t be happier!
As you can see, it now properly drags behind the player and has basic interaction with the paint it touches.