FPV universal Fe 1 doesnt inclute animations 1
Key RequiredUniversal

FPV universal Fe 1 doesnt inclute animations 1

Universal Script1234sacitire1234sacitire 1.3K views 1K executesUpdated Apr 4, 2026
Unrated
00
Lua Script•242 lines (8740 chars)
-- FPV 3D ACRO DRONE (FIXED SLIDERS + TESTA INVISIBILE)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local GuiService = game:GetService("GuiService")

local player = Players.LocalPlayer
local camera = workspace.CurrentCamera

-- CONFIGURAZIONE ACRO
local STICK_SENSITIVITY = 300   
local ROLL_MULTIPLIER = 1.5   
local EXPO = 1.2              
local THROTTLE_MAX_POWER = 130  

-- FISICA
local DRAG = 0.992             
local GRAVITY_FORCE = 45     
local CAMERA_TILT = 30
local DEADZONE = 0.15          
local BOUNCE_ELASTICITY = 0.3 

-- STATO
local active = false
local unarmed = true 
local velocity = Vector3.new()
local currentPos = camera.CFrame.Position
local droneRotation = CFrame.new()

-- GUI SETUP
local screenGui = Instance.new("ScreenGui", player:WaitForChild("PlayerGui"))
screenGui.Name = "DroneGuiAcro3D"
screenGui.ResetOnSpawn = false

local toggleBtn = Instance.new("TextButton", screenGui)
toggleBtn.Size = UDim2.new(0, 160, 0, 40)
toggleBtn.Position = UDim2.new(1, -180, 0, 20)
toggleBtn.Text = "DRONE: OFF (Y)"
toggleBtn.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
toggleBtn.TextColor3 = Color3.new(1, 1, 1)
toggleBtn.Font = Enum.Font.SourceSansBold
toggleBtn.TextSize = 14
Instance.new("UICorner", toggleBtn)

-- SLIDER SPEED
local sliderFrame = Instance.new("Frame", screenGui)
sliderFrame.Size = UDim2.new(0, 160, 0, 25)
sliderFrame.Position = UDim2.new(1, -180, 0, 65)
sliderFrame.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
Instance.new("UICorner", sliderFrame)

local sliderBar = Instance.new("Frame", sliderFrame)
sliderBar.Size = UDim2.new(THROTTLE_MAX_POWER/500, 0, 1, 0)
sliderBar.BackgroundColor3 = Color3.fromRGB(0, 180, 100)
Instance.new("UICorner", sliderBar)

local sliderLabel = Instance.new("TextLabel", sliderFrame)
sliderLabel.Size = UDim2.new(1, 0, 1, 0)
sliderLabel.BackgroundTransparency = 1
sliderLabel.Text = "SPEED: " .. math.floor(THROTTLE_MAX_POWER)
sliderLabel.TextColor3 = Color3.new(1, 1, 1)
sliderLabel.Font = Enum.Font.SourceSansBold
sliderLabel.TextSize = 14
sliderLabel.ZIndex = 3

-- SLIDER TILT
local tiltFrame = Instance.new("Frame", screenGui)
tiltFrame.Size = UDim2.new(0, 160, 0, 25)
tiltFrame.Position = UDim2.new(1, -180, 0, 95)
tiltFrame.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
Instance.new("UICorner", tiltFrame)

local tiltBar = Instance.new("Frame", tiltFrame)
tiltBar.Size = UDim2.new(CAMERA_TILT/60, 0, 1, 0)
tiltBar.BackgroundColor3 = Color3.fromRGB(0, 120, 220)
Instance.new("UICorner", tiltBar)

local tiltLabel = Instance.new("TextLabel", tiltFrame)
tiltLabel.Size = UDim2.new(1, 0, 1, 0)
tiltLabel.BackgroundTransparency = 1
tiltLabel.Text = "TILT: " .. math.floor(CAMERA_TILT) .. "°"
tiltLabel.TextColor3 = Color3.new(1, 1, 1)
tiltLabel.Font = Enum.Font.SourceSansBold
tiltLabel.TextSize = 14
tiltLabel.ZIndex = 3

local unarmedLabel = Instance.new("TextLabel", screenGui)
unarmedLabel.Size = UDim2.new(0, 160, 0, 25)
unarmedLabel.Position = UDim2.new(1, -180, 0, 130)
unarmedLabel.Text = "DISARMED (B)"
unarmedLabel.BackgroundColor3 = Color3.fromRGB(200, 50, 50)
unarmedLabel.TextColor3 = Color3.new(1, 1, 1)
unarmedLabel.Font = Enum.Font.SourceSansBold
unarmedLabel.TextSize = 14
Instance.new("UICorner", unarmedLabel)

-- LOGICA SLIDERS MIGLIORATA
local isDraggingSpeed = false
local isDraggingTilt = false

local function updateSliders()
	local mouseLocation = UserInputService:GetMouseLocation()
	local inset = GuiService:GetGuiInset()
	local adjustedMouseX = mouseLocation.X - inset.X
	
	if isDraggingSpeed then
		local relativeX = math.clamp((adjustedMouseX - sliderFrame.AbsolutePosition.X) / sliderFrame.AbsoluteSize.X, 0, 1)
		sliderBar.Size = UDim2.new(relativeX, 0, 1, 0)
		THROTTLE_MAX_POWER = relativeX * 500
		sliderLabel.Text = "SPEED: " .. math.floor(THROTTLE_MAX_POWER)
	end
    
    if isDraggingTilt then
		local relativeX = math.clamp((adjustedMouseX - tiltFrame.AbsolutePosition.X) / tiltFrame.AbsoluteSize.X, 0, 1)
		tiltBar.Size = UDim2.new(relativeX, 0, 1, 0)
		CAMERA_TILT = relativeX * 60
		tiltLabel.Text = "TILT: " .. math.floor(CAMERA_TILT) .. "°"
	end
end

-- Input Iniziale
sliderFrame.InputBegan:Connect(function(i) 
    if i.UserInputType == Enum.UserInputType.MouseButton1 or i.UserInputType == Enum.UserInputType.Touch then isDraggingSpeed = true end 
end)
tiltFrame.InputBegan:Connect(function(i) 
    if i.UserInputType == Enum.UserInputType.MouseButton1 or i.UserInputType == Enum.UserInputType.Touch then isDraggingTilt = true end 
end)

-- Rilascio (Globale per evitare blocchi)
UserInputService.InputEnded:Connect(function(i) 
	if i.UserInputType == Enum.UserInputType.MouseButton1 or i.UserInputType == Enum.UserInputType.Touch then 
        isDraggingSpeed = false 
        isDraggingTilt = false 
    end 
end)

-- LOGICA ARM/DISARM
local function toggleArm()
	unarmed = not unarmed
	unarmedLabel.Text = unarmed and "DISARMED (B)" or "ARMED"
	unarmedLabel.BackgroundColor3 = unarmed and Color3.fromRGB(200, 50, 50) or Color3.fromRGB(50, 200, 50)
end

-- LOGICA ATTIVAZIONE
local function toggle()
	active = not active
	local char = player.Character
	local hum = char and char:FindFirstChildOfClass("Humanoid")
	
	if active then
		if char and char.PrimaryPart then 
			currentPos = char.PrimaryPart.Position + Vector3.new(0, 5, 0)
			hum.PlatformStand = true 
			hum:SetStateEnabled(Enum.HumanoidStateType.Dead, false)
		end
		velocity = Vector3.new()
		droneRotation = camera.CFrame * CFrame.Angles(math.rad(-CAMERA_TILT), 0, 0)
		droneRotation = droneRotation - droneRotation.Position
		camera.CameraType = Enum.CameraType.Scriptable
		UserInputService.MouseBehavior = Enum.MouseBehavior.LockCenter
		toggleBtn.Text = "DRONE: ON"
		toggleBtn.BackgroundColor3 = Color3.fromRGB(200, 50, 50)
	else
		if hum then 
			hum.PlatformStand = false 
			hum:SetStateEnabled(Enum.HumanoidStateType.Dead, true)
		end
		camera.CameraType = Enum.CameraType.Custom
		toggleBtn.Text = "DRONE: OFF (Y)"
		toggleBtn.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
		UserInputService.MouseBehavior = Enum.MouseBehavior.Default
	end
end

-- FISICA RAYCAST
local raycastParams = RaycastParams.new()
raycastParams.FilterType = Enum.RaycastFilterType.Exclude
local function updateFilter(char) if char then raycastParams.FilterDescendantsInstances = {char} end end
updateFilter(player.Character or player.CharacterAdded:Wait())

local function applyExpo(value)
	return (value > 0 and 1 or -1) * (math.abs(value) ^ EXPO)
end

-- LOOP PRINCIPALE
RunService.Heartbeat:Connect(function(dt)
	updateSliders() -- Chiamata fissa per fluidità
	if not active then return end

	local pitch, roll, yaw, throttleInput = 0, 0, 0, 0
	local gpts = UserInputService:GetGamepadState(Enum.UserInputType.Gamepad1)
	
	for _, input in pairs(gpts) do
		local pos = input.Position
		if input.KeyCode == Enum.KeyCode.Thumbstick1 then
			if math.abs(pos.X) > DEADZONE then yaw = applyExpo(-pos.X) end
			throttleInput = pos.Y
		elseif input.KeyCode == Enum.KeyCode.Thumbstick2 then
			if math.abs(pos.Y) > DEADZONE then pitch = applyExpo(-pos.Y) end
			if math.abs(pos.X) > DEADZONE then roll = applyExpo(pos.X) end
		end
	end

	local thrust = not unarmed and (droneRotation.UpVector * (throttleInput * THROTTLE_MAX_POWER)) or Vector3.new()
	velocity = (velocity + (thrust * dt) + (Vector3.new(0, -GRAVITY_FORCE, 0) * dt)) * math.pow(DRAG, dt * 60)
	
	local move = velocity * dt
	local hit = workspace:Raycast(currentPos, move + (move.Unit * 1.5), raycastParams)
	if hit then
		velocity = (velocity - 2 * velocity:Dot(hit.Normal) * hit.Normal) * BOUNCE_ELASTICITY
		currentPos = hit.Position + hit.Normal * 0.5
	end

	droneRotation = droneRotation * CFrame.Angles(math.rad(pitch * STICK_SENSITIVITY * dt), math.rad(yaw * STICK_SENSITIVITY * dt), math.rad(-roll * (STICK_SENSITIVITY * ROLL_MULTIPLIER) * dt))
	currentPos = currentPos + velocity * dt
	
	local finalCF = CFrame.new(currentPos) * droneRotation * CFrame.Angles(math.rad(CAMERA_TILT), 0, 0)
	camera.CFrame = finalCF

	if player.Character then
		for _, part in ipairs(player.Character:GetChildren()) do
			if part:IsA("BasePart") then
				part.CFrame = finalCF
				part.AssemblyLinearVelocity = velocity
				if part.Name == "Head" then
					part.LocalTransparencyModifier = 1
				else
					part.LocalTransparencyModifier = 0
				end
			end
		end
	end
end)

UserInputService.InputBegan:Connect(function(input, processed)
	if not processed then
		if input.KeyCode == Enum.KeyCode.ButtonY or input.KeyCode == Enum.KeyCode.Y then toggle()
		elseif input.KeyCode == Enum.KeyCode.ButtonB or input.KeyCode == Enum.KeyCode.B then toggleArm() end
	end
end)

toggleBtn.MouseButton1Click:Connect(toggle)

Features & Information

Its the same as my other One(if you didnt see It check It out!) but its actually Fe! Uses character and if you want to, use and animation

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts