My first ROBLOX game is going to be 2D, so I only want the player to use A and D to move and use W to jump and S to crouch, so W and S still have to be useable. I'm not sure if it's necessary, but here's my local script for jumping:
--LOCAL SCRIPT
--PUT THIS SCRIPT INSIDE OF STARTERGUI
local player = game.Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
local mouse = player:GetMouse()
local jumpEvent = game:GetService("ReplicatedStorage"):WaitForChild("jumpEvent") --Waits for the remoteEvent to be created by the server
mouse.KeyDown:Connect(function(key)
if string.lower(key) == "w" then
jumpEvent:FireServer() --send a message to the server to tell the player to jump
end
end)
and here's my server script:
--SERVER SCRIPT
local jumpEvent = Instance.new("RemoteEvent", game:GetService("ReplicatedStorage")) -- create the remoteEvent
jumpEvent.Name = "jumpEvent"
jumpEvent.OnServerEvent:Connect(function(player) -- receive the message from the local script
print("Jumped")
player.Character.Humanoid.Jump = true
end)
I've tried to change the property in StarterPlayer to scriptable and add each control individually, but I can't figure out what event to use that makes you walk in a certain direction because most of them are used to teleport the player. Also, I'm not sure how to make the player continue walking when holding the button down.
Here's what I tried in my local script for moving right:
--LOCAL SCRIPT
--PUT THIS SCRIPT INSIDE OF STARTERGUI
local player = game.Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
local mouse = player:GetMouse()
local moveRight = game:GetService("ReplicatedStorage"):WaitForChild("moveRight") --Waits for the remoteEvent to be created by the server
mouse.KeyDown:Connect(function(key)
if string.lower(key) == "d" then
moveRight:FireServer() --send a message to the server to tell the player to jump
end
end)
I've also tried to change the if then part to a while loop but that just loops the action forever.
Here's the server script:
--SERVER SCRIPT
local moveRight = Instance.new("RemoteEvent", game:GetService("ReplicatedStorage")) -- create the remoteEvent
moveRight.Name = "moveRight"
moveRight.OnServerEvent:Connect(function(player) -- receive the message from the local script
print("Moved right.")
player.Character.Humanoid:Move(Vector3.new(0,16,0), true)
end)
The move right scripts doesn't seem to do anything, but I can't think of anything else that would work.
I hope that you guys can help! Thanks!
