-
What do you want to achieve?
I want to make a advanced animated flying script that will work on the press of a space bar and changes animation based on speed, direction, and height -
What is the issue?
When making a flying script, the animations don’t load and the mesh doesn’t fly at all -
What solutions have you tried so far?
Tried many workarounds and tutorials and none of them worked, for some reason the function wont trigger when I input my keycode
My character:
My script:
local player = game.Players.LocalPlayer
local char = player.Character or player.CharacterAdded:Wait()
local cam = workspace.CurrentCamera
local uis = game:GetService("UserInputService")
local idleAnim = char:WaitForChild("Humanoid"):LoadAnimation(script:WaitForChild("Floating"))
local forwardAnim = char:WaitForChild("Humanoid"):LoadAnimation(script:WaitForChild("Flying"))
local wPressed = false
local sPressed = false
local aPressed = false
local dPressed = false
local flying = false
uis.InputBegan:Connect(function(key, chat)
if chat then return end
if key.KeyCode == Enum.KeyCode.F then
if flying then --Stop Flying
flying = false
char.Animate.Disabled = false
idleAnim:Stop()
forwardAnim:Stop()
else --Start Flying
flying = true
char.Animate.Disabled = true
idleAnim:Play()
local bv = Instance.new("BodyVelocity", char.PrimaryPart)
bv.MaxForce = Vector3.new(math.huge,math.huge,math.huge)
bv.Velocity = Vector3.new(0,0,0)
bv.Name = "FlightForce"
repeat wait(0.1) until flying == false
bv:Destroy()
end
end
if key.KeyCode == Enum.KeyCode.W then
wPressed = true
elseif key.KeyCode == Enum.KeyCode.S then
sPressed = true
elseif key.KeyCode == Enum.KeyCode.A then
aPressed = true
elseif key.KeyCode == Enum.KeyCode.D then
dPressed = true
end
end)
uis.InputEnded:Connect(function(key)
if key.KeyCode == Enum.KeyCode.W then
wPressed = false
elseif key.KeyCode == Enum.KeyCode.S then
sPressed = false
elseif key.KeyCode == Enum.KeyCode.A then
aPressed = false
elseif key.KeyCode == Enum.KeyCode.D then
dPressed = false
end
end)
while wait() do
if flying then
char.PrimaryPart:FindFirstChild("FlightForce").Velocity = Vector3.new(0,0,0)
forwardAnim:Stop()
if wPressed then
char.PrimaryPart:FindFirstChild("FlightForce").Velocity = cam.CFrame.LookVector * 100
forwardAnim:Play()
end
if sPressed then
char.PrimaryPart:FindFirstChild("FlightForce").Velocity = cam.CFrame.LookVector * -100
forwardAnim:Play()
end
if aPressed then
char.PrimaryPart:FindFirstChild("FlightForce").Velocity = cam.CFrame.RightVector * -100
forwardAnim:Play()
end
if dPressed then
char.PrimaryPart:FindFirstChild("FlightForce").Velocity = cam.CFrame.RightVector * 100
forwardAnim:Play()
end
else
wait(1)
end
end