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

Player doesn't move their body towards the direction of the camera?

Asked by 6 years ago

This script is supposed to let you fly when you press V. It works and the player's body moves towards the direction of the player's camera. But when I equip a tool that uses both of the player's hands, it doesn't let me move the player's body up or down when moving the camera, only sideways. This doesn't happen when you equip a tool that uses one hand.

How do I make it so that the player moves their body towards the direction of the camera when they are equipping a tool that uses both hands?

Here is the code inside a LocalScript.

game.Players.LocalPlayer.Character:findFirstChild("Torso") 
game.Players.LocalPlayer.Character:findFirstChild("Humanoid") 
local mouse = game.Players.LocalPlayer:GetMouse() 
repeat wait() until mouse
local plr = game.Players.LocalPlayer 
local torso = plr.Character.Torso 
local flying = false 
local ctrl = {f = 0, b = 0, l = 0, r = 0} 
local lastctrl = {f = 0, b = 0, l = 0, r = 0}  
local speed = 60

function Fly()
    local bg = Instance.new("BodyGyro", torso) 
    bg.P = 9e4 
    bg.maxTorque = Vector3.new(9e3, 9e3, 9e3) 
    bg.cframe = torso.CFrame 
    local bv = Instance.new("BodyVelocity", torso) 
    bv.velocity = Vector3.new(0,0,0) 
    bv.maxForce = Vector3.new(9e9, 9e9, 9e9) 
        repeat wait() 
        plr.Character.Humanoid.PlatformStand = true 
            if (ctrl.l + ctrl.r) ~= 0 or (ctrl.f + ctrl.b) ~= 0 then 
                bv.velocity = ((game.Workspace.CurrentCamera.CoordinateFrame.lookVector * (ctrl.f+ctrl.b)) + ((game.Workspace.CurrentCamera.CoordinateFrame * CFrame.new(ctrl.l+ctrl.r,(ctrl.f+ctrl.b)*0,0).p) - game.Workspace.CurrentCamera.CoordinateFrame.p))*60
                lastctrl = {f = ctrl.f, b = ctrl.b, l = ctrl.l, r = ctrl.r} 
            elseif (ctrl.l + ctrl.r) == 0 and (ctrl.f + ctrl.b) == 0 and speed ~= 0 then 
                bv.velocity = ((game.Workspace.CurrentCamera.CoordinateFrame.lookVector * (lastctrl.f+lastctrl.b)) + ((game.Workspace.CurrentCamera.CoordinateFrame * CFrame.new(lastctrl.l+lastctrl.r,(lastctrl.f+lastctrl.b)*0,0).p) - game.Workspace.CurrentCamera.CoordinateFrame.p))*0 
            else 
                bv.velocity = Vector3.new(0,0,0) 
            end 
        bg.cframe = game.Workspace.CurrentCamera.CoordinateFrame 
        until not flying 
            ctrl = {f = 0, b = 0, l = 0, r = 0} 
            lastctrl = {f = 0, b = 0, l = 0, r = 0} 
            speed = 0 
            bg:Destroy() 
            bv:Destroy() 
            plr.Character.Humanoid.PlatformStand = false 
        end 

mouse.KeyDown:connect(function(key) 
    if key:lower() == "w" then 
        ctrl.f = 1 
    elseif key:lower() == "s" then 
        ctrl.b = -1 
    elseif key:lower() == "a" then 
        ctrl.l = -1 
    elseif key:lower() == "d" then 
        ctrl.r = 1 
    end 
end) 

mouse.KeyUp:connect(function(key) 
    if key:lower() == "w" then 
        ctrl.f = 0 
    elseif key:lower() == "s" then 
        ctrl.b = 0 
    elseif key:lower() == "a" then 
        ctrl.l = 0 
    elseif key:lower() == "d" then 
        ctrl.r = 0 
    end 
end)
Fly()

game:GetService("UserInputService").InputBegan:connect(function(input,event)
    if event then return end
if input.KeyCode == Enum.KeyCode.ButtonB or input.KeyCode == Enum.KeyCode.V then
        if (flying == false) then
            flying = true
            Fly()
        elseif (flying == true) then
            flying = false
        end
    end
end)

Answer this question