How to make newly created clones instantly load animations?

I tried to make clones of the player do the same animation and then freeze so that it gave the illusion of an afterimage. When trying this, however, there was a delay between when the clones would load into the game and when they would play the animation.

I’ve tried teleporting the clone out of sight, waiting for the animation to load, and then teleporting them back to the player but that creates a weird stuttering effect.

Here is the code:

local USI = game:GetService("UserInputService")
local Cam = game.Workspace.Camera
local TweenService = game:GetService("TweenService")

zoommove = TweenInfo.new(.3,Enum.EasingStyle.Linear)
game.Players.LocalPlayer.Character.Humanoid.WalkSpeed = 20
local Tween = TweenService:Create(Cam, zoommove, {FieldOfView = 100})
local TweenEnd = TweenService:Create(Cam, zoommove, {FieldOfView = 70})
local RunService = game:GetService("RunService")
local SandevistanEnd = false
local Sandevistan
local GreenTweenInfo = TweenInfo.new(.3, Enum.EasingStyle.Linear)
local GreenTween = TweenService:Create(game.Lighting.ColorCorrection, GreenTweenInfo, {TintColor = Color3.new(0.309804, 1, 0.690196)})
local Anim = Instance.new("Animation")
Anim.AnimationId ="rbxassetid://11643613681"
PlayAnim = game.Players.LocalPlayer.Character.Humanoid:LoadAnimation(Anim)

local RunService = game:GetService("RunService")


local function BetterWait(n)
	local dt = 0

	while dt < n do
		dt = dt + RunService.Heartbeat:Wait()
	end
	return dt
end

USI.InputBegan:Connect(function(input)
	if input.UserInputType == Enum.UserInputType.Keyboard then
		if input.KeyCode == Enum.KeyCode.F then
			GreenTween:Play() -- Green camera effect
			SandevistanEnd = false
			PlayAnim:Play() -- Player Animation
			Tween:Play() -- Camera Zoom 
			game.Players.LocalPlayer.Character.Humanoid.WalkSpeed = 100
			while BetterWait(.04) do
				if SandevistanEnd == false then
					
					game.Players.LocalPlayer.Character.Archivable = true	 -- clones character
					local AfterImage = game.Players.LocalPlayer.Character:Clone()
					game.Players.LocalPlayer.Character.Archivable = false
					AfterImage.Parent = game.Workspace.SandevistanClones
					AfterImage.HumanoidRootPart.Anchored = true
				
					AfterImage.HumanoidRootPart.CollisionGroup = "Sandevistan" --Makes it so the player cant touch the clone
					AfterImage['Left Arm'].CollisionGroup = "Sandevistan"
					AfterImage['Right Arm'].CollisionGroup = "Sandevistan"
					AfterImage['Right Leg'].CollisionGroup = "Sandevistan"
					AfterImage['Left Leg'].CollisionGroup = "Sandevistan"
					AfterImage.Torso.CollisionGroup = "Sandevistan"
					AfterImage.Head.CollisionGroup = "Sandevistan"
					
					local AfterImageAnim = AfterImage.Humanoid:LoadAnimation(Anim) -- Loads player animation
					AfterImageAnim:Play()
					AfterImageAnim.TimePosition = PlayAnim.TimePosition
					AfterImageAnim:AdjustSpeed(0)
					
					AfterImage.LocalScript:Destroy() -- Clean up some junk in the clones
					AfterImage.Animate:Destroy()
				else
					return
				end
			end
		end
	end
end)
2 Likes