Classe motore
PartOperation
*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.
Sommario
Proprietà
Metodi
SubstituteGeometry(source: Instance):() |
Membri ereditati
Membri ereditati da TriangleMeshPart: 3
Membri ereditati da BasePart: 105
Membri ereditati da PVInstance: 4
Membri ereditati da Instance: 57
Membri ereditati da Object: 6
Ereditata da
Riferimento API
Proprietà
Metodi
SubstituteGeometry
Parametri
Restituzioni
()
Campioni di codice
Geometria di Sostituzione e Vincoli di Caduta
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,
}
-- Esegui l'operazione di unione in pcall() poiché è asincrona
local success, newParts = pcall(function()
return GeometryService:UnionAsync(mainPart, otherParts, options)
end)
if success and #newParts > 0 and mainPart:IsA("PartOperation") then
-- Imposta il primo pezzo nell'operazione risultante come parte da usare per la sostituzione
-- Il primo pezzo è semplicemente un'opzione; questo può essere qualsiasi PartOperation
local substitutePart = newParts[1]
-- Riposiziona la parte nella posizione della parte principale
substitutePart.CFrame = mainPart.CFrame
-- Calcola i vincoli/allegati da mantenere o rimuovere
local recommendedTable = GeometryService:CalculateConstraintsToPreserve(mainPart, newParts, constraintOptions)
-- Sostituisci la geometria della parte principale con la geometria di sostituzione
mainPart:SubstituteGeometry(substitutePart)
-- Rimuovi vincoli/allegati che non vengono automaticamente mantenuti con la sostituzione
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
-- Distruggi altre parti
for _, otherPart in pairs(otherParts) do
otherPart.Parent = nil
otherPart:Destroy()
end
end