Problems changing parent on object as part of animation

So I’m making a missile launcher. There’s three basic objects involved in my problem : A rotating drum that holds the missile, the missile itself, and the launcher.

What I’m trying to do is have the missile parented to the drum, so that when it rotates the missile moves with it to bring it under the launcher. Then the missile elevates up onto the launcher. At that point I want to change the missile’s parent from the drum to the launcher, so the missile will move with the launcher.

After reading/watching tutorials, I’ve tried setting two child of constraints on the missile - one to the drum with influence 1, one to the launcher with influence 0. Then When the missile goes onto the launcher I set a keyframe to change the drum influence to 0 and the launcher influence to 1. That’s how every single thing I’ve read and watched says to do it.

My problem is, when I set the drum influence to 0, the missile rotates back to where it was before the drum moved. I’ve tried everything I can think of (admittedly that’s not much, lol), but nothing stops this happening.

Am I missing something? Is there a way to change the parenting without undoing the rotation that was done by the first parent?

I’ve tried attaching the blender file to this post so you can see what I’m talking about…

Thanks to anybody who can help.

Attachments

MissileLauncher.blend (3.42 MB)

I think you will have to use two empties; one parented to the arm and the other parented to the launcher. Then add the missile child-of constraints to these empties and keyframe the influence. Here is a modified blend file.

MissileLauncher2.blend (3.42 MB)

Thanks for that, though the missile still has an odd rotation thing going on there - as the parenting changes the missile remains in place, but rotates around its own axis.

I was fiddling around with this myself and found a way to do it, albeit a very inelegant way. Instead of setting two child constraints and animating the influence, I set a single child constraint between the launcher arms and missile, and animated that to turn on as the missile hit the launcher. For the drum rotation I didn’t use parenting at all - rather, I set the missile origin to the centre of the drum, and then set a rotation on the missile that exactly matched the rotation of the drum. Same number of degrees rotation in the same number of frames. So it looks like it’s parented, but it isn’t. That solves the issue completely.

What confuses me is why blender even does this in the first place. Surely the whole point of being able to set the influence to zero using keyframes is to have an object move around with the parent for part of the animation and then move independently after the keyframe. Having blender move it back where it was when the influence changes defeats the whole purpose of being able to animate influence in the first place, surely? Is this a bug, or is there some reason why it works this way that a relative newb like me isn’t aware of?

I did not notice the rotation of the missile before. All you had to do is go to the point in the animation after the switch in constraints has occurred and then rotate the EmptyLaunch empty around the Z-axis so that it lines up with the final position of the EmptyArm. The missile should not now rotate after the transfer.