DataModelMesh 是从 DataModel 下生成的抽象类。
网格类是对,当父级设为 BaseParts 时,改变零件的外观到Class.MeshPart|BaseParts 的预设网格。 注意,它们只改变零件的外观,而不是物理/碰撞边界。开发人员想要将网格应用到更改零件的碰撞边界的零件上,应该使用 Class.Mesh
注意 MeshPart 和 CharacterMesh 类不会从数据模型网格中降级。
概要
属性
网格的 Offset 决定了网格在 BasePart.Position 的 BasePart 上显示的相对位置。
网格的尺寸由网格的原始尺寸决定。
改变网格的材质的纹理,用于 FileMesh.TextureId 。
属性
Offset
网格的 Offset 确定网格将显示的 BasePart.Position 的距离。
如何使用网格偏移值
Offset 属性改变网格将在哪里渲染。例如,一个 0、5 的 Offset 会使网格在 BasePart 的位置上显示 5 格。
Class.BasePart 的位置始终不会改变,这意味着零件的物理碰撞箱将保持在同一个位置。这在下面的图像中显示,其绿色轮廓 (a SelectionBox ) 显示了 BasePart 的内容。
网格偏移值的其他用途
有一些有趣的使用网格 Offset 属性。
- 改变网格和其碰撞范围之间的关系 (由 BasePart 决定)
代码示例
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()
Scale
网格的尺寸由网格的原始尺寸决定。
如何使用网格缩放
使用不同类型的网格有不同的尺寸。注意BasePart的大小,这意味着零件的物理碰撞箱将保持不变,这意味着零件的物理碰撞箱将保持不变。
- SpecialMesh 对象,其 SpecialMesh.FileType 设置为“FileMesh”,与 Roblox 上传时的网格原始尺寸相对于原始网格的尺寸进行缩放
- CylinderMesh 对象或 SpecialMesh 对象,其中 SpecialMesh.FileType 设置为“Cylinder”,与其父元素级的 0> Class.BasePart.Size0> 无异。在圆柱体高度轴上使用最低值,并保持对称的高度和宽度,使用
- SpecialMesh 对象使用 SpecialMesh.FileType 设置为 “头” 当前缩放非常不标准。开发人员不应该将此视为他们的计划来更改此行为
- SpecialMesh 对象,其SpecialMesh.FileType 设置为“躯干”,以非标准方式缩放在“扁平面”上。开发人员不应将此视为他们的计划来淘汰此网格输入。
网格模型示例
上述行为可以在以下示例图像中看到。
对“砖”、“楔”和“球”网格的零件尺寸进行线性缩放。
将原始上传网格缩放到“FileMesh”网格的相对位置
“汽缸”网格的非标准缩放
网格缩放的其他用途
有一些有趣的使用网格 Offset 属性。
- 改变网格和其碰撞范围之间的关系 (由 BasePart 决定)
代码示例
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()