SHARE
TWEET

roblox bird wings

a guest Oct 18th, 2019 79 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -bird wings Gifted by harrypotterfan249, Local Script!
  2. --Jump Two Time
  3. --Down Press Q
  4.  
  5. script.Parent = nil
  6.  
  7. function fly()
  8.  
  9. for i,v in pairs(script:GetChildren()) do
  10.  
  11.         pcall(function() v.Value = "" end)
  12.  
  13.         game:GetService("Debris"):AddItem(v,.1)
  14.  
  15. end
  16.  
  17. function weld(p0,p1,c0,c1,par)
  18.  
  19.         local w = Instance.new("Weld",p0 or par)
  20.  
  21.         w.Part0 = p0
  22.  
  23.         w.Part1 = p1
  24.  
  25.         w.C0 = c0 or CFrame.new()
  26.  
  27.         w.C1 = c1 or CFrame.new()
  28.  
  29.         return w
  30.  
  31. end
  32.  
  33. local motors = {}
  34.  
  35. function motor(p0,p1,c0,c1,des,vel,par)
  36.  
  37.         local w = Instance.new("Motor6D",p0 or par)
  38.  
  39.         w.Part0 = p0
  40.  
  41.         w.Part1 = p1
  42.  
  43.         w.C0 = c0 or CFrame.new()
  44.  
  45.         w.C1 = c1 or CFrame.new()
  46.  
  47.         w.MaxVelocity = tonumber(vel) or .05
  48.  
  49.         w.DesiredAngle = tonumber(des) or 0
  50.  
  51.         return w
  52.  
  53. end
  54.  
  55. function lerp(a,b,c)
  56.  
  57.     return a+(b-a)*c
  58.  
  59. end
  60.  
  61. function clerp(c1,c2,al)
  62.  
  63.         local com1 = {c1.X,c1.Y,c1.Z,c1:toEulerAnglesXYZ()}
  64.  
  65.         local com2 = {c2.X,c2.Y,c2.Z,c2:toEulerAnglesXYZ()}
  66.  
  67.         for i,v in pairs(com1) do
  68.  
  69.                 com1[i] = lerp(v,com2[i],al)
  70.  
  71.         end
  72.  
  73.         return CFrame.new(com1[1],com1[2],com1[3]) * CFrame.Angles(select(4,unpack(com1)))
  74.  
  75. end
  76.  
  77. function ccomplerp(c1,c2,al)
  78.  
  79.         local com1 = {c1:components()}
  80.  
  81.         local com2 = {c2:components()}
  82.  
  83.         for i,v in pairs(com1) do
  84.  
  85.                 com1[i] = lerp(v,com2[i],al)
  86.  
  87.         end
  88.  
  89.         return CFrame.new(unpack(com1))
  90.  
  91. end
  92.  
  93. function tickwave(time,length,offset)
  94.  
  95.         return (math.abs((tick()+(offset or 0))%time-time/2)*2-time/2)/time/2*length
  96.  
  97. end
  98.  
  99. function invcol(c)
  100.  
  101.         c = c.Color
  102.  
  103.         return BrickColor.new(Color3.new(1-c.b,1-c.g,1-c.r))
  104.  
  105. end
  106.  
  107. local oc = oc or function(...) return ... end
  108.  
  109. local plr = game.Players.LocalPlayer
  110.  
  111. local char = plr.Character
  112.  
  113. local tor = char.Torso
  114.  
  115. local hum = char.Humanoid
  116.  
  117. hum.PlatformStand = false
  118.  
  119. pcall(function()
  120.  
  121.         char.Wings:Destroy()
  122.  
  123. end)
  124.  
  125. pcall(function()
  126.  
  127.         char.Angel:Destroy() -- hat
  128.  
  129. end)
  130.  
  131. local mod = Instance.new("Model",char)
  132.  
  133. mod.Name = "Wings"
  134.  
  135. local special = {
  136.  
  137.         --antiboomz0r = {"Really black","Institutional white",0,0,false,Color3.new(1,1,.95),Color3.new(1,1,.6)},
  138.  
  139.         antiboomz0r = {"New Yeller",nil,0.4,0.7,true,Color3.new(1,1,.95),Color3.new(1,1,.6)},
  140.  
  141.         --antiboomz0r = {"Cyan","Toothpaste",0,0,false,Color3.new(1,0,0),Color3.new(0,0,0)},
  142.  
  143.         taart = {"Royal purple",nil,.4,.4,true},
  144.  
  145.         mitta = {"Black",nil,0,0,false},
  146.  
  147.         penjuin3 = {"White",nil,0,0,false},
  148.  
  149.         thepc8110 = {"Black","Bright red",.5,0,false,Color3.new(1,0,0),Color3.new(0,0,0)},
  150.  
  151.         nonspeaker = {"Cyan","Toothpaste",0,0,false,Color3.new(1,0,0),Color3.new(0,0,0)},
  152.  
  153.         littleau999 = {"Reddish brown",1030,0,0,false},
  154.  
  155.         unscripter = {"Really black","Really black",.2,0,true,Color3.new(0,0,0),Color3.new(0,0,0)},
  156.  
  157.         oxcool1 = {"Really black","White",.2,0,false,Color3.new(0,0,0),Color3.new(0,0,0)},
  158.  
  159.         krodmiss = {"Really black",nil,0,0,false},
  160.  
  161. }
  162.  
  163. local topcolor = invcol(char.Torso.BrickColor)
  164.  
  165. local feacolor = char.Torso.BrickColor
  166.  
  167. local ptrans = 0
  168.  
  169. local pref = 0
  170.  
  171. local fire = false
  172.  
  173. local fmcol = Color3.new()
  174.  
  175. local fscol = Color3.new()
  176.  
  177. local spec = special[plr.Name:lower()]
  178.  
  179. if spec then
  180.  
  181.         topcolor,feacolor,ptrans,pref,fire,fmcol,fscol = spec[1] and BrickColor.new(spec[1]) or topcolor,spec[2] and BrickColor.new(spec[2]) or feacolor,spec[3],spec[4],spec[5],spec[6],spec[7]
  182.  
  183. end
  184.  
  185. local part = Instance.new("Part")
  186.  
  187. part.FormFactor = "Custom"
  188.  
  189. part.Size = Vector3.new(.2,.2,.2)
  190.  
  191. part.TopSurface,part.BottomSurface = 0,0
  192.  
  193. part.CanCollide = false
  194.  
  195. part.BrickColor = topcolor
  196.  
  197. part.Transparency = ptrans
  198.  
  199. part.Reflectance = pref
  200.  
  201. local ef = Instance.new("Fire",fire and part or nil)
  202.  
  203. ef.Size = .15
  204.  
  205. ef.Color = fmcol or Color3.new()
  206.  
  207. ef.SecondaryColor = fscol or Color3.new()
  208.  
  209. part:BreakJoints()
  210.  
  211.  
  212. function newpart()
  213.  
  214.         local clone = part:Clone()
  215.  
  216.         clone.Parent = mod
  217.  
  218.         clone:BreakJoints()
  219.  
  220.         return clone
  221.  
  222. end
  223.  
  224. local feath = newpart()
  225.  
  226. feath.BrickColor = feacolor
  227.  
  228. feath.Transparency = 0
  229.  
  230. Instance.new("SpecialMesh",feath).MeshType = "Sphere"
  231.  
  232. function newfeather()
  233.  
  234.         local clone = feath:Clone()
  235.  
  236.         clone.Parent = mod
  237.  
  238.         clone:BreakJoints()
  239.  
  240.         return clone
  241.  
  242. end
  243.  
  244.  
  245. ---------- RIGHT WING
  246.  
  247. local r1 = newpart()
  248.  
  249. r1.Size = Vector3.new(.3,1.5,.3)*1.2
  250.  
  251. local rm1 = motor(tor,r1,CFrame.new(.35,.6,.4) * CFrame.Angles(0,0,math.rad(-60)) * CFrame.Angles(math.rad(30),math.rad(-25),0),CFrame.new(0,-.8,0),.1)
  252.  
  253. local r2 = newpart()
  254.  
  255. r2.Size = Vector3.new(.4,1.8,.4)*1.2
  256.  
  257. local rm2 = motor(r1,r2,CFrame.new(0,.75,0) * CFrame.Angles(0,0,math.rad(50)) * CFrame.Angles(math.rad(-30),math.rad(15),0),CFrame.new(0,-.9,0),.1)
  258.  
  259. local r3 = newpart()
  260.  
  261. r3.Size = Vector3.new(.3,2.2,.3)*1.2
  262.  
  263. local rm3 = motor(r2,r3,CFrame.new(.1,.9,0) * CFrame.Angles(0,0,math.rad(-140)) * CFrame.Angles(math.rad(-3),0,0),CFrame.new(0,-1.1,0),.1)
  264.  
  265. local r4 = newpart()
  266.  
  267. r4.Size = Vector3.new(.25,1.2,.25)*1.2
  268.  
  269. local rm4 = motor(r3,r4,CFrame.new(0,1.1,0) * CFrame.Angles(0,0,math.rad(-10)) * CFrame.Angles(math.rad(-3),0,0),CFrame.new(0,-.6,0),.1)
  270.  
  271. local feather = newfeather()
  272.  
  273. feather.Mesh.Scale = Vector3.new(1,1,1)
  274.  
  275. feather.Size = Vector3.new(.4,3,.3)
  276.  
  277. weld(r4,feather,CFrame.new(-.1,-.3,0),CFrame.new(0,-1.5,0))
  278.  
  279. feather = newfeather()
  280.  
  281. feather.Mesh.Scale = Vector3.new(1,1,1)
  282.  
  283. feather.Size = Vector3.new(.4,2.3,.3)
  284.  
  285. weld(r4,feather,CFrame.new(.1,-.1,0) * CFrame.Angles(0,math.random()*.1,0),CFrame.new(0,-1.1,0))
  286.  
  287. feather = newfeather()
  288.  
  289. feather.Mesh.Scale = Vector3.new(1,1,1)
  290.  
  291. feather.Size = Vector3.new(.35,2.2,.25)
  292.  
  293. weld(r4,feather,CFrame.new(.1,-.3,0) * CFrame.Angles(0,math.random()*.1,math.rad(-10)),CFrame.new(0,-1.1,0))
  294.  
  295. local rf3 = {}
  296.  
  297. for i=0,7 do
  298.  
  299.         feather = newfeather()
  300.  
  301.         feather.Mesh.Scale = Vector3.new(1,1,1)
  302.  
  303.         feather.Size = Vector3.new(.45,2.2,.35)
  304.  
  305.         table.insert(rf3,motor(r3,feather,CFrame.new(.05,1-i*.285,0) * CFrame.Angles(0,math.random()*.1,math.rad(-25-i*2)),CFrame.new(0,-feather.Size.Y/2,0)))
  306.  
  307. end
  308.  
  309. local rf2 = {}
  310.  
  311. for i=0,6 do
  312.  
  313.         feather = newfeather()
  314.  
  315.         feather.Mesh.Scale = Vector3.new(1,1,1)
  316.  
  317.         feather.Size = Vector3.new(.45,2.2-i*.08,.3)
  318.  
  319.         table.insert(rf2,motor(r2,feather,CFrame.new(.05,.75-i*.26,0) * CFrame.Angles(0,math.random()*.1,math.rad(-75-i*4)),CFrame.new(0,-feather.Size.Y/2,0)))
  320.  
  321. end
  322.  
  323. local rf1 = {}
  324.  
  325. for i=0,6 do
  326.  
  327.         feather = newfeather()
  328.  
  329.         feather.Mesh.Scale = Vector3.new(1,1,1)
  330.  
  331.         feather.Size = Vector3.new(.37,1.65-i*.06,.25)
  332.  
  333.         table.insert(rf1,motor(r1,feather,CFrame.new(.05,.63-i*.21,0) * CFrame.Angles(0,math.random()*.05,math.rad(-75)),CFrame.new(0,-feather.Size.Y/2,0)))
  334.  
  335. end
  336.  
  337. ---------- LEFT WING
  338.  
  339. local l1 = newpart()
  340.  
  341. l1.Size = Vector3.new(.3,1.5,.3)*1.2
  342.  
  343. local lm1 = motor(tor,l1,CFrame.new(-.35,.6,.4) * CFrame.Angles(0,0,math.rad(60)) * CFrame.Angles(math.rad(30),math.rad(25),0) * CFrame.Angles(0,-math.pi,0),CFrame.new(0,-.8,0) ,.1)
  344.  
  345. local l2 = newpart()
  346.  
  347. l2.Size = Vector3.new(.4,1.8,.4)*1.2
  348.  
  349. local lm2 = motor(l1,l2,CFrame.new(0,.75,0) * CFrame.Angles(0,0,math.rad(50)) * CFrame.Angles(math.rad(30),math.rad(-15),0),CFrame.new(0,-.9,0),.1)
  350.  
  351. local l3 = newpart()
  352.  
  353. l3.Size = Vector3.new(.3,2.2,.3)*1.2
  354.  
  355. local lm3 = motor(l2,l3,CFrame.new(.1,.9,0) * CFrame.Angles(0,0,math.rad(-140)) * CFrame.Angles(math.rad(3),0,0),CFrame.new(0,-1.1,0),.1)
  356.  
  357. local l4 = newpart()
  358.  
  359. l4.Size = Vector3.new(.25,1.2,.25)*1.2
  360.  
  361. local lm4 = motor(l3,l4,CFrame.new(0,1.1,0) * CFrame.Angles(0,0,math.rad(-10)) * CFrame.Angles(math.rad(3),0,0),CFrame.new(0,-.6,0),.1)
  362.  
  363. local feather = newfeather()
  364.  
  365. feather.Mesh.Scale = Vector3.new(1,1,1)
  366.  
  367. feather.Size = Vector3.new(.4,3,.3)
  368.  
  369. weld(l4,feather,CFrame.new(-.1,-.3,0),CFrame.new(0,-1.5,0))
  370.  
  371. feather = newfeather()
  372.  
  373. feather.Mesh.Scale = Vector3.new(1,1,1)
  374.  
  375. feather.Size = Vector3.new(.4,2.3,.3)
  376.  
  377. weld(l4,feather,CFrame.new(.1,-.1,0) * CFrame.Angles(0,math.random()*.1,0),CFrame.new(0,-1.1,0))
  378.  
  379. feather = newfeather()
  380.  
  381. feather.Mesh.Scale = Vector3.new(1,1,1)
  382.  
  383. feather.Size = Vector3.new(.35,2.2,.25)
  384.  
  385. weld(l4,feather,CFrame.new(.1,-.3,0) * CFrame.Angles(0,math.random()*.1,math.rad(-10)),CFrame.new(0,-1.1,0))
  386.  
  387. local lf3 = {}
  388.  
  389. for i=0,7 do
  390.  
  391.         feather = newfeather()
  392.  
  393.         feather.Mesh.Scale = Vector3.new(1,1,1)
  394.  
  395.         feather.Size = Vector3.new(.45,2.2,.35)
  396.  
  397.         table.insert(lf3,motor(l3,feather,CFrame.new(.05,1-i*.285,0) * CFrame.Angles(0,math.random()*.1,math.rad(-25-i*2)),CFrame.new(0,-feather.Size.Y/2,0)))
  398.  
  399. end
  400.  
  401. local lf2 = {}
  402.  
  403. for i=0,6 do
  404.  
  405.         feather = newfeather()
  406.  
  407.         feather.Mesh.Scale = Vector3.new(1,1,1)
  408.  
  409.         feather.Size = Vector3.new(.45,2.2-i*.08,.3)
  410.  
  411.         table.insert(lf2,motor(l2,feather,CFrame.new(.05,.75-i*.26,0) * CFrame.Angles(0,math.random()*.1,math.rad(-75-i*4)),CFrame.new(0,-feather.Size.Y/2,0)))
  412.  
  413. end
  414.  
  415. local lf1 = {}
  416.  
  417. for i=0,6 do
  418.  
  419.         feather = newfeather()
  420.  
  421.         feather.Mesh.Scale = Vector3.new(1,1,1)
  422.  
  423.         feather.Size = Vector3.new(.37,1.65-i*.06,.25)
  424.  
  425.         table.insert(lf1,motor(l1,feather,CFrame.new(.05,.63-i*.21,0) * CFrame.Angles(0,math.random()*.05,math.rad(-75)),CFrame.new(0,-feather.Size.Y/2,0)))
  426.  
  427. end
  428.  
  429. local rwing = {rm1,rm2,rm3,rm4}
  430.  
  431. local lwing = {lm1,lm2,lm3,lm4}
  432.  
  433. local oc0 = {}
  434.  
  435. for i,v in pairs(rwing) do
  436.  
  437.         oc0[v] = v.C0
  438.  
  439. end
  440.  
  441. for i,v in pairs(lwing) do
  442.  
  443.         oc0[v] = v.C0
  444.  
  445. end
  446.  
  447. function gotResized()
  448.  
  449.         if lastsize then
  450.  
  451.                 if tor.Size == lastsize then return end -- This shouldn't happen?
  452.  
  453.                 local scaleVec = tor.Size/lastsize
  454.  
  455.                 for i,v in pairs(oc0) do
  456.  
  457.                         oc0[i] = v-v.p+scaleVec*v.p
  458.  
  459.                 end
  460.  
  461.                 lastsize = tor.Size
  462.  
  463.         end
  464.  
  465.         lastsize = tor.Size
  466.  
  467. end
  468.  
  469. tor.Changed:connect(function(p)
  470.  
  471.         if p == "Size" then
  472.  
  473.                 gotResized()
  474.  
  475.         end
  476.  
  477. end)
  478.  
  479. gotResized()
  480.  
  481. local idle = {0,0.5,-.2,0; .05,.05,.1,.05; -.6,-1.5,.1,0;}--0,.3,0,0
  482.  
  483. local outlow = {-.7,-.2,1.8,0; .3,.05,.1,.05; .2,0,0,0}
  484.  
  485. local outhigh = {.5,-.2,1.8,0; .3,.05,.1,.05; .2,0,0,0}
  486.  
  487. local veryhigh = {.9,-.3,1.9,0; .3,.05,.1,.05; .2,0,0,0}
  488.  
  489. local flap1 = {-.3,.3,1.1,-.2; .3,.05,.1,.05; .2,-.6,0,0}
  490.  
  491. local divebomb = {0,.2,.4,-.7; .3,.05,.1,.05; 0,-.5,-.6,0}
  492.  
  493.  
  494. function setwings(tab,time)
  495.  
  496.         time = time or 10
  497.  
  498.         for i=1,4 do
  499.  
  500.                 rwing[i].DesiredAngle = tab[i]
  501.  
  502.                 lwing[i].DesiredAngle = tab[i]
  503.  
  504.                 rwing[i].MaxVelocity = math.abs(tab[i]-rwing[i].CurrentAngle)/time
  505.  
  506.                 lwing[i].MaxVelocity = math.abs(tab[i]-lwing[i].CurrentAngle)/time
  507.  
  508.                 local rcf = oc0[rwing[i]] * (tab[12+i] or CFrame.new())
  509.  
  510.                 local lcf = oc0[lwing[i]] * (tab[12+i] or CFrame.new())
  511.  
  512.         end
  513.  
  514.         for i,v in pairs(rf1) do
  515.  
  516.                 v.DesiredAngle = tab[9]
  517.  
  518.                 v.MaxVelocity = math.abs(v.DesiredAngle-v.CurrentAngle)/time
  519.  
  520.         end
  521.  
  522.         for i,v in pairs(lf1) do
  523.  
  524.                 v.DesiredAngle = tab[9]
  525.  
  526.                 v.MaxVelocity = math.abs(v.DesiredAngle-v.CurrentAngle)/time
  527.  
  528.         end
  529.  
  530.         for i,v in pairs(rf2) do
  531.  
  532.                 v.DesiredAngle = tab[10]
  533.  
  534.                 v.MaxVelocity = math.abs(v.DesiredAngle-v.CurrentAngle)/time
  535.  
  536.         end
  537.  
  538.         for i,v in pairs(lf2) do
  539.  
  540.                 v.DesiredAngle = tab[10]
  541.  
  542.                 v.MaxVelocity = math.abs(v.DesiredAngle-v.CurrentAngle)/time
  543.  
  544.         end
  545.  
  546.         for i,v in pairs(rf3) do
  547.  
  548.                 v.DesiredAngle = tab[11]
  549.  
  550.                 v.MaxVelocity = math.abs(v.DesiredAngle-v.CurrentAngle)/time
  551.  
  552.         end
  553.  
  554.         for i,v in pairs(lf3) do
  555.  
  556.                 v.DesiredAngle = tab[11]
  557.  
  558.                 v.MaxVelocity = math.abs(v.DesiredAngle-v.CurrentAngle)/time
  559.  
  560.         end
  561.  
  562. end
  563.  
  564. setwings(outhigh,1)
  565.  
  566. flying = false
  567.  
  568. moving = false
  569.  
  570. for i,v in pairs(tor:GetChildren()) do
  571.  
  572.         if v.ClassName:lower():match("body") then
  573.  
  574.                 v:Destroy()
  575.  
  576.         end
  577.  
  578. end
  579.  
  580. local ctor = tor:Clone()
  581.  
  582. ctor:ClearAllChildren()
  583.  
  584. ctor.Name = "cTorso"
  585.  
  586. ctor.Transparency = 1
  587.  
  588. ctor.CanCollide = false
  589.  
  590. ctor.FormFactor = "Custom"
  591.  
  592. ctor.Size = Vector3.new(.2,.2,.2)
  593.  
  594. ctor.Parent = mod
  595.  
  596. weld(tor,ctor)
  597.  
  598. local bg = Instance.new("BodyGyro",ctor)
  599.  
  600. bg.maxTorque = Vector3.new()
  601.  
  602. bg.P = 15000
  603.  
  604. bg.D = 1000
  605.  
  606. local bv = Instance.new("BodyVelocity",ctor)
  607.  
  608. bv.maxForce = Vector3.new()
  609.  
  610. bv.P = 15000
  611.  
  612. vel = Vector3.new()
  613.  
  614. cf = CFrame.new()
  615.  
  616. flspd = 0
  617.  
  618.  
  619. keysdown = {}
  620.  
  621. keypressed = {}
  622.  
  623. ktime = {}
  624.  
  625. descendtimer = 0
  626.  
  627. jumptime = tick()
  628.  
  629. hum.Jumping:connect(function()
  630.  
  631.         jumptime = tick()
  632.  
  633. end)
  634.  
  635. cam = workspace.CurrentCamera
  636.  
  637. kd = plr:GetMouse().KeyDown:connect(oc(function(key)
  638.  
  639.         keysdown[key] = true
  640.  
  641.         keypressed[key] = true
  642.  
  643.         if key == "q" then
  644.  
  645.                 descendtimer = tick()
  646.  
  647.         elseif key == " " and not hum.Jump then
  648.  
  649.                 jumptime = tick()
  650.  
  651.         elseif (key == "a" or key == "d") and ktime[key] and tick()-ktime[key] < .3 and math.abs(reqrotx) < .3 then
  652.  
  653.                 reqrotx = key == "a" and math.pi*2 or -math.pi*2
  654.  
  655.         end
  656.  
  657.         ktime[key] = tick()
  658.  
  659. end))
  660.  
  661. ku = plr:GetMouse().KeyUp:connect(function(key)
  662.  
  663.         keysdown[key] = false
  664.  
  665.         if key == " " then
  666.  
  667.                 descendtimer = tick()
  668.  
  669.         end
  670.  
  671. end)
  672.  
  673. function mid(a,b,c)
  674.  
  675.         return math.max(a,math.min(b,c or -a))
  676.  
  677. end
  678.  
  679. function bn(a)
  680.  
  681.         return a and 1 or 0
  682.  
  683. end
  684.  
  685. function gm(tar)
  686.  
  687.         local m = 0
  688.  
  689.         for i,v in pairs(tar:GetChildren()) do
  690.  
  691.                 if v:IsA("BasePart") then
  692.  
  693.                         m = m + v:GetMass()
  694.  
  695.                 end
  696.  
  697.                         m = m + gm(v)
  698.  
  699.         end
  700.  
  701.         return m
  702.  
  703. end
  704.  
  705. reqrotx = 0
  706.  
  707. local grav = 196.2
  708.  
  709. local con
  710.  
  711. con = game:GetService("RunService").Stepped:connect(oc(function()
  712.  
  713.         --[[if not mod:IsDescendantOf(workspace) then
  714.  
  715.                 pcall(function() kd:disconnect() end)
  716.  
  717.                 pcall(function() ku:disconnect() end)
  718.  
  719.                 bg:Destroy()
  720.  
  721.                 bv:Destroy()
  722.  
  723.                 con:disconnect()
  724.  
  725.                 script:Destroy()
  726.  
  727.                 return
  728.  
  729.         end]]
  730.  
  731.         local obvel = tor.CFrame:vectorToObjectSpace(tor.Velocity)
  732.  
  733.         local sspd, uspd,fspd = obvel.X,obvel.Y,obvel.Z
  734.  
  735.         if flying then
  736.  
  737.                 local lfldir = fldir
  738.  
  739.                 fldir = cam.CoordinateFrame:vectorToWorldSpace(Vector3.new(bn(keysdown.d)-bn(keysdown.a),0,bn(keysdown.s)-bn(keysdown.w))).unit
  740.  
  741.                 local lmoving = moving
  742.  
  743.                 moving = fldir.magnitude > .1
  744.  
  745.                 if lmoving and not moving then
  746.  
  747.                         idledir = lfldir*Vector3.new(1,0,1)
  748.  
  749.                         descendtimer = tick()
  750.  
  751.                 end
  752.  
  753.                 local dbomb = fldir.Y < -.6 or (moving and keysdown["1"])
  754.  
  755.                 if moving and keysdown["0"] and lmoving then
  756.  
  757.                         fldir = (Vector3.new(lfldir.X,math.min(fldir.Y,lfldir.Y+.01)-.1,lfldir.Z)+(fldir*Vector3.new(1,0,1))*.05).unit
  758.  
  759.                 end
  760.  
  761.                 local down = tor.CFrame:vectorToWorldSpace(Vector3.new(0,-1,0))
  762.  
  763.                 local descending = (not moving and keysdown["q"] and not keysdown[" "])
  764.  
  765.                 cf = ccomplerp(cf,CFrame.new(tor.Position,tor.Position+(not moving and idledir or fldir)),keysdown["0"] and .02 or .07)
  766.  
  767.                 local gdown = not dbomb and cf.lookVector.Y < -.2 and tor.Velocity.unit.Y < .05
  768.  
  769.                 hum.PlatformStand = true
  770.  
  771.                 bg.maxTorque = Vector3.new(1,1,1)*9e5
  772.  
  773.                 local rotvel = CFrame.new(Vector3.new(),tor.Velocity):toObjectSpace(CFrame.new(Vector3.new(),fldir)).lookVector
  774.  
  775.                 bg.cframe = cf * CFrame.Angles(not moving and -.1 or -math.pi/2+.2,moving and mid(-2.5,rotvel.X/1.5) + reqrotx or 0,0)
  776.  
  777.                 reqrotx = reqrotx - reqrotx/10
  778.  
  779.                 bv.maxForce = Vector3.new(1,1,1)*9e4*.5
  780.  
  781.                 local anioff =(bn(keysdown[" "])-bn(keysdown["q"]))/2
  782.  
  783.                 local ani = tickwave(1.5-anioff,1)
  784.  
  785.                 bv.velocity = bv.velocity:Lerp(Vector3.new(0,bn(not moving)*-ani*15+(descending and math.min(20,tick()-descendtimer)*-8 or bn(keysdown[" "])-bn(keysdown["q"]))*15,0)+vel,.6)
  786.  
  787.                 vel = moving and cf.lookVector*flspd or Vector3.new()
  788.  
  789.                 flspd = math.min(120,lerp(flspd,moving and (fldir.Y<0 and flspd+(-fldir.Y)*grav/60 or math.max(50,flspd-fldir.Y*grav/300)) or 60,.4))
  790.  
  791.                 setwings(moving and (gdown and outlow or dbomb and divebomb) or (descending and veryhigh or flap1),15)
  792.  
  793.                 for i=1,4 do
  794.  
  795.                         --CFrame.Angles(-.5+bn(i==3)*2.4+bn(i==4)*.5,.1+bn(i==2)*.5-bn(i==3)*1.1,bn(i==3)*.1)
  796.  
  797.                         rwing[i].C0 = clerp(rwing[i].C0,oc0[rwing[i]] * (gdown and CFrame.new() or dbomb and CFrame.Angles(-.5+bn(i==3)*.4+bn(i==4)*.5,.1+bn(i==2)*.5-bn(i==3)*1.1,bn(i==3)*.1) or descending and CFrame.Angles(.3,0,0) or CFrame.Angles((i*.1+1.5)*ani,ani*-.5,1*ani)),descending and .8 or .2)
  798.  
  799.                         lwing[i].C0 = clerp(lwing[i].C0,oc0[lwing[i]] * (gdown and CFrame.new() or dbomb and CFrame.Angles(-(-.5+bn(i==3)*.4+bn(i==4)*.5),-(.1+bn(i==2)*.5-bn(i==3)*1.1),bn(i==3)*.1) or descending and CFrame.Angles(-.3,0,0) or CFrame.Angles(-(i*.1+1.5)*ani,ani*.5,1*ani)),descending and .8 or .2)
  800.  
  801.                 end
  802.  
  803.                 local hit,ray = workspace:FindPartOnRayWithIgnoreList(Ray.new(tor.Position,Vector3.new(0,-3.5+math.min(0,bv.velocity.y)/30,0)),{char})
  804.  
  805.                 if hit and down.Y < -.85 and tick()-flystart > 1 then
  806.  
  807.                         flying = false
  808.  
  809.                         hum.PlatformStand = false
  810.  
  811.                         tor.Velocity = Vector3.new()
  812.  
  813.                 end
  814.  
  815.         else
  816.  
  817.                 bg.maxTorque = Vector3.new()
  818.  
  819.                 bv.maxForce = Vector3.new()
  820.  
  821.                 local ani = tickwave(walking and .8 or 4.5,1)
  822.  
  823.                 setwings(idle,10)
  824.  
  825.                 local x,y,z = fspd/160,uspd/700,sspd/900
  826.  
  827.                 for i=1,4 do
  828.  
  829.                         rwing[i].C0 = clerp(rwing[i].C0,oc0[rwing[i]] * CFrame.Angles(ani*.1 + -mid(-.1,x),0 + -mid(-.1,y) + bn(i==2)*.6,ani*.02 + -mid(-.1,z)),.2)
  830.  
  831.                         lwing[i].C0 = clerp(lwing[i].C0,oc0[lwing[i]] * CFrame.Angles(ani*-.05 + mid(-.1,x),0 + mid(-.1,y) + -bn(i==2)*.6,ani*.02 + mid(-.1,z)),.2)
  832.  
  833.                 end
  834.  
  835.                 if keypressed[" "] and not flying and (tick()-jumptime > .05 and (tick()-jumptime < 3 or hum.Jump)) then
  836.  
  837.                         vel = Vector3.new(0,50,0)
  838.  
  839.                         bv.velocity = vel
  840.  
  841.                         idledir = cam.CoordinateFrame.lookVector*Vector3.new(1,0,1)
  842.  
  843.                         cf = tor.CFrame * CFrame.Angles(-.01,0,0)
  844.  
  845.                         tor.CFrame = cf
  846.  
  847.                         bg.cframe = cf
  848.  
  849.                         flystart = tick()
  850.  
  851.                         flying = true
  852.  
  853.                 end
  854.  
  855.         end
  856.  
  857.         keypressed = {}
  858.  
  859. end))
  860.  
  861.  
  862.  
  863. end fly()
  864.  
  865. --Bird Wings By youtube misty zilo
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top