I am making this projectile system but I don’t know if I should set every value in the table to nil when I am done with it, I know that I should destroy it but I don’t know whether to set my values in the self table nil so they don’t make my game lose memory.
Module script of projectile:
local Debris = game:GetService("Debris")
local RunService = game:GetService("RunService")
local numTable = {
CFrame.new(-2,0,-1),
CFrame.new(2,0,-1),
}
local CD = 3
local Projectile = {}
Projectile.__index = Projectile
function Projectile.new(root)
local self = setmetatable({},Projectile)
self.Ball = script.Ball:Clone()
self.IK = Instance.new("IKControl")
self.LV = Instance.new("LinearVelocity")
self.VF = Instance.new("VectorForce")
self.Root = root
self.RandomNumber = math.random(1,#numTable)
return self
end
function Projectile:HandleKinematics()
self.IK.Type = Enum.IKControlType.Transform
self.IK.ChainRoot = self.Root.Parent.UpperTorso
if self.RandomNumber == 1 then
self.IK.EndEffector = self.Root.Parent.LeftHand
elseif self.RandomNumber == 2 then
self.IK.EndEffector = self.Root.Parent.RightHand
end
self.IK.Target = self.Ball
return self.IK
end
function Projectile:HandleVelocity()
self.LV.Attachment0 = self.Ball.Attachment
self.LV.VectorVelocity = self.Ball.CFrame.LookVector * 50
self.LV.MaxForce = 1e6
self.LV.Parent = self.Ball
return self.LV
end
function Projectile:HandleForce()
self.VF.Attachment0 = self.Ball.Attachment
self.VF.Force = Vector3.new(0,workspace.Gravity * self.Ball:GetMass(),0)
self.VF.ApplyAtCenterOfMass = true
self.VF.Parent = self.Ball
return self.VF
end
function Projectile:HandleBall()
self.Ball.CFrame = self.Root.CFrame * numTable[self.RandomNumber]
self.Ball.Parent = workspace
end
function Projectile:Init()
self:HandleBall()
local VF = self:HandleForce()
local LV = self:HandleVelocity()
local IK = self:HandleKinematics()
task.spawn(function()
VF.Parent = self.Ball
IK.Parent = self.Ball
task.wait(.25)
LV.Parent = self.Ball
Debris:AddItem(IK,.1)
Debris:AddItem(VF,CD)
Debris:AddItem(LV,CD)
Debris:AddItem(self.Ball,CD)
end)
end
return Projectile
