Соединение сетки с веревочными ограничениями
Я пытаюсь сделать своего рода "симуляцию ткани", используя новые ограничения веревки ROBLOX и сетку деталей.
В настоящее время я сделал сетку размером 10х10 из блоков размером 4х4х4, и теперь я хочу соединить каждый из них с помощью веревочных ограничений.
Я назвал каждую часть в сетке после их строки и столбца (например: первая часть в сетке - 1 1, последняя - 10 10)
а затем я получаю части вокруг каждой отдельной части сетки, используя их имена и манипуляции со строками.
Затем я вставляю 4 насадки в каждую часть и 4 ограничения веревки. Вот код (ab обозначает выше, be обозначает ниже и т. Д.):
for i2 = 1, #gParts do
local ab = tostring(tonumber(gParts[i2].Name:match("^(%S+)"))-5).." "..tostring(tonumber(string.sub(gParts[i2].Name,-1))-1)
local be = tostring(tonumber(gParts[i2].Name:match("^(%S+)"))+5).." "..tostring(tonumber(string.sub(gParts[i2].Name,-1))+1)
local le = tostring(tonumber(gParts[i2].Name:match("^(%S+)"))-1).." "..tostring(tonumber(string.sub(gParts[i2].Name,-1)))
local ri = tostring(tonumber(gParts[i2].Name:match("^(%S+)"))+1).." "..tostring(tonumber(string.sub(gParts[i2].Name,-1)))
for i3 = 1, 4 do
local atchm = Instance.new("Attachment",gParts[i2])
local ropeconst = Instance.new("RopeConstraint",gParts[i2])
end
end
Веревочное ограничение имеет 2 основных свойства, которые мне нужно использовать; приложение 1 и приложение 2.
1 ответ
Я никогда не сталкивался с новыми ограничениями, но считаю, что это должно сработать.
Имейте в виду, что ограничения - это новый экземпляр в Roblox, и что они, вероятно, все еще являются экспериментальными.
X = 10;
Y = 10;
spread = 4;
--Spread is the Length of the Constraint. You may have to increase this, especially if it's stiff.
function createAttachments()
--This is under the assumption that gParts is a table filled with the Part Instances
for i,v in pairs(gParts) do
local atch = Instance.new("Attachment",v);
end;
end;
function connectConstraints(part,x,y)
if x ~= X then
connectRight = x+1.." "..y;
end;
if y ~= Y then
connectDown = x.." "..y+1;
end;
if connectRight ~= nil then
local ropeconst = Instance.new("RopeConstraint",part);
ropeconst.Length = spread;
ropeconst.Attachment0 = part.Attachment;
ropeconst.Attachment1 = connectRight.Attachment;
end;
if connectLeft ~= nil then
local ropeconst = Instance.new("RopeConstraint",part);
ropeconst.Length = spread;
ropeconst.Attachment0 = part.Attachment;
ropeconst.Attachment1 = connectLeft.Attachment;
end
end
createAttachments();
connectConstraints();
Если это не работает для вас, пожалуйста, дайте мне знать. Я могу связаться с вами с самого сайта, если это необходимо.