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

Why does my plane lag?

Asked by 8 years ago

So, I am making a plane script ( I started 1 hour ago ) and its going well, except the fact that when I test it online it lags. Now, I am aware that scripts run slower on their servers than in studio but is there a way of getting around this lag?

Here's the localscript that rotates the plane, ect:

local plr   = game.Players.LocalPlayer
local m     = plr:GetMouse()
local run   = game:GetService("RunService")
local cam   = workspace.CurrentCamera
local user  = game:GetService("UserInputService")
local CurrentSpeed = 30
local CurrentMass = 0
local x,y = 0,0

function GetBankAngle(M)
    local VSX,X = M.ViewSizeX,M.X
    local Ratio = (((VSX / 2) - X)/(VSX / 2))
    Ratio = (Ratio < -1 and -1 or Ratio > 1 and 1 or Ratio)
    return math.rad(Ratio * 90)
end
onchar = function(char)

local plane = game.ReplicatedStorage:WaitForChild("Plane"):Clone()
plane.Parent = workspace.Planes
local function GetPlaneMass()
    local m = 0
    local function Scan(p)
        for _,o in pairs(p:GetChildren()) do
            if (o:IsA("BasePart")) then m = (m+o:GetMass()) end
            Scan(o)
        end
    end
    Scan(plane)
    CurrentMass = m
    return m
end

cam.CameraSubject = plane.Stats
m.TargetFilter = nil
char.Parent = nil

plane:MoveTo(Vector3.new(math.random(-200,200),100,math.random(-200,200)))
print("GOT THIS FAR OYE22")
local turn,force = game.ReplicatedStorage.Setup:InvokeServer(plane)
--plane.Propellar:InvokeServer(true)
print("GOT THIS FAR OYE")
user.InputChanged:connect(function(obj)
    if obj.UserInputType == Enum.UserInputType.MouseMovement then
        x = obj.Delta.x
        y = obj.Delta.y
    end
end)
wait(1)
local update = run.RenderStepped:connect(function()
    print(update)
    local dir   = m.Hit.p
    local mass = plane.HumanoidRootPart:GetMass()
    --[[for _,v in pairs(plane:GetChildren()) do
        if v:IsA("BasePart") or v:IsA("UnionOperation") then
            mass = mass+v:GetMass()
        end
    end--]]
    force.Velocity = (plane.HumanoidRootPart.CFrame.lookVector*CurrentSpeed)
    turn.CFrame = CFrame.new(plane.HumanoidRootPart.CFrame.p,dir)*CFrame.Angles(math.rad(x/16),math.rad(y/16),0) *CFrame.Angles(0,0, GetBankAngle(m))
end)

end
onchar(plr.Character)
plr.CharacterAdded:connect(onchar)




Answer this question