SpecialMesh 對象適用網格到 BasePart 依據 MeshType 屬性。有許多選項可用。
- 磚塊 - 一個方塊形狀,相當於一個 BlockMesh
- 頭 - 角色頭形狀
- 球體 - 球體形狀,類似於 球 但可以在所有軸上自由縮放
- 楔子 - 一個楔子形狀,與一個WedgePart相同
- 軀幹 - 斜坡的方塊,將被棄用
注意,每個 SpecialMesh.MeshType 在使用 DataModelMesh.Scale 時會縮放不同,有關此詳情,請參閱 DataModelMesh.Scale 頁面。特殊網格對象也暴露了 DataModelMesh.Offset 屬性。
當使用特殊網格時,只有零件的外觀發生變化。零件的碰撞模型仍然相同。例如,一個角色無法正確地在網格上移動,因為網格的幾何圖形未被考帳號。
特殊網格 vs 網格零件
目前有兩種使用開發者創建的網格的方法。他們正在使用特殊網格,並將 SpecialMesh.FileType 設為「檔案網格」,或使用 MeshPart 。雖然整體來說, MeshPart 對象已經超越了特殊網格,但是開發者應該注意的一些差異。
- BasePart.Material 在使用 MeshPart 時正確顯示在網格上,而不是使用特殊網格
- MeshParts 包含 MeshPart.CollisionFidelity 屬性,即 MeshPart 的碰撞模型可以設為與網格的幾何形狀相似。相反地,特殊網格對象使用父親 BaseParts 碰撞模型
- 在所有軸上,根據 的 屬性,特殊網格的網格不會
範例程式碼
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
概要
屬性
決定將應用於 BasePart 被父輩的 SpecialMesh 網格類型。
MeshId 是要顯示的網格ID的內容ID。
紋理ID是指要應用於網格的紋理的內容ID。
網格的偏移決定網格將顯示在哪個 上的相對位置。
網格的尺寸決定網格與原始尺寸相對的大小。
變更網格紋理的顏色,使用 FileMesh.TextureId 。
屬性
MeshType
SpecialMesh 對象適用的網格取決於 BasePart MeshType 屬性。有許多選項可用。
- 磚塊 - 一個方塊形狀,相當於一個 BlockMesh
- 頭 - 角色頭形狀
- 球體 - 球體形狀,類似於 球 但可以在所有軸上自由縮放
- 楔子 - 一個楔子形狀,與一個WedgePart相同
- 軀幹 - 斜坡的方塊,將被棄用
注意,每種網格類型在使用 DataModelMesh.Scale 時會縮放不同,有關此詳情,請參閱 DataModelMesh.Scale 頁面。
範例程式碼
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