Custom rig parts in animation moving and rotating unexpectedly in testing

as you can see, the part moves around the sphere smoothly and without issue around three times
however,

the animation ingame seems to collapse completely and do some janky stuff, arching upward halfway through and even reversing for some reason? i have no idea what’s causing this
(it isn’t just for this animation either, but this one has the most visible issues)
i’ve tried to reweld them, but they still yield the same results
image
now the reason why i put this in scripting support is due to the fact that it could be screwing with the animation when the orb is spawned.
server script:

enragedBroOrb = game.ServerStorage["move items in this folder to serverStorage after"].BroOrbEnraged:Clone()
				enragedBroOrb.Name = "b"
				enragedBroOrb.Parent = workspace
				enragedBroOrb:PivotTo(broOrbCFrame)
				enragedBroOrb:ScaleTo(0.5)
				enragedBroOrb.PrimaryPart = enragedBroOrb.primaryPart
				enragedBroOrb.PrimaryPart.Anchored = false
				enragedBroOrb.PrimaryPart.CanCollide = true
				ENRAGEDzenithPrimaryPart = enragedBroOrb.Zenith.primaryPartZenith
				ENRAGEDMovement = Instance.new("BodyPosition", enragedBroOrb.primaryPart)
				ENRAGEDchargeUp = enragedBroOrb.Chargeup.PierceSparks
				ENRAGEDoppositeZenithPrimaryPart = enragedBroOrb.ZenithOPPOSITE.primaryPartZenithOPPOSITE
				ENRAGEDbroOrbAttachment = enragedBroOrb.primaryPart.Attachment
				ENRAGEDgroundSigil = enragedBroOrb.groundSigil
				ENRAGEDprimaryPartBroOrb = enragedBroOrb.primaryPart
				ENRAGEDzenith = enragedBroOrb.Zenith
				ENRAGEDzenithMidPoint = enragedBroOrb.zenithMidPoint
				ENRAGEDairSigilSetCFramePart = enragedBroOrb.airSigilSetCFrame

local function deleteENRAGEDWelds()
		enragedBroOrb:FindFirstChild("john part"):Destroy()
		enragedBroOrb:FindFirstChild("john weld"):Destroy()
		enragedBroOrb.primaryPart.Anchored = false
	end

local function ENRAGEDdeleteForce()
		enragedBroOrb:FindFirstChild("Forcealicious!"):Destroy()
	end

	local function weldENRAGEDBroOrb()
		local part = Instance.new("Part")
		part.Name = "john part"
		part.Shape = Enum.PartType.Block
		part.Parent = enragedBroOrb
		part.Transparency = 1
		part.CFrame = enragedBroOrb.primaryPart.CFrame
		local weld = Instance.new("WeldConstraint")
		weld.Name = "john weld"
		weld.Parent = enragedBroOrb
		weld.Part0 = enragedBroOrb.primaryPart
		weld.Part1 = part
		enragedBroOrb.primaryPart.Anchored = true
	end

local function createENRAGEDForce()
		force = Instance.new("VectorForce")
		force.Name = "Forcealicious!"
		force.Attachment0 = enragedBroOrb.primaryPart.Attachment
		force.Parent = enragedBroOrb
		force.ApplyAtCenterOfMass = true
		force.RelativeTo = Enum.ActuatorRelativeTo.World
	end

local function clearingTheBlockadePhaseTwoAttack()
		ENRAGEDdeleteForce()
		chasePlayerPause = true
		weldENRAGEDBroOrb()
		clearingTheBlockadePhaseTwoEvent:FireAllClients(enragedBroOrb)
		task.wait(3.2)
		deleteENRAGEDWelds()
		chasePlayerPause = false
		createENRAGEDForce()
		coroutine.resume(followPlayerCoroutine)
	end

local script:

clearingTheBlockadePhaseTwoEvent.OnClientEvent:Connect(function(enragedBroOrb)
	local hitbox = enragedBroOrb.Zenith:FindFirstChild("hitbox")
	local clearingTheBlockadeAnimation = Instance.new("Animation")
	clearingTheBlockadeAnimation.AnimationId = "http://www.roblox.com/asset/?id=107827691401031"
	local clearingTheBlockadeAnimationTrack = enragedBroOrb:FindFirstChild("AnimationController"):LoadAnimation(clearingTheBlockadeAnimation)
	clearingTheBlockadeAnimationTrack.Priority = Enum.AnimationPriority.Action
	clearingTheBlockadeAnimationTrack:Play()
	event = hitbox.Touched:Connect(function(hit)
		if not debounce then
			if game.Players:GetPlayerFromCharacter(hit.Parent) == player then
				debounce = true
				damageEvent:FireServer(hit.Parent, 3)
				task.wait(1)
				debounce = false
			end
		end
	end)
	clearingTheBlockadeAnimationTrack.Stopped:Wait()
	clearingTheBlockadePhaseTwoEvent:FireServer()
	event:Disconnect()
end)

sorry for bumping, but an update:
the rotating part is solely causing the rotation discrepancy even when not welded to anything. changing the zenithMidPoint welds to motor6Ds dont work either. i don’t believe it’s a gimbal lock either because again, the animation works perfectly in studio.
isolating the x/z keyframes, locking the motor6ds CurrentAngle, manually rounded the rotations to the FRAME, i’ve done everything i know of yet the results are the same, and i’m completely stuck.

finally managed to fix it!*
*the jankiness is still there, but it’s much less visible
by increasing the keyframes and decreasing the angle increments between said keyframes, the jankiness seems to weaken and ultimately disappear (being almost impossible to notice for those who aren’t actively looking for said jankiness)
in my case, i used 40 degree increments with 2x speed to make it look more smooth

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.