一个抽象类,所有零件都基于 固体模型 继承。
概要
属性
用于渲染模型零件的细节级别。
度数的角度,会影响模型零件的光滑阴影。
这个固体模型中的多边形数量。
设置 whether the PartOperation 可以使用继承的颜色属性重新着色。
决定零件的物理是否遵守网格的细节程度。
确定用于计算气动力和扭矩的几何表示。
决定零件是否因物理原因无法移动。
零件装配的角速度。
零件在世界空间的质量中心。
零件装配的线速度。
零件装配的总质量。
对装配的根部分的参考。
决定零件是否会物理地与音频模拟进行交互,类似于 CastShadow 对于照明。
确定零件后面的表面类型。
确定零件底部面的表面类型。
决定零件的颜色。
确定世界中 BasePart 的位置和方向。
决定零件是否可能与其他零件发生碰撞。
决定零件在空间查询操作中是否被考虑。
决定是否 Touched 和 TouchEnded 事件在部分上发射。
决定零件是否投射阴影。
描述零件的质量中心所在的世界位置。
描述零件碰撞群组的名称。
决定零件的颜色。
指示零件的当前物理属性。
确定零件的几个物理属性。
用于启用或禁用零件和装配件的空气动力。
物理尺寸的 BasePart 在物理引擎中被视为实际尺寸。
确定零件前面的表面类型。
确定零件左侧面的表面类型。
确定一个乘数 BasePart.Transparency ,仅对本地客户可见。
决定是否在工作室中选择零件。
描述零件的质量、密度和体积的产品。
决定零件是否会对其刚性身体的总质量或惯性贡献。
确定零件的纹理和默认物理属性。
MaterialVariant 的名称。
描述世界中零件的旋转。
指定零件的支点与其 CFrame 的偏移。
描述零件在世界上的位置。
上次记录的物理更新时间。
决定零件是否反映了天空盒。
描述 Resize() 方法允许的最小变更的尺寸。
描述可以调整零件大小的面。
确定零件右侧的表面类型。
确定装配根部分的主规则。
零件在三个轴上的旋转度。
确定零件的尺寸(长度、宽度、高度)。
确定零件顶部面的表面类型。
决定零件可以通过多少(零件不透明度的反转)。
方法
用另一个 PartOperation 的几何图形替换这个 PartOperation 的几何图形。
对装配应用角动力。
在装配的 center of mass 应用脉冲到装配。
在指定位置应用脉冲到装配。
返回零件是否可以相互碰撞。
检查您是否可以设置零件的网络所有权。
返回一个包含任何类型刚性连接头的对象与零件之间的表。
返回连接到该部分的所有关节或约束。
返回 Mass 属性的值。
返回当前网络所有者为该部分的网络所有者的现有玩家,或 nil 在服务器的情况下。
如果游戏引擎自动决定此部分的网络所有者,返回真值。
返回装配零件的基础部分。
返回与此部分交叉的所有 BasePart.CanCollide 真零件的表。
返回零件在给定位置对这个零件的线速度。
如果对象连接到一个部件,可以将其固定在那里(例如 Anchored 部件),则返回真值;否则返回错误值。
像使用 Studio 缩放工具一样,改变对象的大小。
将指定的玩家设置为网络所有者,用于此网络和所有连接的零件。
让游戏引擎动态决定谁将处理零件的物理(客户端之一或服务器)。
- IntersectAsync(parts : Instances,collisionfidelity : Enum.CollisionFidelity,renderFidelity : Enum.RenderFidelity):Instance
从零件和给定数组列中的其他零件的重叠几何中创建一个新的 IntersectOperation 。
- SubtractAsync(parts : Instances,collisionfidelity : Enum.CollisionFidelity,renderFidelity : Enum.RenderFidelity):Instance
从零件中创建一个新的 UnionOperation ,减去给定数组列中零件所占的几何图形。
- UnionAsync(parts : Instances,collisionfidelity : Enum.CollisionFidelity,renderFidelity : Enum.RenderFidelity):Instance
从零件中创建一个新的 UnionOperation ,加上给定数组列中零件所占的几何图形。
获取 PVInstance 的枢轴。
将 以及所有其子孙 转换为位于指定 的位置,使旋转点现在位于指定的 。
属性
RenderFidelity
该属性决定了固体模型部分将显示的细节程度。它可以设置为 Enum.RenderFidelity 枚列的可能值。
默认值为 Automatic , 即零件的详情基于其距离相机的描述,如下表所述。
<th>渲染忠实度</th></tr></thead><tbody><tr><td>小于 250 个螺柱</td><td>最高</td></tr><tr><td>250-500 格</td><td>中等</td></tr><tr><td>500 或更多的螺柱</td><td>最低</td></tr></tbody>
从相机的距离 |
---|
SmoothingAngle
该属性代表在 固体模型 零件上的面正常之间的角度度数为阈值值。如果普通差异小于值,普通差异将被调整以平滑差异。虽然 30 和 70 度之间的值通常会产生良好的结果,但 90 和 180 度之间的值不建议,因为它们可能会对具有锋利边缘的联盟产生“阴影”效果。
请注意,平滑不会影响不同材料或不同颜色之间的正常。

<figcaption><code>Class.PartOperation.SmoothingAngle|SmoothingAngle</code> = 0</figcaption>

<figcaption><code>Class.PartOperation.SmoothingAngle|SmoothingAngle</code> = 50</figcaption>
UsePartColor
设置 whether the PartOperation 可以使用 BasePart.Color 或 BasePart.BrickColor 属性重新着色。当真实时,整个联盟将按照 Color 或 BrickColor 的颜色进行颜色。当为 false 时,联盟中的部件会保留从洋葱操作执行之前的原始颜色。
方法
SubstituteGeometry
用另一个 PartOperation 的几何图形替换这个 PartOperation 的几何图形。这使得更容易使用固体建模操作的几何,例如 UnionAsync() , SubtractAsync() ,或 IntersectAsync() 但保留主部分的属性、属性、标签和子部件,例如 Attachments , Constraints , ParticleEmitters ,轻型对象、装饰和更多。这种方法也可以避免完全替换原始 PartOperation 的潜在"闪烁"。
请注意,如果你在 上调用此方法,并将其与子 或 结合,那么你应该计算受影响的实例,然后丢弃那些建议的父级是 的实例。
参数
whose 几何图形将替换这个 PartOperation 的几何图形的 PartOperation 。
返回
代码示例
The following example substitutes the geometry of one PartOperation with the geometry of another PartOperation, then drops constraints/attachments that should not be preserved after substitution.
local GeometryService = game:GetService("GeometryService")
local mainPart = workspace.PurpleBlock
local otherParts = { workspace.BlueBlock }
local options = {
CollisionFidelity = Enum.CollisionFidelity.Default,
RenderFidelity = Enum.RenderFidelity.Automatic,
SplitApart = false,
}
local constraintOptions = {
tolerance = 0.1,
weldConstraintPreserve = Enum.WeldConstraintPreserve.All,
}
-- Perform union operation in pcall() since it's asyncronous
local success, newParts = pcall(function()
return GeometryService:UnionAsync(mainPart, otherParts, options)
end)
if success and #newParts > 0 and mainPart:IsA("PartOperation") then
-- Set first part in resulting operation as part to use for substitution
-- First part is simply an option; this can be any PartOperation
local substitutePart = newParts[1]
-- Reposition part to the position of main part
substitutePart.CFrame = mainPart.CFrame
-- Calculate constraints/attachments to either preserve or drop
local recommendedTable = GeometryService:CalculateConstraintsToPreserve(mainPart, newParts, constraintOptions)
-- Substitute main part's geometry with substitution geometry
mainPart:SubstituteGeometry(substitutePart)
-- Drop constraints/attachments that are not automatically preserved with substitution
for _, item in pairs(recommendedTable) do
if item.Attachment then
if item.ConstraintParent == nil then
item.Constraint.Parent = nil
end
if item.AttachmentParent == nil then
item.Attachment.Parent = nil
end
elseif item.WeldConstraint then
if item.Parent == nil then
item.WeldConstraint.Parent = nil
end
end
end
-- Destroy other parts
for _, otherPart in pairs(otherParts) do
otherPart.Parent = nil
otherPart:Destroy()
end
end