i am trying to make a soccer net using verlet integration...i have the script but i dont know how to put it to work...please help?
local apart = game.Workspace.AnchorPart; local ppart = game.Workspace.PlanePart; local previousTime = tick();
function cloth(corner, width, height, length)
local points = {};
local constraints = {};
local m = math.sqrt(length^2 + length^2);
for y = 0, height do
for x = 0, width do
points[y] = points[y] or {};
points[y][x] = point.new((corner * CFrame.new(x, y, 0)).p);
if x ~= 0 then
local c = constraint.new(points[y][x], points[y][x-1], length);
c.line.Parent = game.Workspace.CurrentCamera;
table.insert(constraints, c);
end;
if y ~= 0 then
local c = constraint.new(points[y][x], points[y-1][x], length);
c.line.Parent = game.Workspace.CurrentCamera;
table.insert(constraints, c);
--[[
-- structure makes a difference!
if x < width then
local c = constraint.new(points[y][x], points[y-1][x+1], m);
c.line.Parent = game.Workspace.CurrentCamera;
table.insert(constraints, c);
end;
--]]
end;
if y == 0 then
points[y][x].anchored = true;
end;
end;
end;
return points, constraints;
end;
local width, height, length = 10, 10, 2; local cpoints, cconstraints = cloth(apart.CFrame, width, height, length);
function update() local delta = tick() - previousTime; previousTime = tick(); local col = collision.new(ppart); for i = 0, height do if i == 0 then for i2 = 0, width do local x = cpoints[i][i2]; x.position = (apart.CFrame * CFrame.new(i2 * length, 0, 0)).p; end; end; for i2 = 0, width do local x = cpoints[i][i2]; x:update(delta, 0.9985); --[[ -- collision local lide = col:pointToPlanes(x.position); if lide then x.position = lide; end; --]] end; end; for i = 1, 15 do for _, c in ipairs(cconstraints) do c:solve(); end; end; for _, c in ipairs(cconstraints) do c:draw(); end; end;
game:getService("RunService").Stepped:connect(update);