SpecialMesh
*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.
O objeto SpecialMesh aplica uma malha a um BasePart dependendo da propriedade MeshType. Várias opções estão disponíveis.
- Tijolo - Uma forma de bloco, equivalente a um BlockMesh
- Cilindro - Um cilindro, idêntico a um com um de 'Cilindro'
- FileMesh - Um usuário carregou Mesh, equivalente a FileMesh que uma textura pode ser aplicada usando a propriedade FileMesh.TextureId
- Cabeça - Uma forma de cabeça de personagem
- Esfera - Uma forma de esfera, semelhante a uma Part com um Part.Shape de 'Bola', mas pode ser redimensionada livremente em todos os eixos
- Cunha - Uma forma de cunha, idêntica a uma WedgePart
- Torso - Um bloco com lados inclinados, devido a ser descontinuar
Observe, cada SpecialMesh.MeshType vai escalar de forma diferente ao usar DataModelMesh.Scale, para mais informações sobre isso, consulte a página em DataModelMesh.Scale.O objeto SpecialMesh também expõe a propriedade DataModelMesh.Offset.
É importante lembrar que, ao usar uma SpecialMesh, apenas a aparência de uma parte muda.O modelo de colisão da peça permanece o mesmo.Por exemplo, um personagem não será capaz de caminhar corretamente sobre uma malha pois a geometria da malha não é levada em conta.
SpecialMesh vs MeshPart
Existem atualmente duas maneiras de usar um malhacriado por um desenvolvedor.Eles estão usando uma SpecialMesh com o set para 'FileMesh', ou usando um set.Embora, no geral, o objeto MeshPart tenha ultrapassado o SpecialMesh, há algumas diferenças que os desenvolvedores devem estar cientes.
- BasePart.Material exibe corretamente na malha ao usar um MeshPart e não ao usar uma Malha Especial
- MeshParts inclua a propriedade MeshPart.CollisionFidelity , significando que o modelo de colisão de um MeshPart pode ser definido para se assemelhar à geometria da malha.O objeto SpecialMesh, por contrasto, usa o modelo de colisão pai BaseParts
- A propriedade MeshId da de um SpecialMesh pode ser alterada por um Script ou LocalScript durante a tempo de execução.A propriedade MeshId da de um MeshPart não pode.
Amostras 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
Resumo
Propriedades
Determina o tipo de malha que será aplicado ao BasePart o SpecialMesh é parente.
O MeshId é o ID de conteúdo do mesh que deve ser exibido.
O TextureId é o ID de conteúdo da textura que deve ser aplicada à malha.
O deslocamento de uma malha determina a posição relativa a partir do BasePart.Position de uma BasePart que a malha será exibida.
A escala de um mesh determina o tamanho do mesh em relação às suas dimensões originais.
Muda a tonalidade da textura de uma malha, usada com FileMesh.TextureId.
Propriedades
MeshType
A malha que o objeto SpecialMesh aplica ao BasePart depende da propriedade MeshType. Número de opções disponíveis.
- Tijolo - Uma forma de bloco, equivalente a um BlockMesh
- Cilindro - Um cilindro, idêntico a um com um de 'Cilindro'
- FileMesh - Um usuário carregou Mesh, equivalente a FileMesh que uma textura pode ser aplicada usando a propriedade FileMesh.TextureId
- Cabeça - Uma forma de cabeça de personagem
- Esfera - Uma forma de esfera, semelhante a uma Part com um Part.Shape de 'Bola', mas pode ser redimensionada livremente em todos os eixos
- Cunha - Uma forma de cunha, idêntica a uma WedgePart
- Torso - Um bloco com lados inclinados, devido a ser descontinuar
Observe, cada Tipo de Modelo escalará de forma diferente ao usar DataModelMesh.Scale, para mais informações sobre isso, consulte a página em DataModelMesh.Scale.
Amostras 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