Engine Class
GeometryService
*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่
สรุป
วิธีการ
CalculateConstraintsToPreserve(source: Instance,destination: {any},options: Dictionary):{any} |
FragmentAsync(part: BasePart,sites: {any},options: Dictionary):{any} |
GenerateFragmentSites(part: BasePart,options: Dictionary):{any} |
IntersectAsync(part: Instance,parts: {any},options: Dictionary):{any} |
SubtractAsync(part: Instance,parts: {any},options: Dictionary):{any} |
SweepPartAsync(part: BasePart,cframes: {any},options: Dictionary):MeshPart |
UnionAsync(part: Instance,parts: {any},options: Dictionary):{any} |
เอกสารอ้างอิงเกี่ยวกับ API
วิธีการ
CalculateConstraintsToPreserve
GeometryService:CalculateConstraintsToPreserve(
พารามิเตอร์
| ค่าเริ่มต้น: "nil" |
ส่งค่ากลับ
ตัวอย่างโค้ด
รักษาข้อจำกัด
local GeometryService = game:GetService("GeometryService")
local main, other = workspace.Part1, workspace.Part2
local success, newParts = pcall(function()
return GeometryService:SubtractAsync(main, {other})
end)
if success and newParts then
for _, p in newParts do p.Parent = workspace end
for _, rec in GeometryService:CalculateConstraintsToPreserve(main, newParts) do
if rec.Constraint then
rec.Constraint.Parent = rec.ConstraintParent
end
end
end
main:Destroy()
other:Destroy()FragmentAsync
พารามิเตอร์
| ค่าเริ่มต้น: "nil" |
ส่งค่ากลับ
ตัวอย่างโค้ด
แตกชิ้นส่วนของพาร์ต
local GeometryService = game:GetService("GeometryService")
local inputPart = Instance.new("Part")
inputPart.Position = Vector3.new(0, 0.7, 20)
local sites = GeometryService:GenerateFragmentSites(inputPart)
local success, fragments = pcall( function()
return GeometryService:FragmentAsync(inputPart, sites)
end)
if success and fragments then
for _, item in fragments do
local instance = item.Instance
instance.Parent = workspace
end
endGenerateFragmentSites
พารามิเตอร์
| ค่าเริ่มต้น: "nil" |
ส่งค่ากลับ
ตัวอย่างโค้ด
ชิ้นส่วนที่แปลเปลี่ยน
local GeometryService = game:GetService("GeometryService")
local inputPart = workspace.Part
local pos = inputPart.Position + inputPart.Size / 2
local sites = GeometryService:GenerateFragmentSites(inputPart, {Origin = pos, Radius = 1.5})
local success, fragments = pcall( function()
return GeometryService:FragmentAsync(inputPart, sites)
end)
if success and fragments then
for _, item in fragments do
local instance = item.Instance
instance.Parent = inputPart.Parent
end
inputPart:Destroy()
endIntersectAsync
พารามิเตอร์
| ค่าเริ่มต้น: "nil" |
ส่งค่ากลับ
ตัวอย่างโค้ด
รวมสองส่วน
local GeometryService = game:GetService("GeometryService")
local mainPart = Instance.new("Part")
local otherPart = Instance.new("Part")
otherPart.Position = Vector3.new(1, 0.5, 1)
local success, newParts = pcall(function()
return GeometryService:IntersectAsync(mainPart, {otherPart})
end)
if success and newParts then
for _, newPart in pairs(newParts) do
newPart.Parent = workspace
end
endSubtractAsync
พารามิเตอร์
| ค่าเริ่มต้น: "nil" |
ส่งค่ากลับ
ตัวอย่างโค้ด
ลบสองส่วน
local GeometryService = game:GetService("GeometryService")
local mainPart = Instance.new("Part")
local otherPart = Instance.new("Part")
otherPart.Position = Vector3.new(1, 0.5, 1)
local success, newParts = pcall(function()
return GeometryService:SubtractAsync(mainPart, {otherPart})
end)
if success and newParts then
for _, newPart in pairs(newParts) do
newPart.Parent = workspace
end
endSweepPartAsync
พารามิเตอร์
| ค่าเริ่มต้น: "nil" |
ส่งค่ากลับ
ตัวอย่างโค้ด
กวาดวัตถุ
local GeometryService = game:GetService("GeometryService")
local inputPart = Instance.new("Part")
inputPart.Shape = Enum.PartType.Ball
local cframeList = {}
for i = 1, 50 do
local rotation = CFrame.Angles(0, i * 0.2, 0)
local position = Vector3.new(0, i * 0.1, -1)
table.insert(cframeList, rotation * CFrame.new(position))
end
local success, sweptPart = pcall( function()
return GeometryService:SweepPartAsync(inputPart, cframeList)
end)
if success and sweptPart then
sweptPart.Parent = workspace
endUnionAsync
พารามิเตอร์
| ค่าเริ่มต้น: "nil" |
ส่งค่ากลับ
ตัวอย่างโค้ด
รวมสองส่วน
local GeometryService = game:GetService("GeometryService")
local mainPart = Instance.new("Part")
local otherPart = Instance.new("Part")
otherPart.Position = Vector3.new(1, 0.5, 1)
local success, newParts = pcall(function()
return GeometryService:UnionAsync(mainPart, {otherPart})
end)
if success and newParts then
for _, newPart in pairs(newParts) do
newPart.Parent = workspace
end
end