How to Start Making Your Own Platformers

Hello,
you might of saw my posts about platformers, etc, well I’m going to tell you how to get started on your own Platformer!

Step 1

Biography about Body Velocities.

If you know about body velocities they can make things move just like this:

All you have to do to make a part move is insert a body velocity and click run:
LOLOL

This could be sped up.

These Body Velocities can be added to the player too.


Here is an example for a bare-bones fly script.

--Local script in statercharacterscripts
local c = script.Parent

local V  =Instance.new("BodyVelocity", c.HumanoidRootPart)

V.Velocity = c.HumanoidRootPart.CFrame.LookVector * 10

Here is the script.

Next we will be learning about look vectors!

Step 2

Learning About Look Vectors

Lets start by putting a empty local script in StarterCharacterScripts and name it “LookVectorTest”
1111

a2e22222

First we will get the players input by using “UserInputService”

local UIS = game:GetService("UserInputService")

local c = script.Parent

UIS.InputBegan:Connect(function(key)
	if key.KeyCode == Enum.KeyCode.E then
		--Function
	end
end)

Alright, next create a new function, I’m going to name it “VelocityFunction”

local UIS = game:GetService("UserInputService")

local c = script.Parent

function VelocityFunction()
	--The script
end

UIS.InputBegan:Connect(function(key)
	if key.KeyCode == Enum.KeyCode.E then
		VelocityFunction()
	end
end)

Next I am going to add a velocity to the player.

Add this inside the function:

	local V = Instance.new("BodyVelocity", c.HumanoidRootPart)
	V.MaxForce = Vector3.new(math.huge,0,math.huge)
	V.Velocity = c.HumanoidRootPart.CFrame.LookVector * 100
	wait(.2)
	V:Destroy()

Your final script should look like this.

local UIS = game:GetService("UserInputService")

local c = script.Parent

function VelocityFunction()
	local V = Instance.new("BodyVelocity", c.HumanoidRootPart)
	V.MaxForce = Vector3.new(math.huge,0,math.huge)
	V.Velocity = c.HumanoidRootPart.CFrame.LookVector * 100
	wait(.2)
	V:Destroy()
end

UIS.InputBegan:Connect(function(key)
	if key.KeyCode == Enum.KeyCode.E then
		VelocityFunction()
	end
end)

By pressing E you should preform some sort of dash move.

If you are seeing how the player dashes where the player is facing it is does with this line

	V.Velocity = c.HumanoidRootPart.CFrame.LookVector * 100

Look Vectors are helpful in making platformers, they detect which way an object is facing.

Step 3

Advancing in Animations

Now, I’m not the best animator, but I’ll at least try.
If you play around with animation editor you can make something to your liking.

Example:

Now place the animation you made in ReplicatedStorage.
AnimASDASD

Add this line of code in the function and you will be ready to go!

	c.Humanoid:LoadAnimation(game.ReplicatedStorage.PlayerAnim):Play()
Step 4

Digging Deeper into Debounce

If you didn’t notice if you spam the key E it will act all weird.

You can fix this easily with 3 lines of code.

local canBoost = true

local UIS = game:GetService("UserInputService")

local c = script.Parent

function VelocityFunction()
	if canBoost then
		canBoost = false
	local V = Instance.new("BodyVelocity", c.HumanoidRootPart)
	V.MaxForce = Vector3.new(math.huge,0,math.huge)
	V.Velocity = c.HumanoidRootPart.CFrame.LookVector * 100
	c.Humanoid:LoadAnimation(game.ReplicatedStorage.PlayerAnim):Play()
	wait(.2)
		V:Destroy()
		canBoost= true
		end
end

UIS.InputBegan:Connect(function(key)
	if key.KeyCode == Enum.KeyCode.E then
		VelocityFunction()
	end
end)

Yeah uh, that’s it for this section…

Step 5

Particles, yes… just particles ;-;

You can add any particle you want just make it emit from the back.
sadsadsadsadsadsad

Now put your particle in ReplicatedStorage.
sadsadsadsadsadsaddsadsaddsa

Again to add them just put 3 lines of code

Note

Make sure if your rig is R6 set it to “Torso” instead of “LowerTorso”

local canBoost = true

local UIS = game:GetService("UserInputService")

local c = script.Parent

function VelocityFunction()
	if canBoost then
		canBoost = false
		
		local particles = game.ReplicatedStorage.Smoke:Clone() -- your particle name
		particles.Parent = c.LowerTorso
		
	local V = Instance.new("BodyVelocity", c.HumanoidRootPart)
	V.MaxForce = Vector3.new(math.huge,0,math.huge)
	V.Velocity = c.HumanoidRootPart.CFrame.LookVector * 100
	c.Humanoid:LoadAnimation(game.ReplicatedStorage.PlayerAnim):Play()
	wait(.2)
		V:Destroy()
		particles:Destroy()
		canBoost= true
		end
end

UIS.InputBegan:Connect(function(key)
	if key.KeyCode == Enum.KeyCode.E then
		VelocityFunction()
	end
end)

As you can see it emits the particles.

Final

Final
I am going to add some final touches, I am not going to say much just fixing bugs :happy1:

Here is the final script!

local canBoost = true

local UIS = game:GetService("UserInputService")

local c = script.Parent

function VelocityFunction()
	if canBoost and c.Humanoid.MoveDirection ~= Vector3.new(0,0,0) then
		canBoost = false
		
		local particles = game.ReplicatedStorage.Smoke:Clone() -- your particle name
		particles.Parent = c.LowerTorso
		
	local V = Instance.new("BodyVelocity", c.HumanoidRootPart)
	V.MaxForce = Vector3.new(math.huge,0,math.huge)
	V.Velocity = c.HumanoidRootPart.CFrame.LookVector * 100
		c.Humanoid:LoadAnimation(game.ReplicatedStorage.PlayerAnim):Play()
		c.Humanoid.AutoRotate = false
		game.ReplicatedStorage.Boost:Play()
	wait(.2)
		V:Destroy()
		particles:Destroy()
		canBoost= true
		c.Humanoid.AutoRotate = true
		end
end

UIS.InputBegan:Connect(function(key)
	if key.KeyCode == Enum.KeyCode.E then
		VelocityFunction()
	end
end)

Make sure to put a sound called “Boost” in Replicated Storage.
asdsadsadsadsadsadsaddsadsadsadsadsaads

Thanks for reading!

Was this helpful?
  • Yes
  • No

0 voters

Here’s the place link
You will have to make your own animations.

Feedback is appreciated, including criticism :+1:

For the people who skipped through the whole thing:
Mission Passed
Respect+

5 Likes

Either stick to making a video or writing an article. This post looks bad, horribly formatted and the frequent comedic reliefs gets annoying. Also you don’t have to post til you are done, you can close down a draft and reopen it at a later date.

1 Like

Then don’t post til you are ready, what is the problem?

Something about the format of this tutorial seems off…

1 Like

This tutorial looks cool.! I know how this works. But I learned some things. Thnx.!

1 Like

This will sadly not be updated, ye ;-;

This is helpful, but the presentation was off. I’m bookmarking this so I can come back to it someday. Maybe tamper around with the script to match my likings.

1 Like