SpecialMesh

显示已弃用

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

Class.SpecialMesh 对象将网格应用到一个 BasePart 依赖于 MeshType 属性。 有多个选项可用。

  • 砖块 - 块状形,相当于一个 BlockMesh
  • 气缸 - 一个气缸,与 Part 的一个 Part.Shape 的“气缸”相同
  • 文件网格 - 用户上传了网格,相当于 FileMesh ,可以应用到使用 FileMesh.TextureId 属性的材质
  • - 角色头形
  • 球体 - 一个球体形状,与 Part 类似,但可以在所有轴上自由缩放
  • 楔子 - 楔子形状,与 WedgePart 相同
  • 躯干 - 有斜面的方块,由于其将被弃用

注意,使用 DataModelMesh.Scale 时,每个 DataModelMesh.Scale 的大小都会随着使用 1> Class.DataModelMesh.Scale1> 而变化,有关更多信息,请参阅4> Class.DataModelMesh.Scale4> 页面。 对于特殊网格对象,还会暴露7> Class.DataModelMesh.Offset7> 属性

要记住,使用特殊网格时,只有部件的外观发生变更。网格的碰撞模型将保持不变。例如,一个角色将无法正确地走过网格,因为网格的几何学不会被考帐户。

SpecialMesh vs MeshPart

目前有两种使用开发者创建网格的方法。他们使用一个特殊网格,其中 SpecialMesh.FileType 设置为 "FileMesh",或使用 MeshPart 。 尽管如此,在整个开发者创建网格上, MeshPart 对象有一些差异,开发者应该注意到。

  • BasePart.Material 在使用 MeshPart 和不使用特殊网格时正确显示在网格上
  • MeshParts 包括MeshPart.CollisionFidelity 属性,意味着MeshPart 的碰撞模型可以设置为与网格相似。 但是,特殊网格对象通过对父对象0> Class.BasePart|BaseParts0> 的碰撞模型来使用
  • Class.MeshPart 的网格在所有轴上依赖于 Size 属性,MeshPart 的网格是 1>SpecialMesh1> 的网格,不是 4>Class.MeshPart4> 的网格
  • 特殊网格对象包括 OffsetScale 属性,而 MeshParts
  • Class.FileMesh.MeshId|MeshId 属性的 SpecialMesh 可以通过在执行时间时更改 Script 或 1>Class.LocalScript1> 来改变。4>Class.MeshPart.MeshId|MeshId4> 属性的 7>Class.MeshPart7> 无法。

代码示例

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()
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

概要

属性

继承自FileMesh属性
  • MeshId:ContentId
    读取并联

    MeshId 是要显示的网格内容的 ID。

  • TextureId:ContentId
    读取并联

    TexturereId 是要应用到网格的材质的内容 ID。

继承自DataModelMesh属性

属性

读取并联

Class.SpecialMesh 对象应用到 BasePart 的网格取决于 MeshType 属性。有一些选项可用。

  • 砖块 - 块状形,相当于一个 BlockMesh
  • 气缸 - 一个气缸,与 Part 的一个 Part.Shape 的“气缸”相同
  • 文件网格 - 用户上传了网格,相当于 FileMesh ,可以应用到使用 FileMesh.TextureId 属性的材质
  • - 角色头形
  • 球体 - 一个球体形状,与 Part 类似,但可以在所有轴上自由缩放
  • 楔子 - 楔子形状,与 WedgePart 相同
  • 躯干 - 有斜面的方块,由于其将被弃用

注意,使用 DataModelMesh.Scale 时,每个 MeshType 的大小都会随着使用情况而略有不同,有关更多信息,请参阅 DataModelMesh.Scale 页面。

代码示例

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

方法

活动