--[[Glider]]--
--- Made by DoogleFox, Full credit given
local player = game:service("Players").LocalPlayer
local char = player.Character
local cam = workspace.CurrentCamera
local Torsoz = char:findFirstChild("Torso")
local RA = char:findFirstChild("Right Arm")
local LA = char:findFirstChild("Left Arm")
local RL = char:findFirstChild("Right Leg")
local LL = char:findFirstChild("Left Leg")
local H = char:findFirstChild("Head")
local RS = Torsoz:findFirstChild("Right Shoulder")
local LS = Torsoz:findFirstChild("Left Shoulder")
local RH = Torsoz:findFirstChild("Right Hip")
local LH = Torsoz:findFirstChild("Left Hip")
local N = Torsoz:findFirstChild("Neck")
local hu = char:findFirstChild("Humanoid")
local mouse = player:GetMouse()
local Lights = {}
local JetFlames = {}
local LightChangeSpeed = 0.02
local LeftWing
local RightWing
local WingParts = {}
local Flying = false
local JetActive = false
local idle = false
local velo = 0
local bp = Instance.new("BodyPosition")
bp.maxForce = Vector3.new(1/0,1/0,1/0)
bp.D = 100
local bg = Instance.new("BodyGyro")
bg.maxTorque = Vector3.new(1/0,1/0,1/0)
bg.D = 320
local bv = Instance.new("BodyVelocity")
bv.maxForce = Vector3.new(1/0,1/0,1/0)
local P = Instance.new("Part")
P.Anchored = false
P.CanCollide = false
P.Name = "Part"
P.formFactor = "Custom"
P.Size = Vector3.new(0.5,0.5,0.5)
P.Locked = true
P.TopSurface = 0
P.BottomSurface = 0
P.BrickColor = BrickColor.new("Dark stone grey")
P.Transparency = 0
local bp = Instance.new("BodyPosition")
bp.maxForce = Vector3.new(1/0,1/0,1/0)
local bv = Instance.new("BodyVelocity")
bv.maxForce = Vector3.new(1/0,1/0,1/0)
local bg = Instance.new("BodyGyro")
bg.maxTorque = Vector3.new(1/0,1/0,1/0)
bg.D = 300
local wingcolor = "Really black"
local maxvelo = 60
local acceleration = 1
---------------------------------- Design ------------------------------------------
for i, v in pairs(char:children()) do
if v.className == "Model" and v.Name == "Pack" then
v:remove()
end
end
local m = Instance.new("Model", char)
m.Name = "Pack"
local b = P:Clone()
b.Parent = m
local mesh = Instance.new("SpecialMesh", b)
mesh.MeshType = "Head"
mesh.Scale = Vector3.new(2.6,1.2,2.6)
local w = Instance.new("Motor", b)
w.Part0 = Torsoz
w.Part1 = b
w.C0 = CFrame.new(0,0.2,0.35) * CFrame.Angles(math.pi/2,0,0)
local p = P:Clone()
p.Parent = m
local mesh = Instance.new("SpecialMesh", p)
mesh.MeshType = "Head"
mesh.Scale = Vector3.new(2,1.2,2)
local w = Instance.new("Motor", p)
w.Part0 = Torsoz
w.Part1 = p
w.C0 = CFrame.new(0,0.2,0.45) * CFrame.Angles(math.pi/2,0,0)
local p = P:Clone()
p.Parent = m
local mesh = Instance.new("SpecialMesh", p)
mesh.MeshType = "Head"
mesh.Scale = Vector3.new(2.02,1.2,2.02)
local w = Instance.new("Motor", p)
w.Part0 = Torsoz
w.Part1 = p
w.C0 = CFrame.new(0,0.2,0.445) * CFrame.Angles(math.pi/2,0,0)
table.insert(Lights, p)
for i = 1, 3 do
local p = P:Clone()
p.Parent = m
local mesh = Instance.new("CylinderMesh", p)
if i == 2 then
mesh.Scale = Vector3.new(0.4,1.2,0.4)
else
mesh.Scale = Vector3.new(0.35,1,0.35)
end
local w = Instance.new("Motor", p)
w.Part0 = Torsoz
w.Part1 = p
w.C0 = CFrame.new(-0.3+(0.15*i),-0.25,0.55)
if i == 2 then
CenterJet = p
end
local l = P:Clone()
l.Parent = m
local mesh = Instance.new("CylinderMesh", l)
local w = Instance.new("Motor", l)
w.Part0 = p
w.Part1 = l
if i == 2 then
mesh.Scale = Vector3.new(0.405,0.12,0.405)
w.C0 = CFrame.new(0,-0.2,0)
else
mesh.Scale = Vector3.new(0.355,0.12,0.355)
w.C0 = CFrame.new(0,-0.15,0)
end
table.insert(Lights, l)
end
for i = 1, 3 do
local l = P:Clone()
l.Parent = m
local mesh = Instance.new("CylinderMesh", l)
mesh.Scale = Vector3.new(0.12,0.1,0.12)
local w = Instance.new("Motor", l)
w.Part0 = Torsoz
w.Part1 = l
w.C0 = CFrame.new(0.3-(0.15*i),0.3,0.73) * CFrame.Angles(math.pi/2,0,0)
table.insert(Lights, l)
end
------- wings ------
for i = 0, 1 do
local p = P:Clone()
p.Parent = m
local mesh = Instance.new("SpecialMesh", p)
mesh.MeshType = "Sphere"
mesh.Scale = Vector3.new(1,1,1)
local w = Instance.new("Motor", p)
w.Part0 = Torsoz
w.Part1 = p
w.C0 = CFrame.new(0,0.55,0.55) * CFrame.Angles(0,math.pi*i,0)
w.C1 = CFrame.new(0.425,0,0)
local c = P:Clone()
c.Parent = m
c.BrickColor = BrickColor.new(wingcolor)
c.Name = "WingSpine"..i+1
local mesh = Instance.new("BlockMesh", c)
mesh.Scale = Vector3.new(0.26,6,0.2)
local w = Instance.new("Motor", c)
w.Part0 = p
w.Part1 = c
w.C0 = CFrame.Angles(0,0,-math.pi/7)
w.C1 = CFrame.new(0,1.5,0)
w.MaxVelocity = 0.15
if i == 0 then
LeftWing = w
else
RightWing = w
end
table.insert(WingParts, c)
local p = P:Clone()
p.Parent = m
p.BrickColor = BrickColor.new(wingcolor)
local mesh = Instance.new("SpecialMesh", p)
mesh.MeshType = "Wedge"
mesh.Scale = Vector3.new(0.2,4,2.2)
local w = Instance.new("Motor", p)
w.Part0 = c
w.Part1 = p
w.C0 = CFrame.new(0.485,-0.85,0) * CFrame.Angles(math.pi,-math.pi/2,0)
table.insert(WingParts, p)
local p = P:Clone()
p.Parent = m
p.BrickColor = BrickColor.new(wingcolor)
local mesh = Instance.new("BlockMesh", p)
mesh.Scale = Vector3.new(2,0.5,0.2)
local w = Instance.new("Motor", p)
w.Part0 = c
w.Part1 = p
w.C0 = CFrame.new(0.535,0.275,0)
table.insert(WingParts, p)
local p = P:Clone()
p.Parent = m
p.BrickColor = BrickColor.new(wingcolor)
local mesh = Instance.new("SpecialMesh", p)
mesh.MeshType = "Wedge"
mesh.Scale = Vector3.new(0.2,1.5,1)
local w = Instance.new("Motor", p)
w.Part0 = c
w.Part1 = p
w.C0 = CFrame.new(0.785,0.77,0) * CFrame.Angles(0,-math.pi/2,0)
table.insert(WingParts, p)
local p = P:Clone()
p.Parent = m
p.BrickColor = BrickColor.new(wingcolor)
local mesh = Instance.new("BlockMesh", p)
mesh.Scale = Vector3.new(0.94,1.5,0.2)
local w = Instance.new("Motor", p)
w.Part0 = c
w.Part1 = p
w.C0 = CFrame.new(0.3,0.77,0)
table.insert(WingParts, p)
local p = P:Clone()
p.Parent = m
p.BrickColor = BrickColor.new(wingcolor)
local mesh = Instance.new("SpecialMesh", p)
mesh.MeshType = "Wedge"
mesh.Scale = Vector3.new(0.2,1,0.977)
local w = Instance.new("Motor", p)
w.Part0 = c
w.Part1 = p
w.C0 = CFrame.new(0.3,1.385,0) * CFrame.Angles(0,-math.pi/2,0)
table.insert(WingParts, p)
end
local spacedet = 0
local KEYS = {false, false, false, false}
mouse.KeyDown:connect(function(key)
if key == string.char(32) then
if (tick() - spacedet) < 0.3 then
Flying = not Flying
end
spacedet = tick()
end
if key == "w" then
KEYS[1] = true
end
if key == "a" then
KEYS[2] = true
end
if key == "s" then
KEYS[3] = true
end
if key == "d" then
KEYS[4] = true
end
end)
mouse.KeyUp:connect(function(key)
if key == "w" then
KEYS[1] = false
end
if key == "a" then
KEYS[2] = false
end
if key == "s" then
KEYS[3] = false
end
if key == "d" then
KEYS[4] = false
end
end)
local LTrailParts = {}
for i = 1, 21 do
local p = P:Clone()
p.Name = "TrailLine"
p.Anchored = true
p.BrickColor = BrickColor.new(wingcolor)
local mesh = Instance.new("CylinderMesh", p)
mesh.Name = "Mesh"
table.insert(LTrailParts, p)
end
local RTrailParts = {}
for i = 1, 21 do
local p = P:Clone()
p.Name = "TrailLine"
p.Anchored = true
p.BrickColor = BrickColor.new(wingcolor)
local mesh = Instance.new("CylinderMesh", p)
mesh.Name = "Mesh"
table.insert(RTrailParts, p)
end
local Loldpos
local Roldpos
local lightval = {0.1, true}
local refval = 0.1
local firecolors = {"Bright red", "Bright orange"}
local firespeed = 2
local trailnum = 0
local num = 0
local lastflyaction = false
local lastidleaction = false
local idlebp = {0, 0, Torsoz.Position, true}
while true do
num = num + 1
trailnum = trailnum + 1
local unitz = (Torsoz.Position - cam.CoordinateFrame.p).unit
local camsight = Torsoz.Position + (unitz*90)
local diff = camsight.y - Torsoz.Position.y
---------------------- Velocity Changes ----------------------------
----------- W key --------------
if KEYS[1] == true then
velo = velo + acceleration
else
if velo > 0 then
local UP = velo - (acceleration/1.5)
if velo > 0 and UP < 0 then
velo = velo + UP
end
velo = velo - (acceleration/1.5)
end
end
------------ S key -------------
if KEYS[3] == true then
if velo > 0 then
velo = velo - acceleration*1.2
else
velo = velo - (acceleration/1.5)
end
else
if velo < 0 then
local DOWN = velo + acceleration
if velo < 0 and DOWN > 0 then
velo = velo - DOWN
end
velo = velo + acceleration
end
end
local maxvelocalc = maxvelo
if diff < -35 then
if velo > 0 then
maxvelocalc = maxvelo + (maxvelo * -(((diff+35)/110)))
end
elseif diff > 35 then
if velo < 0 then
maxvelocalc = maxvelo + (maxvelo * -((((-diff)+35)/110)))
end
end
if velo >= maxvelocalc then
velo = maxvelocalc
elseif velo <= -maxvelocalc/2 then
velo = -maxvelocalc/2
end
------------------------- Lights ----------------------
if lightval[1] < 0.15 then
lightval[2] = true
elseif lightval[1] > 0.76 then
lightval[2] = false
end
if lightval[2] == true then
lightval[1] = lightval[1] + LightChangeSpeed
else
lightval[1] = lightval[1] - LightChangeSpeed
end
for i, v in pairs(Lights) do
v.Transparency = lightval[1]
if LightChangeSpeed > 0.15 then
v.BrickColor = BrickColor.new("Bright red")
elseif LightChangeSpeed > 0.08 then
v.BrickColor = BrickColor.new("Bright orange")
else
v.BrickColor = BrickColor.new("Bright green")
end
end
--------------------------------------------------------
--------------------- Wing Shines -------------------------
for i, v in pairs(WingParts) do
if Flying == true then
if v.Reflectance > 0.19 then
v.Reflectance = v.Reflectance - 0.035
else
v.Reflectance = 0.19
end
else
if v.Reflectance < 0.43 then
v.Reflectance = v.Reflectance + 0.035
else
v.Reflectance = 0.43
end
end
end
----------------------------------------------------
------------------------ Jet Boost Flames --------------------------------
if num%firespeed == 0 and JetActive == true then
local f = P:Clone()
f.Parent = m
f.Name = "JetFire"
f.BrickColor = BrickColor.new(firecolors[math.random(1, #firecolors)])
f.Transparency = 0.15
f.Anchored = true
f.CFrame = CenterJet.CFrame * CFrame.new(0,-0.3,0)
local mesh = Instance.new("BlockMesh", f)
mesh.Scale = Vector3.new(0.6,0.6,0.6)
table.insert(JetFlames, {mesh, (f.Position - CenterJet.Position).unit})
end
for i, v in pairs(JetFlames) do
if v[1].Parent.Transparency < 0.9 then
v[1].Parent.Transparency = v[1].Parent.Transparency + 0.03
v[1].Scale = v[1].Scale + Vector3.new(0.08,0.08,0.08)
v[1].Parent.CFrame = v[1].Parent.CFrame * CFrame.Angles(math.random(-180,180)/360,math.random(-180,180)/360,math.random(-180,180)/360)
if idle == false then
v[1].Parent.CFrame = v[1].Parent.CFrame + (v[2]*0.1)
else
v[1].Parent.CFrame = v[1].Parent.CFrame + (v[2]*0.24)
end
else
v[1].Parent:remove()
table.remove(JetFlames, i)
end
end
--------------------------------------------------
------------------------------ Flying --------------------------------
if Flying == true then
if lastflyaction == false then
bg = Instance.new("BodyGyro", Torsoz)
bg.maxTorque = Vector3.new(1/0,1/0,1/0)
bg.D = 350
end
--------- idle checker --------
if (velo > -0.5 and velo < 0.5) and (KEYS[1] == false and KEYS[3] == false) then
idle = true
if lastidleaction == false then
idlebp[3] = Torsoz.Position
end
else
idle = false
end
--------- idle float anim -----------
if idle == true then
if lastidleaction == false then
idlebp = {0, 0, Torsoz.Position, true}
end
if idlebp[2] >= 0.3 then
idlebp[4] = false
elseif idlebp[2] <= -0.3 then
idlebp[4] = true
end
if idlebp[4] == false then
idlebp[2] = idlebp[2] - 0.02
elseif idlebp[4] == true then
idlebp[2] = idlebp[2] + 0.02
end
idlebp[1] = idlebp[1] + idlebp[2]
end
---------------- Body Objects ----------------------
if idle == true then
if lastidleaction == false then
bv:remove()
bp:remove()
bp = Instance.new("BodyPosition")
end
hu.PlatformStand = true
bp.Parent = Torsoz
bp.maxForce = Vector3.new(1/0,1/0,1/0)
bp.D = 100
bp.position = idlebp[3] + Vector3.new(0,idlebp[1],0)
bg.cframe = CFrame.new(Torsoz.Position, Torsoz.Position + cam.CoordinateFrame.lookVector)
else
if lastidleaction == true then
bp:remove()
bv:remove()
bv = Instance.new("BodyVelocity")
end
hu.PlatformStand = true
bv.Parent = Torsoz
bv.maxForce = Vector3.new(1/0,1/0,1/0)
local torpos = Torsoz.Position + (cam.CoordinateFrame.lookVector * 10)
bv.velocity = CFrame.new(Torsoz.Position+Vector3.new(0,-2,0), torpos).lookVector*velo
local cvelo = velo
if velo > maxvelo then
cvelo = maxvelo
end
bg.cframe = CFrame.new(Torsoz.Position, Torsoz.Position + cam.CoordinateFrame.lookVector) * CFrame.Angles((-math.pi/2.3)*(cvelo/maxvelo),0,0)
end
elseif Flying == false then
if lastflyaction == true then
hu.PlatformStand = false
bp.Parent = nil
bg.Parent = nil
bv.Parent = nil
idle = false
end
end --- if flying == true
-----------------------------------------
----------------------- Auto Anims -----------------------
if Flying == true then
if diff > 40 then
LeftWing.DesiredAngle = -0.3
RightWing.DesiredAngle = -0.3
LightChangeSpeed = 0.24
JetActive = true
ActiveTrails = true
firespeed = 1
elseif diff > -22 and diff < 40 then
LeftWing.DesiredAngle = -math.pi/2.5
RightWing.DesiredAngle = -math.pi/2.5
LightChangeSpeed = 0.09
JetActive = true
ActiveTrails = true
firespeed = 2
elseif diff > -60 and diff < -22 then
LeftWing.DesiredAngle = -math.pi/2.5
RightWing.DesiredAngle = -math.pi/2.5
LightChangeSpeed = 0.04
JetActive = false
ActiveTrails = true
elseif diff < -60 then
LeftWing.DesiredAngle = -0.1
RightWing.DesiredAngle = -0.1
LightChangeSpeed = 0.04
JetActive = false
ActiveTrails = true
end
if idle == true then
LeftWing.DesiredAngle = -math.pi/2.2
RightWing.DesiredAngle = -math.pi/2.2
LightChangeSpeed = 0.09
JetActive = true
ActiveTrails = false
firespeed = 1
end
if diff < -40 and velo < 0 then
LeftWing.DesiredAngle = -0.3
RightWing.DesiredAngle = -0.3
LightChangeSpeed = 0.24
JetActive = true
ActiveTrails = true
firespeed = 1
elseif (diff < -22 and diff > -40) and velo < 0 then
LeftWing.DesiredAngle = -math.pi/2.5
RightWing.DesiredAngle = -math.pi/2.5
LightChangeSpeed = 0.09
JetActive = true
ActiveTrails = true
firespeed = 2
end
else
LeftWing.DesiredAngle = 0
RightWing.DesiredAngle = 0
JetActive = false
ActiveTrails = false
LightChangeSpeed = 0.02
end
-----------------------------------------
------------------------ Trail lines ------------------------------
if num%2 == 0 then
if Flying == true and ActiveTrails == true then
if velo > 0 then
if velo < acceleration*7 then
Loldpos = nil
Roldpos = nil
end
elseif velo < 0 then
if velo > -acceleration*7 then
Loldpos = nil
Roldpos = nil
end
end
if Loldpos ~= nil then
local newpos = (LeftWing.Parent.CFrame * CFrame.new(0,-1.7,0)).p
local t = LTrailParts[trailnum]
t.Parent = m
t.Anchored = true
t.BrickColor = BrickColor.new(wingcolor)
t.CFrame = CFrame.new((Loldpos+newpos)/2,Loldpos) * CFrame.Angles(math.pi/2,0,0)
local mesh = Instance.new("CylinderMesh", t)
mesh.Name = "Mesh"
mesh.Scale = Vector3.new(0.2,(Loldpos - newpos).magnitude*2,0.2)
end
if Roldpos ~= nil then
local newpos = (RightWing.Parent.CFrame * CFrame.new(0,-1.7,0)).p
local t = RTrailParts[trailnum]
t.Parent = m
t.Anchored = true
t.BrickColor = BrickColor.new(wingcolor)
t.CFrame = CFrame.new((Roldpos+newpos)/2,Roldpos) * CFrame.Angles(math.pi/2,0,0)
local mesh = Instance.new("CylinderMesh", t)
mesh.Name = "Mesh"
mesh.Scale = Vector3.new(0.2,(Roldpos - newpos).magnitude*2,0.2)
end
Loldpos = (LeftWing.Parent.CFrame * CFrame.new(0,-1.7,0)).p
Roldpos = (RightWing.Parent.CFrame * CFrame.new(0,-1.7,0)).p
else
LTrailParts[trailnum].Parent = nil
RTrailParts[trailnum].Parent = nil
Loldpos = (LeftWing.Parent.CFrame * CFrame.new(0,-1.7,0)).p
Roldpos = (RightWing.Parent.CFrame * CFrame.new(0,-1.7,0)).p
end
end
if trailnum == #LTrailParts-1 then
trailnum = 0
end
if num%800 == 0 then
for i, v in pairs(LTrailParts) do
game:service("Debris"):AddItem(v, 0.7)
end
for i, v in pairs(RTrailParts) do
game:service("Debris"):AddItem(v, 0.7)
end
LTrailParts = {}
for i = 1, 21 do
local p = P:Clone()
p.Name = "LTrailLine"
p.Anchored = true
p.BrickColor = BrickColor.new(wingcolor)
local mesh = Instance.new("CylinderMesh", p)
mesh.Name = "Mesh"
table.insert(LTrailParts, p)
end
RTrailParts = {}
for i = 1, 21 do
local p = P:Clone()
p.Name = "RTrailLine"
p.Anchored = true
p.BrickColor = BrickColor.new(wingcolor)
local mesh = Instance.new("CylinderMesh", p)
mesh.Name = "Mesh"
table.insert(RTrailParts, p)
end
end
----------------------------------------------
lastflyaction = Flying
lastidleaction = idle
wait(0.03)
end
Comments
0 B
|👍
/👎
0 B
|0 👍
/0 👎
0 B
|0 👍
/0 👎