SpecialMesh

Visualizza obsoleti

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

L'oggetto SpecialMesh applica una mesh a un BasePart a seconda della ProprietàMeshType. Sono disponibili una serie di opzioni.

  • Mattone - Una forma di blocco, equivalente a un BlockMesh
  • Cilindro - Un cilindro, identico a un Part con un Part.Shape di 'Cilindro'
  • FileMesh - Un utente ha caricato una mesh, equivalente a FileMesh che una texture può essere applicata utilizzando la ProprietàFileMesh.TextureId
  • Testa - Una forma di testa del personaggio
  • Sfera - Una forma di sfera, simile a una Part con una Part.Shape di 'Palla' ma può essere ridimensionata liberamente su tutti gli assi
  • Cuneo - Una forma di cuneo, identica a un WedgePart
  • Torso - Un blocco con lati inclinati, da deprecare

Nota, ogni SpecialMesh.MeshType scala in modo diverso quando si utilizza DataModelMesh.Scale, per ulteriori informazioni su questo vedi la pagina su DataModelMesh.Scale.L'oggetto SpecialMesh esporre anche la ProprietàDataModelMesh.Offset.

È importante ricordare che quando si utilizza una SpecialMesh, solo l'aspetto di una parte cambia.Il modello di collisione della parte rimane lo stesso.Ad esempio, un personaggio non sarà in grado di camminare correttamente su una mesh poiché la geometria della mesh non viene presa in Account.

SpecialeMesh vs MeshPart

Attualmente ci sono due modi per utilizzare una Mesh, magliacreata da un sviluppatore.Stanno utilizzando una SpecialMesh con il set a 'FileMesh', o usando un set.Sebbene, nel complesso, l'oggetto MeshPart abbia superato la SpecialMesh ci sono alcune differenze di cui gli sviluppatori dovrebbero essere consapevoli.

Campioni di codice

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

Sommario

Proprietà

Proprietà provenienti da FileMesh
  • MeshId:ContentId
    Lettura Parallela

    L'ID mesh è l'ID del contenuto della mesh che deve essere visualizzata.

  • TextureId:ContentId
    Lettura Parallela

    L'ID della texture è l'ID del contenuto della texture che deve essere applicata alla Mesh, maglia.

Proprietà provenienti da DataModelMesh

Proprietà

Lettura Parallela

La mesh a cui l'oggetto applica la mesh dipende dalla ProprietàMeshType. A disposizione un certo numero di opzioni.

  • Mattone - Una forma di blocco, equivalente a un BlockMesh
  • Cilindro - Un cilindro, identico a un Part con un Part.Shape di 'Cilindro'
  • FileMesh - Un utente ha caricato una mesh, equivalente a FileMesh che una texture può essere applicata utilizzando la ProprietàFileMesh.TextureId
  • Testa - Una forma di testa del personaggio
  • Sfera - Una forma di sfera, simile a una Part con una Part.Shape di 'Palla' ma può essere ridimensionata liberamente su tutti gli assi
  • Cuneo - Una forma di cuneo, identica a un WedgePart
  • Torso - Un blocco con lati inclinati, da deprecare

Nota, ogni MeshType si ridimensionerà in modo diverso quando utilizza DataModelMesh.Scale , per ulteriori informazioni su questo vedi la pagina su DataModelMesh.Scale .

Campioni di codice

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

Metodi

Eventi