使用绳索约束连接网格
Connecting a grid up with rope constraints
我正在尝试通过使用 ROBLOX 的新绳索约束和零件网格来制作一种 "cloth simulation"。
目前,我已经制作了一个由 .4x.4x.4 块组成的 10x10 网格,现在我想用绳索约束将每个块连接起来。
我已经根据行和列命名了网格中的每个部分(例如:网格中的第一部分是 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
绳索约束有两个我需要使用的主要属性;附件 1 和附件 2。
我从来没有真正搞砸过新的约束,但我相信这应该有效。
请记住,约束是 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();
如果这对您不起作用,请告诉我。如果需要,我可以通过网站本身与您联系。
我正在尝试通过使用 ROBLOX 的新绳索约束和零件网格来制作一种 "cloth simulation"。
目前,我已经制作了一个由 .4x.4x.4 块组成的 10x10 网格,现在我想用绳索约束将每个块连接起来。
我已经根据行和列命名了网格中的每个部分(例如:网格中的第一部分是 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
绳索约束有两个我需要使用的主要属性;附件 1 和附件 2。
我从来没有真正搞砸过新的约束,但我相信这应该有效。
请记住,约束是 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();
如果这对您不起作用,请告诉我。如果需要,我可以通过网站本身与您联系。