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

Why is my BodyGyro's and BodyAngularVelocities acting so strangely?

Asked by 8 years ago

I'm sorry if this is a little bit long but here's my code: Also here's my place here. You also need to hold right click for moving your ship to work, so yeah. There's no errors, it just acts strangely.

local UIS = game:GetService("UserInputService")
local spaceship = workspace:WaitForChild("SpacePart")
local gyro = spaceship:WaitForChild("BodyGyro")
local ang = spaceship:WaitForChild("BodyAngularVelocity")
gyro.MaxTorque = Vector3.new(0,0,math.huge)
local speed = 200
local yRot = 0
local xRot = 0


UIS.InputChanged:connect(function(input)
    print("Input changed.")
    if input.UserInputType == Enum.UserInputType.MouseMovement then
        print(input.Position)
        print(input.Delta)
        xRot = input.Delta.x * 1000-- + xRot
        yRot = input.Delta.y + yRot
        gyro.CFrame = CFrame.Angles(0, 0, math.rad(-yRot))--CFrame.Angles(input.Delta.x,input.Delta.y,input.Delta.z)
        ang.AngularVelocity = Vector3.new(0, math.rad(-xRot), 0)
    end
end)

UIS.InputBegan:connect(function(input)
    if input.KeyCode == Enum.KeyCode.A then
        local velocity = Instance.new("BodyVelocity", spaceship)
        velocity.Name = "VelocityA"
        velocity.Velocity = spaceship.CFrame.lookVector * speed
    end
        if input.KeyCode == Enum.KeyCode.D then
        local velocity = Instance.new("BodyVelocity", spaceship)
        velocity.Name = "VelocityD"
        velocity.Velocity = spaceship.CFrame.lookVector * -speed
    end --
    if input.KeyCode == Enum.KeyCode.S then
        local velocity = Instance.new("BodyVelocity", spaceship)
        velocity.Name = "VelocityS"
        velocity.Velocity = (spaceship.CFrame * CFrame.Angles(0, math.pi/2, 0)).lookVector * speed --Thanks to SH!
    end
    if input.KeyCode == Enum.KeyCode.W then
        local velocity = Instance.new("BodyVelocity", spaceship)
        velocity.Name = "VelocityW"
        velocity.Velocity = (spaceship.CFrame * CFrame.Angles(0, math.pi/2, 0)).lookVector * -speed --Thanks to SH!
    end
end)

UIS.InputEnded:connect(function(input)
    if input.KeyCode == Enum.KeyCode.W then
        local badVelocity = spaceship:FindFirstChild("VelocityW")
        if badVelocity then
            badVelocity:Destroy()
        end
    end
    if input.KeyCode == Enum.KeyCode.S then
        local badVelocity = spaceship:FindFirstChild("VelocityS")
        if badVelocity then
            badVelocity:Destroy()
        end
    end
    if input.KeyCode == Enum.KeyCode.A then
        local badVelocity = spaceship:FindFirstChild("VelocityA")
        if badVelocity then
            badVelocity:Destroy()
        end
    end
    if input.KeyCode == Enum.KeyCode.D then
        local badVelocity = spaceship:FindFirstChild("VelocityD")
        if badVelocity then
            badVelocity:Destroy()
        end
    end
end)

I hope somebody can help, I can't figure out why it's doing this.

Answer this question