Motor6D animations have weird behaviour

I have a few sword animations on my game, and one of them has the swords floating on the character’s back. On the animator, they look good, but in-game, they start bouncing for some reason, and I can’t seem to understand why. I didn’t see any topic talking about this or a solution, so any help is appreciated!

Animation in-game:

Animation in studio:

1 Like

I havent seen anything like that before

try doing GetPlayingAnimationTracks on loop to those two and see if maybe you have multiple animations playing by accident

I also considered maybe they’re collidable, but I doubt it because the movements would be more sharp. I think that’s still worth checking though

also, how did you attach them to the character? are they rigged on and using the same Animator? or do both keys have separate Animators than the character?
you might get weird behavior if you don’t use a single animator

I always have sanity checks on animators to see if they’re bugged (to make my game able to survive for the weightblendfix) and there’s only the idle playing.

Their collisions are off, they’re unions / meshparts so they can’t collide with anything else.

I simply used a motor6d for each sword attached to the HumanoidRootPart, same rig.

Also, it’s worth noting this happens everytime I try to make this kind of idle. On the old version of my game, this happened, but it was extremely more noticeable than here. It doesn’t happen on any other dual wielding animation, only on this specific one where the swords are floating on nearly the same place.

I had a weird issue where I animated tools with Motor6Ds and on the client, it would look fine but something to do with CurrentAngle made the handle be in a completely different position on the server & client. I don’t know if this is relevant to your issue but it could provide possible insight.

Mhm, not my case. It looks bugged on every place I check. I can’t seem to figure out why that happens.

Certain properties will need to be updated on the server in order for them to replicate to the server and therefore other clients.

Well obviously, the animation on the tool would replicate, just CurrentAngle wouldn’t reset, even though it was 0 on the server, it wasn’t 0 on other clients

maybe try disabling AutomaticScalingEnabled
that caused some issues for me in animations before, but it was when I adjusted the HipHeight, so it shouldnt affect your model too much

also, are you handling this animation on clientside or serverside? this should be clientside because on serverside, it might be skipping some keyframes when sending to the client and making the client do weird transitions from the current frame to the new frame that it skipped to

I tried disabling automaticscalingenabled, didn’t fix itself.

I’m handling the animation on a client’s localscript, so it’s not that either.

Is the rig exactly the same?

Did you Instance.new() the Motor6D joints or clone it?

Either way try to make sure the Motor6D C0 and C1 hidden properties are the same as the animation rig.

Both swords are on the same rig

I used instance.new() for motor6d

And about C0 and C1, the swords are on the humanoidrootpart, 0,0,0 offset both on position and orientation.

Is the orientation and position the same as the animation rig? Usually if you use a rig editor it’s possible the orientation on the rig is like (0,90,0) like the R6 dummy arms which causes the difference.

You can check using C0:ToOrientation()

And convert to radians.

Also part0 and Part1 the same?

Is the root part the humanoid root part and not the swords by any chance?

Part:GetRootPart(), if it’s different you can change the root priority.

Other than that I got not enough information

It’s certainly not about welding. It works fine on other animations, all but these. The swords are animated on their own, they don’t rely on anything, even moving the torso doesn’t do anything.

I’m still looking for a solution, so if anyone has any idea of why that could happen, i’d like to hear it.