SpecialMesh

显示已弃用

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

SpecialMesh 对象根据 MeshType 属性将网格应用于 BasePart。有多种可用选项。

  • 砖块 - 一个块状形状,相当于 BlockMesh
  • 圆柱 - 一个圆柱体,与 Part 相同,其 Part.Shape 为 'Cylinder'
  • 文件网格 - 用户上传的网格,相当于 FileMesh,可以使用 FileMesh.TextureId 属性应用纹理
  • 头部 - 一个角色头部形状
  • 球体 - 一个球形状,类似于 Part,其 Part.Shape 为 'Ball',但可以在所有轴上自由调整大小
  • 楔形 - 一个楔形状,与 WedgePart 相同
  • 躯干 - 一个有斜边的方块,计划被弃用

请注意,使用 DataModelMesh.Scale 时,每个 SpecialMesh.MeshType 的缩放方式不同,关于更多信息,请参见 DataModelMesh.Scale 页面。SpecialMesh 对象还公开了 DataModelMesh.Offset 属性。

重要的是要记住,当使用 SpecialMesh 时,仅部分的外观会变化。部分的碰撞模型保持不变。例如,角色将无法正确走过网格,因为不会考虑网格几何形状。

SpecialMesh 与 MeshPart

目前有两种使用开发者创建的网格的方法。使用将 SpecialMesh.FileType 设置为 'FileMesh' 的 SpecialMesh,或者使用 MeshPart。虽然整体而言,MeshPart 对象已取代 SpecialMesh,但开发者需要注意一些差异。

代码示例

在这个代码示例中,一个 BasePart 被实例化为一个 SpecialMesh。然后使用 TweenService 动画化 SpecialMeshDataModelMesh.ScaleDataModelMesh.Offset 属性。

网格偏移和缩放

local TweenService = game:GetService("TweenService")
-- 实例化一个部件和一个网格
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
-- 选择框以显示部件范围
local box = Instance.new("SelectionBox")
box.Adornee = part
box.Parent = part
-- 将部件父级设置为工作区
part.Parent = workspace
-- 使用补间动画偏移和缩放
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()

在此代码示例中,BasePart被实例化为SpecialMeshSpecialMeshDataModelMesh.VertexColor属性随后使用TweenService进行动画处理。

网格顶点颜色

local TweenService = game:GetService("TweenService")
-- 实例化一个部件和一个网格
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
-- 将部件放入工作区
part.Parent = workspace
-- 创建补间
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) })
-- 动画
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
    读取并联

    TextureId 是要应用于网格的纹理的内容 ID。

继承自DataModelMesh的属性

属性

属性

读取并联

SpecialMesh 对象应用于 BasePart 的网格取决于 MeshType 属性。可用的选项有:

  • 砖块 - 一个块状形状,相当于 BlockMesh
  • 圆柱 - 一个圆柱体,与 Part 相同,其 Part.Shape 为 'Cylinder'
  • 文件网格 - 用户上传的网格,相当于 FileMesh,可以使用 FileMesh.TextureId 属性应用纹理
  • 头部 - 一个角色头部形状
  • 球体 - 一个球形状,类似于 Part,其 Part.Shape 为 'Ball',但可以在所有轴上自由调整大小
  • 楔形 - 一个楔形状,与 WedgePart 相同
  • 躯干 - 一个有斜边的方块,计划被弃用

请注意,使用 DataModelMesh.Scale 时,每个 MeshType 的缩放方式不同,关于更多信息,请参见 DataModelMesh.Scale 页面。

代码示例

在此代码示例中,BasePart被实例化为SpecialMeshSpecialMeshDataModelMesh.VertexColor属性随后使用TweenService进行动画处理。

网格顶点颜色

local TweenService = game:GetService("TweenService")
-- 实例化一个部件和一个网格
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
-- 将部件放入工作区
part.Parent = workspace
-- 创建补间
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) })
-- 动画
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

方法

活动