Class.SpecialMesh 對象適用網格到 BasePart ,依據 MeshType 屬性。有一些選項可用。
- 磚塊 - 一個方塊形狀,相當於 BlockMesh
- 頭部 - 角色頭部形狀
- 球體 - 球體形狀,與 Part 類似,但可以在所有軸上自由調整
- 楔子 - 楔子形狀, 與 WedgePart 相同
- 軀體 - 斜面的方塊,由於被棄用
注意,使用 SpecialMesh.MeshType 時,每個 DataModelMesh.Scale 將以不同的方式縮放,獲取更多關於此內容的資訊,請參閱 DataModelMesh.Scale 頁面。 特殊網格對象也會顯示 1>Class.DataModelMesh.Offset1> 屬性。
當使用特殊網格時,只有特殊網格的外觀變更。 網格的結構模型仍然保持相同。 例如,一個角色無法正確走路,因為網格的結構沒有被考帳號。
SpecialMesh 與 MeshPart
目前有兩種使用開發者創建網格的方法。他們正在使用一個 SpecialMesh.FileType 設置為 MeshPart,或使用 MeshPart 。雖然,在整個方面, 2>Class.MeshPart2> 對象超越了 5>Class.Mesh5> ,但有一些差異開發者應該注意
- BasePart.Material 在使用 MeshPart 和 特殊網格 時正確顯示在網格上
- Class.MeshPart|MeshParts 包括 MeshPart.CollisionFidelity 屬性,意味著 MeshPart 的衝突模型可以設置與網格相似。 特殊網格對象的對比 0> Class.BasePart|BaseParts0> 則使用 MeshParts3> 的衝突模
- Class.FileMesh.MeshId|MeshId 屬性的 SpecialMesh 可以在執行階段時間變更為 Script 或 1>Class.LocalScript1> 。 4>Class.MeshPart4> 的 7>Class.FileMesh7> 屬性無法。
範例程式碼
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()
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 的應用 Class.BasePart 與 2>Class.SpecialMesh2> 的關聯。
MeshId 是顯示網格的內容 ID。
TexturereId 是適用於網格的材質內容的 ID。
網格的 Offset 決定了網格在 BasePart.Position 的 BasePart 的相對位置。
網格的尺寸將網格的尺寸與原始尺寸相對。
使用 FileMesh.TextureId 與網格的紋理發生變化。
屬性
MeshType
Class.SpecialMesh 對象適用於 BasePart ,取決於網格類屬性。有一些選項可用。
- 磚塊 - 一個方塊形狀,相當於 BlockMesh
- 頭部 - 角色頭部形狀
- 球體 - 球體形狀,與 Part 類似,但可以在所有軸上自由調整
- 楔子 - 楔子形狀, 與 WedgePart 相同
- 軀體 - 斜面的方塊,由於被棄用
注意,使用 DataModelMesh.Scale 時,每個網格類型的大小將會依照異步, for more information on this please see the page on DataModelMesh.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.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