Klasa silnika
PartOperation
*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.
Podsumowanie
Właściwości
Metody
SubstituteGeometry(source: Instance):() |
Członkowie odziedziczeni
3 odziedziczonych od: TriangleMeshPart
105 odziedziczonych od: BasePart
4 odziedziczonych od: PVInstance
57 odziedziczonych od: Instance
6 odziedziczonych od: Object
Odziedziczone przez:
Materiały referencyjne dotyczące interfejsów API
Właściwości
Metody
SubstituteGeometry
Parametry
Zwroty
()
Przykłady kodu
Zastąpienie geometrii i usuwanie ograniczeń
local GeometryService = game:GetService("GeometryService")
local mainPart = workspace.PurpleBlock
local otherParts = { workspace.BlueBlock }
local options = {
CollisionFidelity = Enum.CollisionFidelity.Default,
RenderFidelity = Enum.RenderFidelity.Automatic,
SplitApart = false,
}
local constraintOptions = {
tolerance = 0.1,
weldConstraintPreserve = Enum.WeldConstraintPreserve.All,
}
-- Wykonaj operację unii w pcall() ponieważ jest asynchroniczna
local success, newParts = pcall(function()
return GeometryService:UnionAsync(mainPart, otherParts, options)
end)
if success and #newParts > 0 and mainPart:IsA("PartOperation") then
-- Ustaw pierwszy element w wynikowej operacji jako część do użycia do zastąpienia
-- Pierwsza część to po prostu opcja; może to być dowolny PartOperation
local substitutePart = newParts[1]
-- Przenieś część na pozycję głównej części
substitutePart.CFrame = mainPart.CFrame
-- Oblicz ograniczenia/załączniki, które należy zachować lub usunąć
local recommendedTable = GeometryService:CalculateConstraintsToPreserve(mainPart, newParts, constraintOptions)
-- Zastąp geometrię głównej części geometrią zastępczą
mainPart:SubstituteGeometry(substitutePart)
-- Usuń ograniczenia/załączniki, które nie są automatycznie zachowane przy zastąpieniu
for _, item in pairs(recommendedTable) do
if item.Attachment then
if item.ConstraintParent == nil then
item.Constraint.Parent = nil
end
if item.AttachmentParent == nil then
item.Attachment.Parent = nil
end
elseif item.WeldConstraint then
if item.Parent == nil then
item.WeldConstraint.Parent = nil
end
end
end
-- Zniszcz inne części
for _, otherPart in pairs(otherParts) do
otherPart.Parent = nil
otherPart:Destroy()
end
end