Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

Hoverboard is going wrong way when pressing w, a, s, d keys?

Asked by 2 years ago

Server script:

local pps = game:GetService("ProximityPromptService")


local bp = Instance.new("BodyPosition")
bp.D = 1000
bp.MaxForce = Vector3.new(0, 0, 0)
bp.Parent = script.Parent

local bg = Instance.new("BodyGyro")
bg.MaxTorque = Vector3.new(0, 0, 0)
bg.Parent = script.Parent

pps.PromptTriggered:Connect(function(prompt, player)

    if prompt == script.Parent.ProximityPrompt then

        script.Parent:SetNetworkOwner(player)

        game.ReplicatedStorage.HoverboardRE:FireClient(player, script.Parent)

        bp.MaxForce = Vector3.new(math.huge, math.huge, math.huge)
        bg.MaxTorque = Vector3.new(math.huge, math.huge, math.huge)

        prompt.Enabled = false

        local character = player.Character

        character.Humanoid.WalkSpeed = 0


        local weld = Instance.new("Weld", script.Parent)

        weld.Part0 = script.Parent
        weld.Part1 = character.HumanoidRootPart

        weld.C0 = CFrame.new(0, (character.HumanoidRootPart.Size.Y * 0.5) + character.Humanoid.HipHeight, 0)
        weld.C0 *= CFrame.Angles(0, 1.2, 0)
    end
end)


game.ReplicatedStorage.HoverboardRE.OnServerEvent:Connect(function(player)

    if player == script.Parent:GetNetworkOwner() then

        script.Parent:SetNetworkOwner()

        bp.MaxForce = Vector3.new(0, 0, 0)
        bg.MaxTorque = Vector3.new(0, 0, 0)

        script.Parent.ProximityPrompt.Enabled = true

        script.Parent.Weld:Destroy()

        player.Character.Humanoid.WalkSpeed = 16

    end
end)

Local script:

local uis = game:GetService("UserInputService")
local cas = game:GetService("ContextActionService")

local re = game.ReplicatedStorage:WaitForChild("HoverboardRE")

local currentHoverboard = nil


local rotation = 0
local movement = 0


uis.InputBegan:Connect(function(inp, processed)

    if inp.KeyCode == Enum.KeyCode.F and not processed then

        re:FireServer()

        currentHoverboard = nil

        rotation = 0
        movement = 0

        cas:UnbindAction("LeftHoverboard")
        cas:UnbindAction("RightHoverboard")
        cas:UnbindAction("ForwardHoverboard")
        cas:UnbindAction("BackwardHoverboard")
        cas:UnbindAction("UpHoverboard")
    end
end)


re.OnClientEvent:Connect(function(board)

    currentHoverboard = board

    cas:BindAction("LeftHoverboard", rotate, false, "a")
    cas:BindAction("RightHoverboard", rotate, false, "d")
    cas:BindAction("ForwardHoverboard", move, false, "w")
    cas:BindAction("BackwardHoverboard", move, false, "s")
    cas:BindAction("UpHoverboard", up, false, "spacebar")
end)


function rotate(actionName, actionState)

    rotation = 
        actionName == "LeftHoverboard" and actionState == Enum.UserInputState.Begin and 20 
        or actionName == "RightHoverboard" and actionState == Enum.UserInputState.Begin and -20
        or 0
end

function move(actionName, actionState)

    movement =
        actionName == "ForwardHoverboard" and actionState == Enum.UserInputState.Begin and -8
        or actionName == "BackwardHoverboard" and actionState == Enum.UserInputState.Begin and 8
        or actionName == "UpHoverboard" and actionState == Enum.UserInputState.Begin and 8
        or 0
end


game:GetService("RunService").Heartbeat:Connect(function()

    if currentHoverboard then

        local ray = Ray.new(currentHoverboard.Position, -currentHoverboard.CFrame.UpVector * 1000)
        local part = workspace:FindPartOnRayWithIgnoreList(ray, {currentHoverboard})

        local groundY = part.Position.Y + (part.Size.Y / 2)

        currentHoverboard.BodyPosition.Position = Vector3.new(currentHoverboard.Position.X, groundY + 1.5, currentHoverboard.Position.Z) + (currentHoverboard.CFrame.RightVector * movement)-- + Vector3.new(0, groundY + 2, 0)
        currentHoverboard.BodyGyro.CFrame = currentHoverboard.CFrame * CFrame.Angles(0, rotation, 0)

        script.Parent.HumanoidRootPart.Velocity = Vector3.new()
    end
end)

Answer this question