Hello DevForum.
Today, I’ve considered making a game like wipeout, and one of the most famous things in wipeout, besides the epic fail complimations, is the bouncy balls. I would like to know how I could make a ball, that on the touch of a humanoid character, it bounces the character and somewhat makes it more difficult to get to the next bouncy ball, all the way until they get to the end of that part of the course. Any help is appreciated,
Thanks!
-SourSkittIes
7 Likes
Hey! So there are many ways to do this. You could use body positions and just make the Y vector force to a high value.
Or you can just set the character’s JumpPower to something like 200 and then make the Humanoid property called Jumped set to true so it forces them to jump and then set it back to normal.
This probably isn’t the best method, but it would be how I would do it. I never saw the need to make anything of this sort so don’t take my word for this being the most efficient way of doing this.
I would use CollectionService and tag the bouncy balls but for the sake of this tutorial I’ll just keep it simple and use a script inside of the part.
Note: I haven’t tested this so it may not function correctly, but this is how it should look to some extent.
local deb = false
local BOOST_JUMP = 200
local NORMAL_JUMP = 100
script.Parent.Touched:Connect(function(hit)
local player = hit.Parent:FindFirstAncestorWhichIsA('Model')
local humanoid = player:FindFirstChild('Humanoid')
if player and humanoid and not deb then
humanoid.JumpPower = JUMP_POWER
humanoid.Jump = true
humanoid.JumpPower = NORMAL_JUMP
deb = true
wait(2)
deb = false
end
end)
5 Likes
You could kind of make it bouncy by adding a body force or something to the HumanoidRootPart of the character like:
local part = script.Parent
local db = false
part.Touched:Connect(function(hit)
if db == false then
db = true
local force = Instance.new("BodyForce")
-- You could mess with the properties here
force.Parent = hit.Parent:FindFirstChild("HumanoidRootPart")
debris:AddItem(force, 1)
wait(1)
db = false
end
return
end)
Zero idea if it will work. But, that should be somewhat accurate. I don’t know the properties of a body force that you need to edit off the top of my head but you could play around with it! 
2 Likes
local alreadyUsed = false
local velocity = 200
script.Parent.Touched:Connect(function(hit)
local chr = hit.Parent
if chr:IsA("Model") and chr:FindFirstChild("Humanoid") then
if alreadyUsed == false then
script.Parent.Velocity = Vector3.new(0, velocity, 0)
alreadyUsed = true
wait(3)
alreadyUsed = false
--should throw a player INSANELY high, fast. Change velocity to something more suitable. :)--
end
end
end)
3 Likes
hey there. Just a 5-hour-later checkup, how did it go?
It went pretty good, I couldn’t get the first script to work for some reason, even when I edited it, the second script I toyed around with properties and it worked well, and your script I also toyed around with velocity and it ended up working out pretty well, overall I picked yours since it seemed the simplest and had the lowest amount of code, thank you everyone else for the help though, it really helped me!
1 Like
After a bit more testing, I realized that on every 3rd bounce it bounces higher than the other previous bounces, is there any way that I can edit this to either make it less high or non-existent, or completely random? (I just don’t know what part of the script it is)
Yay! I’m glad you found one! 
1 Like
oh, add this after alreadyUsed = false:
script.Parent.Velocity = Vector3.new(0,0,0)
That should work. Also, make sure to mark the solution when you find one! 
Did this work?
1 Like
Here, I modified the one using BodyForces.
local db = false
local force1 = 2500
local forcelifetime = 1
local debouncetime = 1
part.Touched:Connect(function(hit)
if db == false then
db = true
local force = Instance.new("BodyForce")
-- You could mess with the properties here
force.Parent = hit.Parent:FindFirstChild("HumanoidRootPart")
game:GetService("Debris"):AddItem(force, forcelifetime)
force.Force = Vector3.new(0,force1, 0)
wait(debouncetime)
db = false
end
return
end)
There.
3 Likes
Ok, thanks for doing that. I could not for the life of me remember how to change the force of a body force. (I did not have studio open…) 
1 Like