Animation Works Differently in Roblox studio and Moon Animator/Blender (Reupload)

Animation was Running Fine in Moon Animator but in game the tool doesn’t animate the handle

Animation in Blender/Moon Animator: https://streamable.com/vebw55

How it looks like in Game: https://streamable.com/4y2jde

Well, is the Motor6D connected efficiently with the sword?

doesn’t matter if it has motor6D on it or not it won’t work

What do you mean it doesn’t matter? A Motor6D is what makes body parts move. For that matter, try to delete all the Motor6Ds in your game. (Don’t do it)

even if i put Motor 6D on it the sword wont move properly

here is the script

--//Services
local Replicated_Storage = game:GetService("ReplicatedStorage")
local User_Unput_Service = game:GetService("UserInputService")
local Run_Service = game:GetService("RunService")
local Player_Service = game:GetService("Players")

--//Tool
local Tool = script.Parent

local Animations_Folder = Tool:WaitForChild("Animations")

--//Events
local Events_Folder = Tool:WaitForChild("Events")

local Weapon_Remote = Events_Folder.Weapon_Remote
local Parry_Remote = Events_Folder.Parry_Remote

--//Player
local Player = Player_Service.LocalPlayer
local Character = Player.Character or Player.CharacterAdded:Wait()
local Humanoid = Character.Humanoid

--//Camera
local Current_Camera = workspace.CurrentCamera

--//Values
local Range = 10

local Attack_Count = 1

local CoolDown = false
local Parry_Cooldown = false

--//Tables
local Data = {}

local Attack_Animations = {
	 "rbxassetid://14726824433",
	 "rbxassetid://14726830597"
}

--| Main Script |--
local function Attack_Camera_Shake(Length)
	local Start_Time = tick()

	for i = 1, 5 do
		if tick() - Start_Time >= Length then break end

		local X = math.random(-100, 100) / 300
		local Y = math.random(-100, 100) / 300
		local Z = math.random(-100, 100) / 300

		Humanoid.CameraOffset = Vector3.new(X, Y, Z)
		Current_Camera.CFrame *= CFrame.Angles(X/50, Y/50, Z/50)

		task.wait()
	end

	Humanoid.CameraOffset = Vector3.new(0, 0, 0)
end

local function Parry(Key)
	if Key.KeyCode == Enum.KeyCode.F and Parry_Cooldown == false and Tool.Parent == Character then
		
		Parry_Cooldown = true
		Data = {Action = "Parry"}
		
		Parry_Remote:FireServer(Data)
		task.wait(2)
		Parry_Cooldown = false
	end
end

local function Attack(Target)
if CoolDown == false then
	CoolDown = true
		local Animation = Humanoid:LoadAnimation(Animations_Folder.Combat[tostring(Attack_Count)])
		Animation:Play()
		
		local RayCast_Origin = Character.HumanoidRootPart.Position
		local RayCast_Orientation = (Character.HumanoidRootPart.CFrame.LookVector * 180 - RayCast_Origin).Unit * Range
		local RayCast_Params = RaycastParams.new()
		RayCast_Params.FilterDescendantsInstances = {Character}
		RayCast_Params.FilterType = Enum.RaycastFilterType.Exclude

		local RayCast_Result = workspace:Raycast(RayCast_Origin, RayCast_Orientation, RayCast_Params)
		
		
			if Attack_Count <#Animations_Folder.Combat:GetChildren() then
				Attack_Count += 1
			else
				Attack_Count = 1
			end

			if RayCast_Result then
			if RayCast_Result.Instance.Parent:FindFirstChild("Humanoid") then
				if RayCast_Result.Instance.Parent:WaitForChild("Parry").Value == 0 then
					Target = RayCast_Result.Instance.Parent
					Data = {Action = "Attack"}

					task.wait(0.2)
				
					Attack_Camera_Shake(1)
					Weapon_Remote:FireServer(Data, Target, RayCast_Result.Instance)
				else
					Target = RayCast_Result.Instance.Parent
					task.wait(0.2)
					Attack_Camera_Shake(2)
					Weapon_Remote:FireServer(Data, Target, RayCast_Result.Instance)
					Parry_Cooldown = false
					task.wait(1.5)
				end
				end
			end
			task.wait(0.3)
		CoolDown = false
		end
end

Tool.Activated:Connect(Attack)

User_Unput_Service.InputBegan:Connect(Parry)

You need to set up the Motor6D using a script (when the tool is equipped) in the same way the character is previously rigged for the working animation.

wait mb i sent wrong script

--//Services
local Replicated_Storage = game:GetService("ReplicatedStorage")
local User_Unput_Service = game:GetService("UserInputService")
local Run_Service = game:GetService("RunService")
local Player_Service = game:GetService("Players")

--//Tool
local Tool = script.Parent

local Animations_Folder = Tool:WaitForChild("Animations")

--//Events
local Events_Folder = Tool:WaitForChild("Events")

local Weapon_Remote = Events_Folder.Weapon_Remote
local Parry_Remote = Events_Folder.Parry_Remote

--//Player
local Player = Player_Service.LocalPlayer
local Character = Player.Character or Player.CharacterAdded:Wait()
local Humanoid = Character:WaitForChild("Humanoid")

--//Camera
local Current_Camera = workspace.CurrentCamera

--//Values
local Range = 15

local Attack_Count = 1

local CoolDown = false
local Parry_Cooldown = false

--//Tables
local Data = {}

--| Main Script |--

local function Equipped()
	local Motor6D = Instance.new("Motor6D", Character["Right Arm"])

		Motor6D.Part0 = Character:WaitForChild("Right Arm")
		Motor6D.Part1 = Tool:WaitForChild("Handle")
end

local function Attack_Camera_Shake(Length)
	local Start_Time = tick()

	for i = 1, 5 do
		if tick() - Start_Time >= Length then break end

		local X = math.random(-100, 100) / 300
		local Y = math.random(-100, 100) / 300
		local Z = math.random(-100, 100) / 300

		Humanoid.CameraOffset = Vector3.new(X, Y, Z)
		Current_Camera.CFrame *= CFrame.Angles(X/50, Y/50, Z/50)

		task.wait()
	end

	Humanoid.CameraOffset = Vector3.new(0, 0, 0)
end

local function Parry(Key)
	if Key.KeyCode == Enum.KeyCode.F and Parry_Cooldown == false and Tool.Parent == Character then
		
		Parry_Cooldown = true
		Data = {Action = "Parry"}
		
		Parry_Remote:FireServer(Data)
		task.wait(2)
		Parry_Cooldown = false
	end
end

local function Attack(Target)
if CoolDown == false then
	CoolDown = true
		
		local RayCast_Origin = Character.HumanoidRootPart.Position
		local RayCast_Orientation = (Character.HumanoidRootPart.CFrame.LookVector * 180 - RayCast_Origin).Unit * Range
		local RayCast_Params = RaycastParams.new()
		RayCast_Params.FilterDescendantsInstances = {Character}
		RayCast_Params.FilterType = Enum.RaycastFilterType.Exclude

		local RayCast_Result = workspace:Raycast(RayCast_Origin, RayCast_Orientation, RayCast_Params)
		
		local Animation = Humanoid:LoadAnimation(Animations_Folder.Combat[tostring(Attack_Count)])
		Animation:Play()
		
			if Attack_Count <#Animations_Folder.Combat:GetChildren() then
				Attack_Count += 1
			else
				Attack_Count = 1
			end

			if RayCast_Result then
			if RayCast_Result.Instance.Parent:FindFirstChild("Humanoid") then
				if RayCast_Result.Instance.Parent:WaitForChild("Parry").Value == 0 then
					Target = RayCast_Result.Instance.Parent
					Data = {Action = "Attack"}

					task.wait(0.2)
				
					Attack_Camera_Shake(1)
					Weapon_Remote:FireServer(Data, Target, RayCast_Result.Instance)
				else
					Target = RayCast_Result.Instance.Parent
					task.wait(1.3)
					Attack_Camera_Shake(2)
					Weapon_Remote:FireServer(Data, Target, RayCast_Result.Instance)
					Parry_Cooldown = false
					task.wait(0.3)
				end
				end
			end
			task.wait(3)
		CoolDown = false
		end
end

Tool.Equipped:Connect(Equipped)
Tool.Activated:Connect(Attack)

User_Unput_Service.InputBegan:Connect(Parry)

No Matter if i create or copy Motor6D from dummy the tool wont move

That’s because the weapon is probably named Handle, so it’s going to the right arm’s Toolgrip or whatever it was. Try renaming Handle to something else and ticking requirehandle off, or remove Toolgrip somehow.