Making wall jump and wall slide

i have searched everywhere but i found nothing…
here’s a unity tutorial that makes what I want

2 Likes

3d or 2d? Also do you have a problem?

If there isn’t a problem there is nothing to solve.

I’m making the system right now. It might take a while to make, So be patient. Right now I’m almost done with the sliding.

3 Likes

well, the camera is 2d but everything else is 3d

Maybe taking a look at this would help.

Another one that may also be some use.

Roblox has a tutorial on the DevHub about double jumping if you needed that at all or if anyone wants that:

Hope this helps. :slight_smile:

hmmm ive looked everywhere and i don’t think those are the right thing

I made a wall jump and wall slide system and figured it out. Last night I made the slide system. That was pretty easy. All you need to do is make a Body Velocity. That slows the player down while falling or jumping. It makes the player slower while touching the wall.

local BodyVelocity = Instance.new("BodyVelocity")
		
BodyVelocity.Velocity = Vector3.new(0, -10, 0)

BodyVelocity.Parent = player.Character.HumanoidRootPart

That’s an example I used in my script. Then I made an animation of a player sliding on the wall.
Then I added a little extra. I added some dust on the player’s hand from falling.
Here is the code for the sliding:

local Slide = workspace.Slide

Slide.Touched:Connect(function(obj)
	local BodyVelocity = Instance.new("BodyVelocity")
		
BodyVelocity.Velocity = Vector3.new(0, -10, 0)

BodyVelocity.Parent = player.Character.HumanoidRootPart

local Anim = player.Character.Humanoid:WaitForChild("Animator")

local Animation = Instance.new("Animation")

Animation.AnimationId = "rbxassetid://7102656249"

local slideAnim = Anim:LoadAnimation(Animation)

local smoke = Instance.new("Smoke")

smoke.Parent = player.Character.RightHand

smoke.Size = Vector3.new(1, 1, 1)

smoke.Color = Slide.Color

slideAnim:Play()

then I made the wall jump system. All I did was what @Reditect did. I made it so the player could jump when the player was on the wall.

Here is the script overall:

local player = game.Players.LocalPlayer

local Slide = workspace.Wall1.Slide

local Slide2 = workspace.Wall2.Slide
local UserInputService = game:GetService("UserInputService")
local localPlayer = game.Players.LocalPlayer
local character
local humanoid

local canDoubleJump = false
local hasDoubleJumped = false
local oldPower
local TIME_BETWEEN_JUMPS = 0.2
local DOUBLE_JUMP_POWER_MULTIPLIER = 2

function onJumpRequest()
	if not character or not humanoid or not character:IsDescendantOf(workspace) or
		humanoid:GetState() == Enum.HumanoidStateType.Dead then
		return
	end

	if canDoubleJump and not hasDoubleJumped then
		hasDoubleJumped = true
		humanoid.JumpPower = oldPower * DOUBLE_JUMP_POWER_MULTIPLIER
		humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
	end
end

local function characterAdded(newCharacter)
	character = newCharacter
	humanoid = newCharacter:WaitForChild("Humanoid")
	hasDoubleJumped = false
	canDoubleJump = false
	oldPower = humanoid.JumpPower

humanoid.StateChanged:connect(function(old, new)
	if new == Enum.HumanoidStateType.Landed then
		canDoubleJump = false
		hasDoubleJumped = false
		humanoid.JumpPower = oldPower
	elseif new == Enum.HumanoidStateType.Freefall then
		wait()
		canDoubleJump = true
	end
end)
end

localPlayer.CharacterAdded:connect(characterAdded)

        Slide.Touched:Connect(function(obj)
	local BodyVelocity = Instance.new("BodyVelocity")
		
BodyVelocity.Velocity = Vector3.new(0, -10, 0)

BodyVelocity.Parent = player.Character.HumanoidRootPart

local Anim = player.Character.Humanoid:WaitForChild("Animator")

local Animation = Instance.new("Animation")

Animation.AnimationId = "rbxassetid://7102656249"

local slideAnim = Anim:LoadAnimation(Animation)

local smoke = Instance.new("Smoke")

smoke.Parent = player.Character.RightHand

smoke.Size = Vector3.new(1, 1, 1)

smoke.Color = Slide.Color

slideAnim:Play()

player.Character.Humanoid.JumpHeight = 30

UserInputService.JumpRequest:connect(function()
	onJumpRequest()
	BodyVelocity:Destroy()
	slideAnim:Stop()
	smoke:Destroy()
end)

Slide.TouchEnded:Connect(function()
	onJumpRequest()
	BodyVelocity:Destroy()
	slideAnim:Stop()
	smoke:Destroy()
	canDoubleJump = false
	player.Character.Humanoid.JumpHeight = 30		
end)
  end)

    Slide2.Touched:Connect(function(obj)
local BodyVelocity = Instance.new("BodyVelocity")

BodyVelocity.Velocity = Vector3.new(0, -10, 0)

BodyVelocity.Parent = player.Character.HumanoidRootPart

local Anim = player.Character.Humanoid:WaitForChild("Animator")

local Animation = Instance.new("Animation")

Animation.AnimationId = "rbxassetid://7102656249"

local slideAnim = Anim:LoadAnimation(Animation)

local smoke = Instance.new("Smoke")

smoke.Parent = player.Character.RightHand

smoke.Size = Vector3.new(1, 1, 1)

smoke.Color = Slide.Color

slideAnim:Play()

player.Character.Humanoid.JumpHeight = 30

UserInputService.JumpRequest:connect(function()
	onJumpRequest()
	BodyVelocity:Destroy()
	slideAnim:Stop()
	smoke:Destroy()
end)

Slide2.TouchEnded:Connect(function()
	onJumpRequest()
	BodyVelocity:Destroy()
	slideAnim:Stop()
	smoke:Destroy()
	canDoubleJump = false
	player.Character.Humanoid.JumpHeight = 30
	end)
end)

Here is the open-sourced game:

Open-Sourced game

Here is a video of it

The wall jump didn’t work as planned. You can just edit the jump power settings.
At least the wall slide worked. I hope this is what you are looking for. I fixed the wall jump a little bit, not too much. It’s still extremely hard to get to the top.

That was me almost making it to the top. If it’s too hard to wall jump then change the jump power or jump height. You can also change the body velocity.

Anyways, Enjoy the wall jump and slide system. Lol, It took me an eternity to make it.

1 Like

where would i put this script in? starterpack?

is this a part im supposed to name? (idk if im right but i think you need to add “game.” into it)

1 Like

Yes your supposed to name it a something like that. No, you do not need to add game to it. I see what you are saying. You can do no game because it is easier to do.

1 Like

No. Put it in StarterPlayer, StarterCharacrterScripts.

1 Like

what about the player errors?
i added local player = game.players.local player
and there is a end error

you forgot to close the function. Put an end at the end of the code. Is the error in local player = game.Players.LocalPlayer line 3? Make sure.

Screen Shot 2021-07-16 at 7.56.58 AM

Is the error fixed? or is it still messed up?

yea its still have that error for some reason ;-;

Give me an example of the code. Is the error in the game I made or the game your making?

in mine(btw ur is not uncopylocked)

hmm weird that’s my bad lol. Im going to fix that.