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)