Issue Type: Other
Impact: High
Frequency: Sometimes
Date First Experienced: 2020-08-02 00:08:00 (+02:00)
Date Last Experienced: 2021-02-09 19:02:00 (+01:00)
The issue
There’s an annoying problem with playing animations on diffrently scaled characters. For some reason when scaling a character, Animated movement (not rotation) goes completely off. This often goes unnoticed since not many people use uncommonly scaled characters in their game.
This is the character used in our bossfight, I animated this when it was already scaled. As you can see in the clip below, everything seems fine. The animation does what it’s supposed to. The boss falls/rolls over onto his back.
Now upon running the animation using Humanoid:LoadAnimation() in-game, the character gets flung way further than intended and even sinks into the ground.
Originally I thought I made a mistake in the animation itself, but as you can see in the animation editor, there’s no problems there. We also tried anchoring the HumanoidRootPart, but that didn’t change anything.
Upon investigation we found out that this issue occurs on abnormally scaled characters. This problem has occured before and has been for a while. As seen in this post, from 5 months ago. My programmer @0_salcret had this issue on a character that was smaller than normal. When comparing these cases, the character in @0_salcret 's post moves less than expected - this character is smaller. Our boss character as seen in the previous clips, moves more than expected - this character is bigger.
@0_salcret decided to do some testing on this.
Reproducing the issue
To reproduce the issue, he placed diffrently sized characters on a line and applied the same animation to them all. In this animation the character get moved forward and slightly backward. Remember, every character has exactly the same animation loaded into it.
As seen in the clip they don’t move the same distance at all. Especially characters with a bigger BodyHeightScale get an insane increase in moving distance.
These numbers are rounded.
In this image you can see which character was scaled on what. Every character started at x-vector 7, but some ended up further than others. This means that clearly the movement in the animation is being affected by scale, which isn’t something you’d want. Even when animating the character after its scaled it gets offset.
Here are the exact numbers after the animation played:
Here’s a gamefile to test this yourself, unfortunately you can’t play animations by other people. Make an animation that simply moves the whole character forward and see this for yourself.
testies.rbxl (45.8 KB)
Expected Behavior:
I expected the Animation to play with correct translation regarding the scale of the character.
Actual Behavior:
The character gets moved incorrectly due to scaling.
EDIT: Workaround:
Thanks to this reply by @Manelin we found a workaround, but do note that even with this workaround its still problematic and strange that this happens.
When you change the HipHeight of a character to 2, the animation will play out like it should. This is fine for a simple cutscene, but for an interactive boss this could mess some stuff up. The boss’s hip just isnt at a height of 2. When it runs around, because of the HipHeight, the boss will float above the ground. Even with the workaround I think this offset shouldn’t happen.
For non-human shaped characters, like a turret boss in our game and customizable character systems, this might not work.
Thanks for reading