Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local ball_size = 8
- local UserInputService = game:GetService("UserInputService")
- local RunService = game:GetService("RunService")
- local Camera = workspace.CurrentCamera
- local SPEED_MULTIPLIER = 30
- local JUMP_POWER = 60
- local JUMP_GAP = 0.3
- local character = game.Players.LocalPlayer.Character
- for i,v in ipairs(character:GetDescendants()) do
- if v:IsA("BasePart") then
- v.CanCollide = false
- end
- end
- local ball = character.HumanoidRootPart
- ball.Shape = Enum.PartType.Ball
- local size = ball_size
- ball.Size = Vector3.new(size,size,size)
- local humanoid = character:WaitForChild("Humanoid")
- local params = RaycastParams.new()
- params.FilterType = Enum.RaycastFilterType.Blacklist
- params.FilterDescendantsInstances = {character}
- local tc = RunService.RenderStepped:Connect(function(delta)
- ball.CanCollide = true
- humanoid.PlatformStand = true
- if UserInputService:GetFocusedTextBox() then return end
- if UserInputService:IsKeyDown("W") then
- ball.RotVelocity -= Camera.CFrame.RightVector * delta * SPEED_MULTIPLIER
- end
- if UserInputService:IsKeyDown("A") then
- ball.RotVelocity -= Camera.CFrame.LookVector * delta * SPEED_MULTIPLIER
- end
- if UserInputService:IsKeyDown("S") then
- ball.RotVelocity += Camera.CFrame.RightVector * delta * SPEED_MULTIPLIER
- end
- if UserInputService:IsKeyDown("D") then
- ball.RotVelocity += Camera.CFrame.LookVector * delta * SPEED_MULTIPLIER
- end
- --ball.RotVelocity = ball.RotVelocity - Vector3.new(0,ball.RotVelocity.Y/50,0)
- end)
- UserInputService.JumpRequest:Connect(function()
- local result = workspace:Raycast(
- ball.Position,
- Vector3.new(
- 0,
- -((ball.Size.Y/2)+JUMP_GAP),
- 0
- ),
- params
- )
- if result then
- ball.Velocity = ball.Velocity + Vector3.new(0,JUMP_POWER,0)
- end
- end)
- Camera.CameraSubject = ball
- humanoid.Died:Connect(function() tc:Disconnect() end)
Add Comment
Please, Sign In to add comment