Engine-Klasse
PartOperation
*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.
Zusammenfassung
Eigenschaften
Methoden
SubstituteGeometry(source: Instance):() |
Geerbte Mitglieder
3 von TriangleMeshPart geerbt
105 von BasePart geerbt
4 von PVInstance geerbt
58 von Instance geerbt
6 von Object geerbt
Geerbt von
API-Referenz
Eigenschaften
Methoden
SubstituteGeometry
Parameter
Rückgaben
()
Code-Beispiele
Ersatzgeometrie und Einschränkungen entfernen
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,
}
-- Führen Sie die Vereinigungsoperation in pcall() aus, da sie asynchron ist
local success, newParts = pcall(function()
return GeometryService:UnionAsync(mainPart, otherParts, options)
end)
if success and #newParts > 0 and mainPart:IsA("PartOperation") then
-- Setzen Sie das erste Teil in der resultierenden Operation als Teil, der für den Ersatz verwendet werden soll
-- Das erste Teil ist einfach eine Option; dies kann jede PartOperation sein
local substitutePart = newParts[1]
-- Positionieren Sie das Teil an der Position des Hauptteils
substitutePart.CFrame = mainPart.CFrame
-- Berechnen Sie die Einschränkungen/Anschlüsse, die entweder beibehalten oder entfernt werden sollen
local recommendedTable = GeometryService:CalculateConstraintsToPreserve(mainPart, newParts, constraintOptions)
-- Ersetzen Sie die Geometrie des Hauptteils durch die Ersatzgeometrie
mainPart:SubstituteGeometry(substitutePart)
-- Entfernen Sie Einschränkungen/Anschlüsse, die mit dem Ersatz nicht automatisch beibehalten werden
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
-- Zerstören Sie andere Teile
for _, otherPart in pairs(otherParts) do
otherPart.Parent = nil
otherPart:Destroy()
end
end