DataModelMesh
*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.
El DataModelMesh es una clase abstracta de la que descendan clases de malla.
Las clases Mesh son objetos que, cuando se vinculan a BaseParts alteran la apariencia de la parte a la de un malla predeterminada. Nota, solo alteran la apariencia de la parte y no las fronteras de colisión/colisión de la parte. Los desarrolladores que buscan aplicar una malla a una parte que cambia la colisión de la parte deben usar MeshParts .
Nota que las clases MeshPart y CharacterMesh no descendientes de DataModelMesh.
Resumo
Propriedades
El Offset de una malla determina la posición relativa desde el BasePart.Position de un BasePart que la malla se mostrará en.
La escala de una malla determina el tamaño de la malla en relación con sus dimensiones originales.
Cambia el color de la textura de una malla, usado con FileMesh.TextureId .
Propriedades
Offset
El Offset de una malla determina la distancia desde el BasePart.Position de un BasePart que la malla se mostrará.
Cómo usar el desplazamiento de malla
La propiedad Offset cambia la posición relativa en la que se renderizará el malla. Por ejemplo, un desplazamiento de 0, 5, 0 causará que el malla se muestre 5 studs por encima de la posición de la BasePart .
La posición de la BasePart no cambia, lo que significa que la caja de colisión de física de la parte permanecerá en la misma ubicación. Esto se demuestra en la imagen a continuación donde el contorno verde (un SelectionBox ) muestra los límites de la BasePart .
Otros usos para la compensación de malla
Hay un número de usos interesantes para la propiedad de la ofseta de malla.
- El desplazamiento y DataModelMesh.Scale se pueden animar utilizando TweenService relativamente a bajo costo, ya que el motor no necesita realizar ningún cálculo de física/colisión como la BasePart no se mueve.
- Cambiar la relación entre la malla y sus extensiones de colisión (determinadas por el BasePart )
Amostras de código
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
La escala de una malla determina el tamaño de la malla en relación con sus dimensiones originales.
Cómo usar redimensionarde malla
La propiedad de escala funciona ligeramente diferente dependiendo del tipo de malla utilizada. Nota que el tamaño del BasePart no cambia, lo que significa que la caja de colisión de física de la parte seguirá siendo la misma.
- SpecialMesh objetos con SpecialMesh.FileType configurado para 'FileMesh' en relación con las dimensiones originales del lienzo cuando se cargó en Roblox
- BlockMesh objetos o SpecialMesh objetos con SpecialMesh.FileType configurado como 'Ladrillo', 'Cuña' o 'Esfera' de forma uniforme en relación con la 0> Class.BasePart.Size0> de sus padres
- CylinderMesh objetos o SpecialMesh objetos con SpecialMesh.FileType configurado para escalar relativo a la escala de 0> Class.BasePart.Size0> de su padre. Uniformemente para la altura y el ancho del cilindro, manteniendo un valor de 1: 1 para la altura y el ancho
- SpecialMesh objetos con SpecialMesh.FileType establecido para 'Head' actualmente escala de forma no estándar. Los desarrolladores no deben confiar en esto como sus planes para cambiar este comportamiento
- SpecialMesh objetos con SpecialMesh.FileType establecido para escalar en un tamaño de Class.SpecialMesh no estándar. Los desarrolladores no deben confiar en esto como sus planes para desactualizar este introducirde malla.
Demostración de escalado de malla
El comportamiento anterior se puede ver en las siguientes imágenes de demostración.
Eche escalas lineales en función del tamaño de la parte para los meshes 'Ladrillo', 'Cuña' y 'Esfera'.
Escala de línea en relación con el malla original para 'FileMesh' meshes
Escalado no uniforme restringido para mallas 'Cylinder'
Otros usos para redimensionarde malla
Hay un número de usos interesantes para la propiedad de la ofseta de malla.
- DataModelMesh.Offset y Scale se pueden animar utilizando TweenService relativamente a bajo costo, ya que el motor no necesita realizar ningún cálculo de física/colisión como la BasePart no se cambia.
- Cambiar la relación entre la malla y sus extensiones de colisión (determinadas por el BasePart )
Amostras de código
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()