Соединение сетки с веревочными ограничениями

Я пытаюсь сделать своего рода "симуляцию ткани", используя новые ограничения веревки 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();

Если это не работает для вас, пожалуйста, дайте мне знать. Я могу связаться с вами с самого сайта, если это необходимо.

Другие вопросы по тегам