SpecialMesh
*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
- 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.
- BasePart.Material se muestra correctamente en la malla al usar un MeshPart y no al usar una malla especial
- MeshParts incluye la propiedad MeshPart.CollisionFidelity , lo que significa que el modelo de colisión de un MeshPart se puede establecer para que se parezca a la geometría de la malla.El objeto SpecialMesh por contraste, usa el aplicación de modeladode colisión padre BaseParts
- La propiedad MeshId de un SpecialMesh se puede cambiar por una Script o LocalScript durante el tiempo de ejecución.La propiedad MeshId de un MeshPart no puede.
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.
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.
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
Determina el tipo de malla que se aplicará al BasePart al que se le asigna el SpecialMesh .
El MeshId es el ID del contenido del malla que se va a mostrar.
El ID de textura es el ID del contenido de la textura que se va a aplicar a la malla.
El desplazamiento de una malla determina la posición relativa desde el BasePart.Position de una BasePart en la que se mostrará la malla.
La escala de un malla determina el tamaño de la malla en relación con sus dimensiones originales.
Cambia el tono de la textura de una malla, usado con FileMesh.TextureId .
Propiedades
MeshType
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
- 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.
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