SHOW:
|
|
- or go back to the newest paste.
1 | - | print("Do ya need a bleach?") |
1 | + | --[[ |
2 | - | STOP = Instance.new("Sound", game.Players.LocalPlayer.Character.Head) |
2 | + | |
3 | - | STOP.SoundId = "http://roblox.com/asset?id=356970690" |
3 | + | preview ;) |
4 | - | STOP.Looped = true |
4 | + | |
5 | - | STOP:Play() |
5 | + | ]] |
6 | - | STOP.Volume = 2 |
6 | + | |
7 | - | plr = game.Players.LocalPlayer |
7 | + | CN, CA, V3, U2, C3, BN = CFrame.new, CFrame.Angles, Vector3.new, UDim2.new, Color3.new, BrickColor.new |
8 | - | char = plr.Character |
8 | + | function new(instanceType, parent) |
9 | - | mouse = plr:GetMouse() |
9 | + | return function(configuration) |
10 | - | local cough = Instance.new("Sound", workspace) |
10 | + | local newInstance = Instance.new(instanceType, parent) |
11 | - | cough.SoundId = "http://roblox.com/asset?id=178522287" |
11 | + | if newInstance:IsA("BasePart") then |
12 | - | Bleach = Instance.new("Part", char["Left Arm"]) |
12 | + | newInstance.TopSurface = 0 |
13 | - | Bleach.CanCollide = false |
13 | + | newInstance.BottomSurface = 0 |
14 | - | Mesh = Instance.new("SpecialMesh", Bleach) |
14 | + | if not newInstance:IsA("CornerWedgePart") then |
15 | - | Mesh.MeshId = "http://roblox.com/asset?id=483388971" |
15 | + | newInstance.FormFactor = 3 |
16 | - | Mesh.Scale = Vector3.new(0.005, 0.005, 0.005) |
16 | + | end |
17 | - | Mesh.TextureId = "http://roblox.com/asset?id=520016684" |
17 | + | newInstance.Material = "Granite" |
18 | - | Handy = Instance.new("Weld", Bleach) |
18 | + | newInstance.BrickColor = BN("Medium stone grey") |
19 | - | Handy.Part0 = Bleach |
19 | + | newInstance.Locked = true |
20 | - | Handy.Part1 = char["Left Arm"] |
20 | + | end |
21 | - | Handy.C0 = CFrame.new(0.5,1.8,0) |
21 | + | for property, value in pairs(configuration) do |
22 | - | Handy.C1 = CFrame.Angles(0,4,1) |
22 | + | if type(value) == "function" then |
23 | - | drink = Instance.new("Sound", char.Head) |
23 | + | newInstance[property]:connect(value) |
24 | - | drink.SoundId = "http://roblox.com/asset?id=10722059" |
24 | + | else |
25 | - | function cringe(key) |
25 | + | newInstance[property] = value |
26 | - | key = key:lower() |
26 | + | end |
27 | - | if key == "q" then |
27 | + | end |
28 | - | game.Chat:Chat(char.Head,"This is too cringe","Blue") |
28 | + | if configuration["CFrame"] then |
29 | - | wait(2) |
29 | + | newInstance.CFrame = configuration["CFrame"] |
30 | - | game.Chat:Chat(char.Head,"This needs to stop, now","Red") |
30 | + | end |
31 | - | wait(2) |
31 | + | return newInstance |
32 | - | game.Chat:Chat(char.Head,"This is cancer.","Red") |
32 | + | end |
33 | - | wait(2) |
33 | + | |
34 | - | game.Chat:Chat(char.Head,"This is too strong","Red") |
34 | + | function QuaternionFromCFrame(cf) |
35 | - | wait(2) |
35 | + | local mx, my, mz, m00, m01, m02, m10, m11, m12, m20, m21, m22 = cf:components() |
36 | - | game.Chat:Chat(char.Head,"I need to die","Red") |
36 | + | local trace = m00+m11+m22 |
37 | - | for i = 1,10 do |
37 | + | if trace > 0 then |
38 | - | wait() |
38 | + | local s = math.sqrt(1+trace) |
39 | - | char.HumanoidRootPart.RootJoint.C0 = char.HumanoidRootPart.RootJoint.C0 * CFrame.Angles(-0.018,0,0) |
39 | + | local recip = 0.5/s |
40 | - | Handy.C0 = Handy.C0 * CFrame.new(-0.05,-0.07,0.09) |
40 | + | return (m21-m12)*recip, (m02-m20)*recip, (m10-m01)*recip, s*0.5 |
41 | - | Handy.C0 = Handy.C0 * CFrame.Angles(0.12,0,0) |
41 | + | else |
42 | - | char.Torso["Left Shoulder"].C0 = char.Torso["Left Shoulder"].C0 * CFrame.Angles(0.2,0,-0.1) |
42 | + | local i = 0 |
43 | - | end |
43 | + | if m11 > m00 then |
44 | - | STOP.Volume = 0 |
44 | + | i = 1 |
45 | - | drink:Play() |
45 | + | end |
46 | - | for i = 1,50 do |
46 | + | if m22 > (i == 0 and m00 or m11) then |
47 | - | wait() |
47 | + | i = 2 |
48 | - | char.Humanoid.Health = char.Humanoid.Health - 1 |
48 | + | end |
49 | - | end |
49 | + | if i == 0 then |
50 | - | char.Humanoid.WalkSpeed = 0 |
50 | + | local s = math.sqrt(m00-m11-m22+1) |
51 | - | wait(2) |
51 | + | local recip = 0.5/s |
52 | - | for i = 1,10 do |
52 | + | return 0.5*s, (m10+m01)*recip, (m20+m02)*recip, (m21-m12)*recip |
53 | - | wait() |
53 | + | elseif i == 1 then |
54 | - | char.HumanoidRootPart.RootJoint.C0 = char.HumanoidRootPart.RootJoint.C0 * CFrame.Angles(0.018,0,0) |
54 | + | local s = math.sqrt(m11-m22-m00+1) |
55 | - | Handy.C0 = Handy.C0 * CFrame.new(0.05,0.07,-0.09) |
55 | + | local recip = 0.5/s |
56 | - | Handy.C0 = Handy.C0 * CFrame.Angles(-0.12,0,0) |
56 | + | return (m01+m10)*recip, 0.5*s, (m21+m12)*recip, (m02-m20)*recip |
57 | - | char.Torso["Left Shoulder"].C0 = char.Torso["Left Shoulder"].C0 * CFrame.Angles(-0.2,0,0.1) |
57 | + | elseif i == 2 then |
58 | - | end |
58 | + | local s = math.sqrt(m22-m00-m11+1) |
59 | - | char.Humanoid.WalkSpeed = 6 |
59 | + | local recip = 0.5/s |
60 | - | cough:Play() |
60 | + | return (m02+m20)*recip, (m12+m21)*recip, 0.5*s, (m10-m01)*recip |
61 | - | for i = 1,100 do |
61 | + | end |
62 | - | wait(0.05) |
62 | + | end |
63 | - | char.Humanoid.Health = char.Humanoid.Health - 1 |
63 | + | |
64 | - | end |
64 | + | function QuaternionToCFrame(px, py, pz, x, y, z, w) |
65 | - | end |
65 | + | local xs, ys, zs = x+x, y+y, z+z |
66 | local wx, wy, wz = w*xs, w*ys, w*zs | |
67 | - | function kys() |
67 | + | local xx = x*xs |
68 | - | cough:destroy() |
68 | + | local xy = x*ys |
69 | - | local ded = Instance.new("Sound", char.Head) |
69 | + | local xz = x*zs |
70 | - | ded.SoundId = "http://roblox.com/asset?id=393884633" |
70 | + | local yy = y*ys |
71 | - | ded:Play() |
71 | + | local yz = y*zs |
72 | - | end |
72 | + | local zz = z*zs |
73 | - | mouse.KeyDown:connect(cringe) |
73 | + | return CFrame.new(px, py, pz, 1-(yy+zz), xy-wz, xz+wy, xy+wz, 1-(xx+zz), yz-wx, xz-wy, yz+wx, 1-(xx+yy)) |
74 | - | char.Humanoid.Died:connect(kys) |
74 | + | |
75 | function QuaternionSlerp(a, b, t) | |
76 | local cosTheta = a[1]*b[1]+a[2]*b[2]+a[3]*b[3]+a[4]*b[4] | |
77 | local startInterp, finishInterp; | |
78 | if cosTheta >= 0.0001 then | |
79 | if (1-cosTheta) > 0.0001 then | |
80 | local theta = math.acos(cosTheta) | |
81 | local invSinTheta = 1/math.sin(theta) | |
82 | startInterp = math.sin((1-t)*theta)*invSinTheta | |
83 | finishInterp = math.sin(t*theta)*invSinTheta | |
84 | else | |
85 | startInterp = 1-t | |
86 | finishInterp = t | |
87 | end | |
88 | else | |
89 | if (1+cosTheta) > 0.0001 then | |
90 | local theta = math.acos(-cosTheta) | |
91 | local invSinTheta = 1/math.sin(theta) | |
92 | startInterp = math.sin((t-1)*theta)*invSinTheta | |
93 | finishInterp = math.sin(t*theta)*invSinTheta | |
94 | else | |
95 | startInterp = t-1 | |
96 | finishInterp = t | |
97 | end | |
98 | end | |
99 | return a[1]*startInterp+b[1]*finishInterp, a[2]*startInterp+b[2]*finishInterp, a[3]*startInterp+b[3]*finishInterp, a[4]*startInterp+b[4]*finishInterp | |
100 | end | |
101 | function Lerp(a, b, t) | |
102 | local qa = {QuaternionFromCFrame(a)} | |
103 | local qb = {QuaternionFromCFrame(b)} | |
104 | local ax, ay, az = a.x, a.y, a.z | |
105 | local bx, by, bz = b.x, b.y, b.z | |
106 | local _t = 1-t | |
107 | return QuaternionToCFrame(_t*ax+t*bx, _t*ay+t*by, _t*az+t*bz, QuaternionSlerp(qa, qb, t)) | |
108 | end | |
109 | ||
110 | for _, Obj in pairs(Workspace:GetChildren()) do | |
111 | if Obj.Name == "Awesome scary spider" then | |
112 | Obj:Destroy() | |
113 | end | |
114 | end | |
115 | ||
116 | Offset = V3(25, -0.9, 25) | |
117 | SpiderColor = "Maroon" | |
118 | ||
119 | Spider = new("Model", game.Players.LocalPlayer.Character){Name = "Awesome scary spider"} | |
120 | Platform = new("Part", Spider){Size = V3(30, 1, 30), BrickColor = BN("Really red"), Transparency = 1, CanCollide = true} | |
121 | ||
122 | Torso = new("Part", Spider){Size = V3(4, 4, 6), Name = "Torso", BrickColor = BN(SpiderColor), Transparency = 1} | |
123 | new("BlockMesh", Torso){Scale = V3(1, 1, 1)} | |
124 | new("Motor6D", Platform){Part0 = Platform, Part1 = Torso, C0 = CN(0, 5, 0)} | |
125 | TorsoA = new("Part", Spider){Size = V3(4, 5, 3), BrickColor = BN(SpiderColor)} | |
126 | new("SpecialMesh", TorsoA){MeshType = "Sphere", Scale = V3(1.5, 1.5, 1.5)} | |
127 | new("Motor6D", Torso){Part0 = Torso, Part1 = TorsoA, C0 = CA(math.rad(90), 0, 0)} | |
128 | ||
129 | Head = new("Part", Spider){Size = V3(2, 2, 2), Name = "Head", BrickColor = BN(SpiderColor), Transparency = 1} | |
130 | new("SpecialMesh", Head){MeshType = "Sphere", Scale = V3(1.5, 1.5, 1.5)} | |
131 | Neck = new("Motor6D", Torso){Part0 = Torso, Part1 = Head, C0 = CN(0, 0, -4), Name = "Neck"} | |
132 | ||
133 | FakeHead = new("Part", Spider){Size = V3(2, 2, 2), BrickColor = BN(SpiderColor)} | |
134 | new("SpecialMesh", FakeHead){MeshType = "Sphere", Scale = V3(1.5, 1.5, 1.5)} | |
135 | new("Motor6D", Head){Part0 = Head, Part1 = FakeHead, C0 = CN()} | |
136 | ||
137 | RightEye = new("Part", Spider){Size = V3(0.5, 0.5, 0.5), BrickColor = BN("White")} | |
138 | new("SpecialMesh", RightEye){MeshType = "Sphere", Scale = V3(1, 1, 1)} | |
139 | new("Motor6D", Head){Part0 = Head, Part1 = RightEye, C0 = CN(0.5, 0.25, -1.25)} | |
140 | ||
141 | LeftEye = new("Part", Spider){Size = V3(0.5, 0.5, 0.5), BrickColor = BN("White")} | |
142 | new("SpecialMesh", LeftEye){MeshType = "Sphere", Scale = V3(1, 1, 1)} | |
143 | new("Motor6D", Head){Part0 = Head, Part1 = LeftEye, C0 = CN(-0.5, 0.25, -1.25)} | |
144 | ||
145 | Torso2 = new("Part", Spider){Size = V3(5.5, 4.3, 7), BrickColor = BN(SpiderColor)} | |
146 | new("Motor6D", Torso){Part0 = Torso, Part1 = Torso2, C0 = CN(0, 0, 7)} | |
147 | new("SpecialMesh", Torso2){MeshType = "Sphere", Scale = V3(1.5, 1.5, 1.5)} | |
148 | ||
149 | RightLegs = {} | |
150 | LeftLegs = {} | |
151 | ||
152 | for L = 1, 4 do | |
153 | local RightLeg = new("Part", Spider){Size = V3(1, 5, 1), BrickColor = BN(SpiderColor)} | |
154 | new("CylinderMesh", RightLeg){Scale = V3(1, 1, 1)} | |
155 | new("Motor6D", RightLeg){Part0 = Torso, Part1 = RightLeg, C0 = CN(1.5, -1.5, -2+L)*CA(0, math.rad(45-L*15), math.rad(-60))*CN(0, 2.5, 0)} | |
156 | local RightLeg2 = new("Part", Spider){Size = V3(0.8, 5, 0.8), BrickColor = BN(SpiderColor)} | |
157 | new("CylinderMesh", RightLeg2){Scale = V3(1, 1, 1)} | |
158 | new("Motor6D", RightLeg2){Part0 = RightLeg, Part1 = RightLeg2, C0 = CN(0, 2.1, 0)*CA(0, 0, math.rad(-45))*CN(0, 2.5, 0)} | |
159 | local RightLeg3 = new("Part", Spider){Size = V3(0.6, 5, 0.6), BrickColor = BN(SpiderColor)} | |
160 | new("CylinderMesh", RightLeg3){Scale = V3(1, 1, 1)} | |
161 | new("Motor6D", RightLeg3){Part0 = RightLeg2, Part1 = RightLeg3, C0 = CN(0, 2.2, 0)*CA(0, 0, math.rad(-75))*CN(0, 2.5, 0)} | |
162 | table.insert(RightLegs, {RightLeg, RightLeg2, RightLeg3}) | |
163 | ||
164 | local LeftLeg = new("Part", Spider){Size = V3(1, 5, 1), BrickColor = BN(SpiderColor)} | |
165 | new("CylinderMesh", LeftLeg){Scale = V3(1, 1, 1)} | |
166 | new("Motor6D", LeftLeg){Part0 = Torso, Part1 = LeftLeg, C0 = CN(-1.5, -1.5, -2+L)*CA(0, math.rad(-45+L*15), math.rad(60))*CN(0, 2.5, 0)} | |
167 | local LeftLeg2 = new("Part", Spider){Size = V3(0.8, 5, 0.8), BrickColor = BN(SpiderColor)} | |
168 | new("CylinderMesh", LeftLeg2){Scale = V3(1, 1, 1)} | |
169 | new("Motor6D", LeftLeg2){Part0 = LeftLeg, Part1 = LeftLeg2, C0 = CN(0, 2.1, 0)*CA(0, 0, math.rad(45))*CN(0, 2.5, 0)} | |
170 | local LeftLeg3 = new("Part", Spider){Size = V3(0.6, 5, 0.6), BrickColor = BN(SpiderColor)} | |
171 | new("CylinderMesh", LeftLeg3){Scale = V3(1, 1, 1)} | |
172 | new("Motor6D", LeftLeg3){Part0 = LeftLeg2, Part1 = LeftLeg3, C0 = CN(0, 2.2, 0)*CA(0, 0, math.rad(75))*CN(0, 2.5, 0)} | |
173 | table.insert(LeftLegs, {LeftLeg, LeftLeg2, LeftLeg3}) | |
174 | end | |
175 | ||
176 | SpiderHumanoid = new("Humanoid", Spider){WalkSpeed = 30} | |
177 | Spider:MakeJoints() | |
178 | Platform.CFrame = CN(Offset) | |
179 | ||
180 | SpiderVelocity = new("BodyVelocity", Platform){maxForce = V3(1/0, 1/0, 1/0)} | |
181 | SpiderGyro = new("BodyGyro", Platform){maxTorque = V3(1/0, 1/0, 1/0), P = 1000, D = 100} | |
182 | ||
183 | --Now, on to the fun stuffs.. | |
184 | ||
185 | Player = Game:GetService("Players").LocalPlayer | |
186 | Mouse = Player:GetMouse() | |
187 | UserInputService = Game:GetService("UserInputService") | |
188 | Camera = Workspace.CurrentCamera | |
189 | ||
190 | --Camera.CameraType = "Scriptable" | |
191 | ||
192 | Character = Player.Character | |
193 | Character:WaitForChild("Animate"):Destroy() | |
194 | CharacterHumanoid, CharacterTorso = Character:WaitForChild("Humanoid"), Character:WaitForChild("Torso") | |
195 | CharacterHumanoid.PlatformStand = true | |
196 | CharacterHumanoid.Changed:connect(function() | |
197 | CharacterHumanoid.PlatformStand = true | |
198 | CharacterHumanoid.Jump = false | |
199 | end) | |
200 | new("Motor6D", Torso){Part0 = Torso, Part1 = CharacterTorso, C0 = CN(0, 5, 0)} | |
201 | ||
202 | Chatting = false | |
203 | Moving = false | |
204 | MaxSpeed = 30 | |
205 | Acceleration = 1 | |
206 | Deceleration = 1 | |
207 | SpeedW = 0 | |
208 | SpeedA = 0 | |
209 | SpeedS = 0 | |
210 | SpeedD = 0 | |
211 | Velocity = V3() | |
212 | CameraAngleX, CameraAngleY = 45, 45 | |
213 | Dragging = false | |
214 | Keys = {} | |
215 | ||
216 | UserInputService.InputBegan:connect(function(Input) | |
217 | local Key, InputType, Delta = Input.KeyCode.Name, Input.UserInputType.Name, Input.Delta | |
218 | if Key == "Slash" and not Chatting then | |
219 | Chatting = true | |
220 | Keys = {} | |
221 | elseif Key == "Return" and Chatting then | |
222 | Chatting = false | |
223 | elseif (Key == "W" or Key == "A" or Key == "S" or Key == "D") and not Chatting then | |
224 | Keys[Key] = true | |
225 | end | |
226 | --[[ if InputType == "MouseButton2" then | |
227 | Dragging = true | |
228 | UserInputService.MouseBehavior = "LockCurrentPosition" | |
229 | end]] | |
230 | end) | |
231 | ||
232 | --[[UserInputService.InputChanged:connect(function(Input) | |
233 | local Key, InputType, Delta, Position = Input.KeyCode.Name, Input.UserInputType.Name, Input.Delta, Input.Position | |
234 | if InputType == "MouseMovement" and Dragging then | |
235 | CameraAngleX = CameraAngleX+Delta.Y*0.2 | |
236 | if CameraAngleX > 80 then | |
237 | CameraAngleX = 80 | |
238 | elseif CameraAngleX < -80 then | |
239 | CameraAngleX = -80 | |
240 | end | |
241 | CameraAngleY = CameraAngleY-Delta.X*0.2 | |
242 | end | |
243 | end)]] | |
244 | ||
245 | UserInputService.InputEnded:connect(function(Input) | |
246 | local Key, InputType, Delta = Input.KeyCode.Name, Input.UserInputType.Name, Input.Delta | |
247 | if (Key == "W" or Key == "A" or Key == "S" or Key == "D") and not Chatting then | |
248 | Keys[Key] = nil | |
249 | end | |
250 | if InputType == "MouseButton2" then | |
251 | Dragging = false | |
252 | UserInputService.MouseBehavior = "Default" | |
253 | end | |
254 | end) | |
255 | ||
256 | function UpdateVelocity() | |
257 | if Keys["W"] then | |
258 | if SpeedW < MaxSpeed then | |
259 | SpeedW = SpeedW+Acceleration | |
260 | else | |
261 | SpeedW = MaxSpeed | |
262 | end | |
263 | else | |
264 | if SpeedW > 0 then | |
265 | SpeedW = SpeedW-Deceleration | |
266 | else | |
267 | SpeedW = 0 | |
268 | end | |
269 | end | |
270 | if Keys["A"] then | |
271 | if SpeedA < MaxSpeed then | |
272 | SpeedA = SpeedA+Acceleration | |
273 | else | |
274 | SpeedA = MaxSpeed | |
275 | end | |
276 | else | |
277 | if SpeedA > 0 then | |
278 | SpeedA = SpeedA-Deceleration | |
279 | else | |
280 | SpeedA = 0 | |
281 | end | |
282 | end | |
283 | if Keys["S"] then | |
284 | if SpeedS < MaxSpeed then | |
285 | SpeedS = SpeedS+Acceleration | |
286 | else | |
287 | SpeedS = MaxSpeed | |
288 | end | |
289 | else | |
290 | if SpeedS > 0 then | |
291 | SpeedS = SpeedS-Deceleration | |
292 | else | |
293 | SpeedS = 0 | |
294 | end | |
295 | end | |
296 | if Keys["D"] then | |
297 | if SpeedD < MaxSpeed then | |
298 | SpeedD = SpeedD+Acceleration | |
299 | else | |
300 | SpeedD = MaxSpeed | |
301 | end | |
302 | else | |
303 | if SpeedD > 0 then | |
304 | SpeedD = SpeedD-Deceleration | |
305 | else | |
306 | SpeedD = 0 | |
307 | end | |
308 | end | |
309 | Velocity = V3(SpeedD-SpeedA, 0, SpeedS-SpeedW) | |
310 | end | |
311 | ||
312 | Game:GetService("RunService").Stepped:connect(function(Time) | |
313 | --Animation | |
314 | if Moving then | |
315 | for L, Leg in pairs(RightLegs) do | |
316 | local RightLeg1 = Leg[1] | |
317 | local RightLeg2 = Leg[2] | |
318 | local RightLeg3 = Leg[3] | |
319 | ||
320 | local LeftLeg1 = LeftLegs[L][1] | |
321 | local LeftLeg2 = LeftLegs[L][2] | |
322 | local LeftLeg3 = LeftLegs[L][3] | |
323 | ||
324 | local Mult = 1-L%2*2 | |
325 | ||
326 | --C0 = CN(-1.5, -1.5, -2+L)*CA(0, math.rad(-45+L*15), math.rad(45))*CN(0, 2.5, 0) | |
327 | --C0 = CN(0, 2.1, 0)*CA(0, 0, math.rad(60))*CN(0, 2.5, 0) | |
328 | --C0 = CN(0, 2.2, 0)*CA(0, 0, math.rad(60))*CN(0, 2.5, 0) | |
329 | ||
330 | RightLeg1.Motor6D.C0 = Lerp(RightLeg1.Motor6D.C0, CN(1.5, -1.5, -2+L)*CA(0, math.rad(45-L*15+math.sin(Time*20)*Mult*30), math.rad(-45+math.sin(Time*20)*Mult*30))*CN(0, 2.5, 0), 0.1) | |
331 | LeftLeg1.Motor6D.C0 = Lerp(LeftLeg1.Motor6D.C0, CN(-1.5, -1.5, -2+L)*CA(0, math.rad(-45+L*15+math.sin(Time*20)*Mult*-30), math.rad(45+math.sin(Time*20)*Mult*-30))*CN(0, 2.5, 0), 0.1) | |
332 | end | |
333 | else | |
334 | for L, Leg in pairs(RightLegs) do | |
335 | local RightLeg1 = Leg[1] | |
336 | local RightLeg2 = Leg[2] | |
337 | local RightLeg3 = Leg[3] | |
338 | ||
339 | local LeftLeg1 = LeftLegs[L][1] | |
340 | local LeftLeg2 = LeftLegs[L][2] | |
341 | local LeftLeg3 = LeftLegs[L][3] | |
342 | ||
343 | local Mult = 1-L%2*2 | |
344 | ||
345 | --C0 = CN(-1.5, -1.5, -2+L)*CA(0, math.rad(-45+L*15), math.rad(45))*CN(0, 2.5, 0) | |
346 | --C0 = CN(0, 2.1, 0)*CA(0, 0, math.rad(60))*CN(0, 2.5, 0) | |
347 | --C0 = CN(0, 2.2, 0)*CA(0, 0, math.rad(60))*CN(0, 2.5, 0) | |
348 | ||
349 | RightLeg1.Motor6D.C0 = Lerp(RightLeg1.Motor6D.C0, CN(1.5, -1.5, -2+L)*CA(0, math.rad(45-L*15), math.rad(-45))*CN(0, 2.5, 0), 0.25) | |
350 | LeftLeg1.Motor6D.C0 = Lerp(LeftLeg1.Motor6D.C0, CN(-1.5, -1.5, -2+L)*CA(0, math.rad(-45+L*15), math.rad(45))*CN(0, 2.5, 0), 0.25) | |
351 | end | |
352 | end | |
353 | end) | |
354 | Game:GetService("RunService").RenderStepped:connect(function() | |
355 | UpdateVelocity() | |
356 | if math.abs(SpiderVelocity.velocity.X) > 0 or math.abs(SpiderVelocity.velocity.Z) > 0 then | |
357 | Moving = true | |
358 | else | |
359 | Moving = false | |
360 | end | |
361 | local CoordinateFrame2D = CN(V3(Camera.CoordinateFrame.X, Platform.CFrame.Y, Camera.CoordinateFrame.Z), Platform.Position) | |
362 | local RelativeVelocity = CoordinateFrame2D*Velocity-CoordinateFrame2D.p | |
363 | SpiderVelocity.velocity = RelativeVelocity | |
364 | SpiderGyro.cframe = CN(CoordinateFrame2D.p, Platform.Position) | |
365 | ||
366 | --Camera:Interpolate(CN(Torso.Position)*CA(0, math.rad(CameraAngleY), 0)*CA(math.rad(CameraAngleX), 0, 0)*CN(0, 0, -20), Torso.CFrame, 0.01) | |
367 | end) |