SpecialMesh

Mostrar obsoleto

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

El objeto SpecialMesh aplica un malla a un BasePart dependiendo de la propiedad MeshType. Hay una serie de opciones disponibles.

  • Ladrillo - Una forma de bloque, equivalente a un BlockMesh
  • Cilindro - Un cilindro, idéntico a un Part con un Part.Shape de 'Cilindro'
  • FileMesh - Un usuario subió una malla, equivalente a FileMesh que una textura se puede aplicar usando la propiedad FileMesh.TextureId
  • Cabeza - Una forma de cabeza de personaje
  • Esfera - Una forma de esfera, similar a una Part con una Part.Shape de 'Bola' pero se puede redimensionar libremente en todos los ejes
  • Esquina - Una forma de esquina, idéntica a una WedgePart
  • Torso - Un bloque con lados inclinados, que debe ser desusar, en desuso (noun)

Nota, cada SpecialMesh.MeshType escalará de manera diferente al usar DataModelMesh.Scale, para más información sobre esto, consulte la página en DataModelMesh.Scale.El objeto SpecialMesh también expone la propiedad DataModelMesh.Offset.

Es importante recordar que al usar una malla especial, solo cambia la apariencia de una parte.El modelo de colisión de la parte sigue siendo el mismo.Por ejemplo, un personaje no podrá caminar correctamente sobre una malla ya que la geometría de la malla no se tiene en cuenta.

SpecialMesh vs MeshPart

Actualmente hay dos maneras de utilizar una malla creada por un desarrollador.Están usando una SpecialMesh con el SpecialMesh.FileType establecido en 'FileMesh', o usando un MeshPart.Aunque, en general, el objeto MeshPart ha superado el SpecialMesh hay algunas diferencias que los desarrolladores deberían tener en cuenta.

Muestras de código

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.

Mesh Offset and Scale

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()

In this code sample a BasePart is instanced with a SpecialMesh. The DataModelMesh.VertexColor property of the SpecialMesh is then animated using TweenService.

Mesh VertexColor

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.VertexColor = Vector3.new(1, 1, 1)
mesh.Parent = part
-- parent part to workspace
part.Parent = workspace
-- create tweens
local tweenInfo = TweenInfo.new(1, Enum.EasingStyle.Linear, Enum.EasingDirection.Out)
local blackTween = TweenService:Create(mesh, tweenInfo, { VertexColor = Vector3.new(0, 0, 0) })
local redTween = TweenService:Create(mesh, tweenInfo, { VertexColor = Vector3.new(1, 0, 0) })
local greenTween = TweenService:Create(mesh, tweenInfo, { VertexColor = Vector3.new(0, 1, 0) })
local blueTween = TweenService:Create(mesh, tweenInfo, { VertexColor = Vector3.new(0, 0, 1) })
local resetTween = TweenService:Create(mesh, tweenInfo, { VertexColor = Vector3.new(1, 1, 1) })
-- animate
while true do
blackTween:Play()
blackTween.Completed:Wait()
redTween:Play()
redTween.Completed:Wait()
greenTween:Play()
greenTween.Completed:Wait()
blueTween:Play()
blueTween.Completed:Wait()
resetTween:Play()
resetTween.Completed:Wait()
task.wait()
end

Resumen

Propiedades

Propiedades heredados de FileMesh
  • MeshId:ContentId
    Leer paralelo

    El MeshId es el ID del contenido del malla que se va a mostrar.

  • TextureId:ContentId
    Leer paralelo

    El ID de textura es el ID del contenido de la textura que se va a aplicar a la malla.

Propiedades heredados de DataModelMesh

Propiedades

Leer paralelo

La malla a la que se aplica el objeto depende de la propiedad MeshType. Hay una serie de opciones disponibles.

  • Ladrillo - Una forma de bloque, equivalente a un BlockMesh
  • Cilindro - Un cilindro, idéntico a un Part con un Part.Shape de 'Cilindro'
  • FileMesh - Un usuario subió una malla, equivalente a FileMesh que una textura se puede aplicar usando la propiedad FileMesh.TextureId
  • Cabeza - Una forma de cabeza de personaje
  • Esfera - Una forma de esfera, similar a una Part con una Part.Shape de 'Bola' pero se puede redimensionar libremente en todos los ejes
  • Esquina - Una forma de esquina, idéntica a una WedgePart
  • Torso - Un bloque con lados inclinados, que debe ser desusar, en desuso (noun)

Tenga en cuenta que cada tipo de malla se escalará de manera diferente al usar DataModelMesh.Scale, para obtener más información sobre esto, consulte la página en DataModelMesh.Scale .

Muestras de código

In this code sample a BasePart is instanced with a SpecialMesh. The DataModelMesh.VertexColor property of the SpecialMesh is then animated using TweenService.

Mesh VertexColor

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.VertexColor = Vector3.new(1, 1, 1)
mesh.Parent = part
-- parent part to workspace
part.Parent = workspace
-- create tweens
local tweenInfo = TweenInfo.new(1, Enum.EasingStyle.Linear, Enum.EasingDirection.Out)
local blackTween = TweenService:Create(mesh, tweenInfo, { VertexColor = Vector3.new(0, 0, 0) })
local redTween = TweenService:Create(mesh, tweenInfo, { VertexColor = Vector3.new(1, 0, 0) })
local greenTween = TweenService:Create(mesh, tweenInfo, { VertexColor = Vector3.new(0, 1, 0) })
local blueTween = TweenService:Create(mesh, tweenInfo, { VertexColor = Vector3.new(0, 0, 1) })
local resetTween = TweenService:Create(mesh, tweenInfo, { VertexColor = Vector3.new(1, 1, 1) })
-- animate
while true do
blackTween:Play()
blackTween.Completed:Wait()
redTween:Play()
redTween.Completed:Wait()
greenTween:Play()
greenTween.Completed:Wait()
blueTween:Play()
blueTween.Completed:Wait()
resetTween:Play()
resetTween.Completed:Wait()
task.wait()
end

Métodos

Eventos