I have made numerous 2-Dimensional games on ROBLOX and this is usually the script I use to set a 2-Dimensional environment for the player.
01 | function GetMass(object) |
03 | if pcall ( function () return object:GetMass() end ) then |
04 | mass = object:GetMass() |
06 | for _,child in pairs (object:GetChildren()) do |
07 | mass = mass + GetMass(child) |
12 | function onPlayerRespawned(newPlayer) |
14 | local torso = newPlayer.Character.Torso |
15 | local bp = Instance.new( "BodyPosition" ) |
17 | bp.position = torso.Position |
20 | bp.maxForce = Vector 3. new( 0 , 0 , 1000000 ) |
22 | local bf = Instance.new( "BodyForce" ) |
23 | bf.force = Vector 3. new( 0 , 100 *GetMass(newPlayer.Character), 0 ) |
25 | newPlayer.Character.Humanoid.WalkSpeed = 24 |
26 | script.LocalScript:Clone().Parent = torso.Parent |
27 | newPlayer.Character.DescendantAdded:connect( function () |
28 | bf.force = Vector 3. new( 0 , 100 *GetMass(newPlayer.Character), 0 ) |
30 | newPlayer.Character.DescendantRemoving:connect( function () |
31 | bf.force = Vector 3. new( 0 , 100 *GetMass(newPlayer.Character), 0 ) |
35 | function onPlayerEntered(newPlayer) |
36 | if newPlayer.Character then |
37 | onPlayerRespawned(newPlayer) |
39 | newPlayer.Changed:connect( function (property) |
40 | if (property = = "Character" ) and newPlayer.Character then |
41 | onPlayerRespawned(newPlayer) |
46 | game.Players.PlayerAdded:connect(onPlayerEntered) |
So, you can put this script in the Workspace. Then insert a LocalScript inside the script (yes, that is script-ception) and paste this into the LocalScript.
05 | local torso = script.Parent.Torso |
06 | local center = Instance.new( "Part" ) |
07 | center.Name = script.Parent.Name .. " Center" |
08 | center.Transparency = 1 |
09 | center.CanCollide = false |
10 | center.Size = Vector 3. new( 1 , 1 , 1 ) |
11 | center.Position = torso.Position |
12 | center.CFrame = CFrame.new(Vector 3. new( 0 , 0 , 0 ),Vector 3. new( 0 , 0 ,- 1 )) |
13 | center.Parent = game.Workspace |
14 | local bp = Instance.new( "BodyPosition" ) |
15 | bp.position = center.Position |
16 | bp.maxForce = Vector 3. new( 1000000 , 1000000 , 1000000 ) |
18 | local bg = Instance.new( "BodyGyro" ) |
19 | bg.maxTorque = Vector 3. new( 9 e+ 005 , 9 e+ 005 , 9 e+ 005 ) |
20 | bg.cframe = center.CFrame |
22 | local cam = game.Workspace.CurrentCamera |
23 | cam.CameraSubject = center |
24 | cam.CameraType = Enum.CameraType.Attach |
28 | center.BodyPosition.position = torso.Position |
30 | cam.CoordinateFrame = CFrame.new(Vector 3. new(center.Position.x + distance,center.Position.y + height,center.Position.z)) |
Hope this helps!