Reanimate by Figure for limbs
Key RequiredUniversal

Reanimate by Figure for limbs

Universal Scriptmoathalfifi4moathalfifi4 775 views 1.8K executesUpdated Sep 25, 2026
Unrated
00
Lua Script•191 lines (5041 chars)
local LocalPlayer = game.Players.LocalPlayer
local StarterGui = game:GetService("StarterGui")

function notifyPlayer(title, text)
    pcall(function()
        StarterGui:SetCore("SendNotification", {
            Title = title;
            Text = text;
            Duration = 5;
        })
    end)
end

notifyPlayer("let go Figure Animation V4", "Reanimate FE Loaded!")

local fake_transparency = 1
local Motors = {
	["Left Hip"] = 0,
	["Neck"] = 0,
	["Left Shoulder"] = 0,
	["Right Hip"] = 0,
	["Right Shoulder"] = 0
}
local TS = game:GetService("TweenService")

local function getnext(tbl, number)
	local closestDiff = math.huge
	local closestValue = 0
	for i, v in pairs(tbl) do
		if i > number and i - number < closestDiff then
			closestDiff = i - number
			closestValue = i
		end
	end
	return closestValue
end

local function kftotbl(kf)
	local tbl3 = {}
	for _, v in pairs(kf:GetDescendants()) do
		if v:IsA("Pose") then
			tbl3[string.sub(v.Name, 1, 1) .. string.sub(v.Name, #v.Name, #v.Name)] = v.CFrame
		end
	end
	return tbl3
end

local function getSpeed(lastTimeStamp, currentTimeStamp)
	if currentTimeStamp == 0 then return 0 end
	return math.abs(lastTimeStamp - currentTimeStamp)
end

local function getAnimation(animationId)
	local animationObject
	local success, errorMsg = pcall(function()
		animationObject = game:GetObjects(animationId)[1]
	end)
	if not success then
		return nil
	end
	return animationObject
end

local Main = {}
Main.__index = Main

function Main.LoadDummy(DummyChar)
	local metatable = {}
	setmetatable(metatable, Main)
	metatable.char = DummyChar
	return metatable
end

function Main:LoadAnimation(animationId)
	local Character = self.char
	local animationObject = getAnimation(animationId)
	if not animationObject then return end
	local metatable = {}
	setmetatable(metatable, Main)
	metatable.char = Character
	metatable.animObject = animationObject
	return metatable
end

local animationplayer = Main
local Players = game:GetService("Players")
local Player = Players.LocalPlayer
local RunService = game:GetService("RunService")
local Debris = game:GetService("Debris")
local UserInputService = game:GetService("UserInputService")

Player.Character.Archivable = true
local FakeCharacter = Player.Character:Clone()

Player.Character:BreakJoints()
Player.Character = nil

local Connection
Connection = game.Workspace.DescendantAdded:Connect(function(c)
	if c.Name == "Animate" and c.Parent == Player.Character then
		c.Enabled = false   
		Connection:Disconnect()
	end
end)

repeat task.wait() until Player.Character
task.wait(0.1)

local RealChar = Player.Character
RealChar.Archivable = true
FakeCharacter.Name = "non"
FakeCharacter.Parent = workspace

local rig = animationplayer.LoadDummy(FakeCharacter)

task.spawn(function()
	for _, LS in ipairs(FakeCharacter:GetChildren()) do
		if LS:IsA("LocalScript") then
			LS.Enabled = false
			task.wait(0.1)
			LS.Enabled = false
		end
	end
end)

for _, Part in ipairs(FakeCharacter:GetDescendants()) do
	if Part:IsA("BasePart") then
		Part.Transparency = fake_transparency
	end
end

for _, Decal in ipairs(FakeCharacter:GetDescendants()) do
	if Decal:IsA("Decal") then
		Decal.Transparency = fake_transparency
	end
end

Player.Character = FakeCharacter

local function MotorAngle()
	if RealChar:FindFirstChild("Torso") then
		for MotorName, Motor6DAngle in pairs(Motors) do
			if RealChar:FindFirstChild("Torso"):FindFirstChild(MotorName) then
				RealChar:FindFirstChild("Torso"):FindFirstChild(MotorName).CurrentAngle = Motor6DAngle
			end
		end
	end
end

local function SetAngles()
	if FakeCharacter:FindFirstChild("Torso") then
		for MotorName, Motor6DAngle in pairs(Motors) do
			if FakeCharacter:FindFirstChild("Torso"):FindFirstChild(MotorName) then
				local Motor = FakeCharacter:FindFirstChild("Torso"):FindFirstChild(MotorName)
				local rx, ry, rz = Motor.Part1.CFrame:ToObjectSpace(FakeCharacter:FindFirstChild("Torso").CFrame):ToOrientation()
				if Motor.Name == "Right Shoulder" then Motors[MotorName] = -rx end
				if Motor.Name == "Left Shoulder" then Motors[MotorName] = rx end
				if Motor.Name == "Right Hip" then Motors[MotorName] = -rx end
				if Motor.Name == "Left Hip" then Motors[MotorName] = rx end
				if Motor.Name == "Neck" then Motors[MotorName] = -ry end
			end
		end
	end
end

local function BaseCol()
	for _, Part in ipairs(RealChar:GetChildren()) do
		if Part:IsA("BasePart") then Part.CanCollide = false end
	end
    for _, Part in ipairs(FakeCharacter:GetChildren()) do
		if Part:IsA("BasePart") then Part.CanCollide = false end
	end
end

RunService.Heartbeat:Connect(function()
	SetAngles()
	MotorAngle()
	pcall(function()
		RealChar.HumanoidRootPart.CFrame = FakeCharacter.Torso.CFrame
		RealChar.HumanoidRootPart.Velocity = Vector3.new(0, 0, 0)
	end)
end)

RunService.PreSimulation:Connect(function()
	BaseCol()
end)

local bodyVelocity = Instance.new("BodyVelocity")
bodyVelocity.MaxForce = Vector3.new(0.1, 0.1, 0.1)
bodyVelocity.Velocity = Vector3.new(0, 0, 0) 
bodyVelocity.Parent = RealChar.HumanoidRootPart

Features & Information

Idk just a reanimate that make any script work in client make it fe limb 1 but you need to execute the script first reanimate

Community Comments (1)

MrDoDepMrDoDepSep 26, 2026

Yo bro can you give tutorial pls on yt

More Scripts for Universal Scripts