0% found this document useful (0 votes)
368 views

Fe - Ball Script

This document contains code to control a player's character as a ball in a game. It sets the character's parts to not collide, makes the root part a ball, connects input controls to rotate and jump the ball, and sets the camera to follow the ball. It also disconnects the input handling if the player dies.

Uploaded by

Valenton634
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
368 views

Fe - Ball Script

This document contains code to control a player's character as a ball in a game. It sets the character's parts to not collide, makes the root part a ball, connects input controls to rotate and jump the ball, and sets the camera to follow the ball. It also disconnects the input handling if the player dies.

Uploaded by

Valenton634
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 2

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 = 9.5

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
ball.Size = Vector3.new(5,5,5)
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("C") then
ball.RotVelocity -= Camera.CFrame.RightVector * delta * SPEED_MULTIPLIER
end
if UserInputService:IsKeyDown("V") then
ball.RotVelocity -= Camera.CFrame.LookVector * delta * SPEED_MULTIPLIER
end
if UserInputService:IsKeyDown("X") then
ball.RotVelocity += Camera.CFrame.RightVector * delta * SPEED_MULTIPLIER
end
if UserInputService:IsKeyDown("Z") 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)

You might also like