DataModelMesh
*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.
Das DataModelMesh ist eine abstrakte Klasse, von der Netzwerkklassen abstehen.
Mesh-Klassen sind Objekte, die, wenn sie an BaseParts übergeben werden, das Aussehen des Teils auf das eines vordefinierten Meshes ändern.Beachten Sie, dass sie nur das Aussehen des Teils ändern und nicht die Physik-/Kollisionsgrenzen des Teils.Entwickler, die ein Mesh auf ein Teil anwenden möchten, das die Kollision des Teils ändert, sollten MeshParts verwenden.
Beachten Sie, dass die MeshPart- und CharacterMesh-Klassen nicht von DataModelMesh absteigen.
Zusammenfassung
Eigenschaften
Der Versatz eines Meshes bestimmt die relative Position aus dem BasePart.Position eines BasePart, an dem das Netz angezeigt wird.
Die Größe eines Netzes bestimmt die Größe des Netzes im Verhältnis zu seinen ursprünglichen Dimensionen.
Ändert den Farbton der Textur eines Meshes, wird mit FileMesh.TextureId verwendet.
Eigenschaften
Offset
Der Versatz eines Meshes bestimmt die Entfernung vom BasePart.Position eines BasePart, das das Netz angezeigt wird.
Wie man Mesh-Versatz verwendet
Die Offset-Eigenschaft ändert die relative Position, in der das Netz gerendert wird.Zum Beispiel verursacht ein Versatz von 0, 5, 0, dass das Netz 5 Stollen über der Position des BasePart angezeigt wird.
Die Position des BasePart bleibt unverändert, was bedeutet, dass die Physik-Kollisionsbox des Teils an derselben Stelle bleibt.Dies wird im Bild unten gezeigt, wo der grüne Umriss (ein SelectionBox ) die Grenzen des BasePart zeigt.
Andere Verwendungen für Mesh-Versatz
Es gibt eine Reihe interessanter Verwendungen für die EigenschaftenOffset des Meshes.
- Versatz und DataModelMesh.Scale können mit TweenService relativ kostengünstig animiert werden, da die Engine keine Physik-/Kollisionsberechnungen durchführen muss, da der BasePart nicht bewegt wird.
- Ändern der Beziehung zwischen dem Mesh und seinen Kollisionsgrenzen (bestimmt durch das BasePart )
Code-Beispiele
In this code sample a BasePart is instanced with a SpecialMesh. The DataModelMesh.Scale and DataModelMesh.Offset properties of the SpecialMesh are then animated using TweenService.
local TweenService = game:GetService("TweenService")
-- instance a part and a mesh
local part = Instance.new("Part")
part.Size = Vector3.new(4, 8, 4)
part.Position = Vector3.new(0, 4, 0)
part.Anchored = true
part.CanCollide = false
local mesh = Instance.new("SpecialMesh")
mesh.MeshType = Enum.MeshType.FileMesh
mesh.MeshId = "rbxassetid://1086413449"
mesh.TextureId = "rbxassetid://1461576423"
mesh.Offset = Vector3.new(0, 0, 0)
mesh.Scale = Vector3.new(4, 4, 4)
mesh.Parent = part
-- selection box to show part extents
local box = Instance.new("SelectionBox")
box.Adornee = part
box.Parent = part
-- parent part to workspace
part.Parent = workspace
-- animate offset and scale with a tween
local tween = TweenService:Create(
mesh,
TweenInfo.new(1, Enum.EasingStyle.Linear, Enum.EasingDirection.Out, -1, true, 0),
{ Scale = Vector3.new(1, 1, 1), Offset = Vector3.new(0, 3, 0) }
)
tween:Play()
Scale
Die Größe eines Netzes bestimmt die Größe des Netzes im Verhältnis zu seinen ursprünglichen Dimensionen.
Wie man Größenverhältnisverwendet
Die Skalierungseigenschaft funktioniert je nach verwendetem Meshtyp etwas unterschiedlich.Beachten Sie die Größe der BasePart bleibt unverändert, was bedeutet, dass die Physik-Kollisionsbox des Teils gleich bleibt.
- SpecialMesh Objekte mit SpecialMesh.FileType Set auf "FileMesh"-Skalierung in Bezug auf die ursprünglichen Dimensionen des Meshes, als es auf Roblox hochgeladen wurde
- BlockMesh Objekte oder SpecialMesh Objekte mit SpecialMesh.FileType Skalierung auf "Ziegel", "Keil" oder "Sphäre" im Verhältnis zum BasePart.Size ihres übergeordnetes Teil
- CylinderMesh Objekte oder SpecialMesh Objekte mit SpecialMesh.FileType Skalierung auf "Zylinder" im Verhältnis zu der BasePart.Size ihres übergeordnetes Teil.Uniform für die Höhenachse der Zylinder und die Aufrechterhaltung eines Verhältnisses von 1:1 für die Länge und Breite des Zylinders, mit dem niedrigsten Wert.
- SpecialMesh Objekte mit SpecialMesh.FileType werden derzeit auf nicht standardmäßige Weise skaliert.Entwickler sollten sich nicht darauf verlassen, da es Pläne gibt, dieses Verhalten zu ändern.
- SpecialMesh Objekte mit SpecialMesh.FileType Skalierung auf "Torso" in einer nicht standardmäßigen Weise.Entwickler sollten sich nicht darauf verlassen, da es Pläne gibt, diesen eingebenzu deprecieren.
Mesh-Skalierungsdemonstration
Das oben beschriebene Verhalten kann in den folgenden Demonstrationsbildern gesehen werden.
Lineare Skalierung in Bezug auf die Größe eines Teils für "Ziegel", "Keil" und "Kugel" Meshes.
Lineare Skalierung in Bezug auf das ursprünglich hochgeladene Netz für "FileMesh"-Netze
Nicht-uniforme begrenzte Skalierung für 'Zylinder'-Meshes
Andere Verwendungen für Größenverhältnis
Es gibt eine Reihe interessanter Verwendungen für die EigenschaftenOffset des Meshes.
- DataModelMesh.Offset und Skalierung können mit TweenService relativ kostengünstig animiert werden, da die Engine keine Physik-/Kollisionsberechnungen durchführen muss, da sich die BasePart nicht ändert.
- Ändern der Beziehung zwischen dem Mesh und seinen Kollisionsgrenzen (bestimmt durch das BasePart )
Code-Beispiele
In this code sample a BasePart is instanced with a SpecialMesh. The DataModelMesh.Scale and DataModelMesh.Offset properties of the SpecialMesh are then animated using TweenService.
local TweenService = game:GetService("TweenService")
-- instance a part and a mesh
local part = Instance.new("Part")
part.Size = Vector3.new(4, 8, 4)
part.Position = Vector3.new(0, 4, 0)
part.Anchored = true
part.CanCollide = false
local mesh = Instance.new("SpecialMesh")
mesh.MeshType = Enum.MeshType.FileMesh
mesh.MeshId = "rbxassetid://1086413449"
mesh.TextureId = "rbxassetid://1461576423"
mesh.Offset = Vector3.new(0, 0, 0)
mesh.Scale = Vector3.new(4, 4, 4)
mesh.Parent = part
-- selection box to show part extents
local box = Instance.new("SelectionBox")
box.Adornee = part
box.Parent = part
-- parent part to workspace
part.Parent = workspace
-- animate offset and scale with a tween
local tween = TweenService:Create(
mesh,
TweenInfo.new(1, Enum.EasingStyle.Linear, Enum.EasingDirection.Out, -1, true, 0),
{ Scale = Vector3.new(1, 1, 1), Offset = Vector3.new(0, 3, 0) }
)
tween:Play()
VertexColor
VertexColor bestimmt die Farbänderung des Texture eines FileMesh.Beachten Sie, dass diese Eigenschaft eine Vector3 ist, anstatt eine Color3 ; um zu konvertieren, verwenden Sie die Color3.R , Color3.G und Color3.B Eigenschaften.
Obwohl diese Eigenschaft die grundlegende Änderung einer Textur ermöglicht, bietet die Änderung einer Textur vollständig mehr Kontrolle. Siehe MeshPart für weitere Details.