学习
引擎类
BasePart
无法创建
不可浏览

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


概要
属性
BackParamA:number
已弃用
BackParamB:number
已弃用
Elasticity:number
已弃用
Friction:number
已弃用
LeftParamA:number
已弃用
LeftParamB:number
已弃用
TopParamA:number
已弃用
TopParamB:number
已弃用
Velocity:Vector3
已弃用
方法
AngularAccelerationToTorque(angAcceleration: Vector3,angVelocity: Vector3):Vector3
ApplyImpulse(impulse: Vector3):()
ApplyImpulseAtPosition(impulse: Vector3,position: Vector3):()
BreakJoints():()
已弃用
breakJoints():()
已弃用
GetJoints():Instances
getMass():number
已弃用
GetRootPart():Instance
已弃用
GetTouchingParts():Instances
IntersectAsync(parts: Instances,collisionfidelity: Enum.CollisionFidelity,renderFidelity: Enum.RenderFidelity):Instance
MakeJoints():()
已弃用
makeJoints():()
已弃用
Resize(normalId: Enum.NormalId,deltaAmount: number):boolean
resize(normalId: Enum.NormalId,deltaAmount: number):boolean
已弃用
SetNetworkOwner(playerInstance: Player):()
SubtractAsync(parts: Instances,collisionfidelity: Enum.CollisionFidelity,renderFidelity: Enum.RenderFidelity):Instance
UnionAsync(parts: Instances,collisionfidelity: Enum.CollisionFidelity,renderFidelity: Enum.RenderFidelity):Instance
继承成员
代码示例
平滑阻尼一个部件的 CFrame
local TweenService = game:GetService("TweenService")
-- 创建一个部件和目标
local part = Instance.new("Part", workspace)
part.Size = Vector3.one
part.Anchored = true
part.BrickColor = BrickColor.new("Electric blue")
part.CFrame = CFrame.new(0, 4, 0)
local target = Instance.new("Part", workspace)
target.Name = "Target"
target.Size = Vector3.one * 0.5
target.Anchored = true
target.BrickColor = BrickColor.new("Really red")
target.CFrame = CFrame.new(0, 8, 0)
-- 设置一个变量来存储速度
local velocity = CFrame.new()
-- 调整平滑速度
local smoothTime = 0.5
game:GetService("RunService").Stepped:Connect(function(t, dt)
part.CFrame, velocity = TweenService:SmoothDamp(part.CFrame, target.CFrame, velocity, smoothTime, math.huge, dt)
end)

API 参考
属性
Anchored
读取并联
模拟访问权限
BasePart.Anchored:boolean
代码示例
部件固定切换
local part = script.Parent
-- 创建一个 ClickDetector,以便我们可以知道部件何时被点击
local cd = Instance.new("ClickDetector", part)
-- 此函数根据部件的 Anchored 状态更新部件的外观
local function updateVisuals()
if part.Anchored then
-- 当部件已固定时...
part.BrickColor = BrickColor.new("鲜红")
part.Material = Enum.Material.DiamondPlate
else
-- 当部件未固定时...
part.BrickColor = BrickColor.new("鲜黄色")
part.Material = Enum.Material.Wood
end
end
local function onToggle()
-- 切换固定属性
part.Anchored = not part.Anchored
-- 更新砖块的视觉状态
updateVisuals()
end
-- 更新后,开始监听点击
updateVisuals()
cd.MouseClick:Connect(onToggle)

AssemblyAngularVelocity
未复制
读取并联
模拟访问权限
BasePart.AssemblyAngularVelocity:Vector3

AssemblyCenterOfMass
只读
未复制
读取并联
模拟访问权限
BasePart.AssemblyCenterOfMass:Vector3

AssemblyLinearVelocity
未复制
读取并联
模拟访问权限
BasePart.AssemblyLinearVelocity:Vector3

AssemblyMass
只读
未复制
读取并联
模拟访问权限
BasePart.AssemblyMass:number

AssemblyRootPart
只读
未复制
读取并联
模拟访问权限
BasePart.AssemblyRootPart:BasePart

AudioCanCollide
读取并联
模拟访问权限
BasePart.AudioCanCollide:boolean

BackParamA
已弃用

BackParamB
已弃用

BackSurface
读取并联
BasePart.BackSurface:Enum.SurfaceType

BackSurfaceInput
已弃用

BottomParamA
已弃用

BottomParamB
已弃用

BottomSurface
读取并联
BasePart.BottomSurface:Enum.SurfaceType

BottomSurfaceInput
已弃用

BrickColor
未复制
读取并联
BasePart.BrickColor:BrickColor

brickColor
已弃用

CanCollide
读取并联
模拟访问权限
BasePart.CanCollide:boolean
代码示例
褪色门
-- 粘贴到一个高部件的脚本中
local part = script.Parent
local OPEN_TIME = 1
-- 这个门现在可以打开吗?
local debounce = false
local function open()
part.CanCollide = false
part.Transparency = 0.7
part.BrickColor = BrickColor.new("黑色")
end
local function close()
part.CanCollide = true
part.Transparency = 0
part.BrickColor = BrickColor.new("亮蓝色")
end
local function onTouch(otherPart)
-- 如果门已经打开,则不执行任何操作
if debounce then
print("D")
return
end
-- 检查是否被类人角色触碰
local human = otherPart.Parent:FindFirstChildOfClass("Humanoid")
if not human then
print("不是类人角色")
return
end
-- 执行门打开序列
debounce = true
open()
task.wait(OPEN_TIME)
close()
debounce = false
end
part.Touched:Connect(onTouch)
close()

CanQuery
读取并联
模拟访问权限
BasePart.CanQuery:boolean

CanTouch
读取并联
模拟访问权限
BasePart.CanTouch:boolean

CastShadow
读取并联
BasePart.CastShadow:boolean

CenterOfMass
只读
未复制
读取并联
模拟访问权限
BasePart.CenterOfMass:Vector3

CFrame
读取并联
模拟访问权限
BasePart.CFrame:CFrame
代码示例
设置零件 CFrame
local part = script.Parent:WaitForChild("Part")
local otherPart = script.Parent:WaitForChild("OtherPart")
-- 将零件的 CFrame 重置为 (0, 0, 0),没有旋转。
-- 这有时被称为“单位”CFrame
part.CFrame = CFrame.new()
-- 设置为特定位置 (X, Y, Z)
part.CFrame = CFrame.new(0, 25, 10)
-- 与上面相同,但使用 Vector3
local point = Vector3.new(0, 25, 10)
part.CFrame = CFrame.new(point)
-- 将零件的 CFrame 设置为位于一个点,面向另一个点
local lookAtPoint = Vector3.new(0, 20, 15)
part.CFrame = CFrame.lookAt(point, lookAtPoint)
-- 在本地 X 轴上将零件的 CFrame 旋转 pi/2 弧度
part.CFrame = part.CFrame * CFrame.Angles(math.pi / 2, 0, 0)
-- 在本地 Y 轴上将零件的 CFrame 旋转 45 度
part.CFrame = part.CFrame * CFrame.Angles(0, math.rad(45), 0)
-- 在全局 Z 轴上将零件的 CFrame 旋转 180 度(注意顺序!)
part.CFrame = CFrame.Angles(0, 0, math.pi) * part.CFrame -- Pi 弧度等于 180 度
-- 组合两个 CFrame 使用 *(乘法运算符)
part.CFrame = CFrame.new(2, 3, 4) * CFrame.new(4, 5, 6) --> 等于 CFrame.new(6, 8, 10)
-- 与代数乘法不同,CFrame 组合不是交换的:a * b 不一定等于 b * a!
-- 想象 * 为一系列有序的动作。例如,以下行产生不同的 CFrame:
-- 1) 将零件在 X 轴上滑动 5 个单位。
-- 2) 绕 Y 轴将零件旋转 45 度。
part.CFrame = CFrame.new(5, 0, 0) * CFrame.Angles(0, math.rad(45), 0)
-- 1) 绕 Y 轴将零件旋转 45 度。
-- 2) 将零件在 X 轴上滑动 5 个单位。
part.CFrame = CFrame.Angles(0, math.rad(45), 0) * CFrame.new(5, 0, 0)
-- 没有“CFrame 除法”,而是简单地“执行逆操作”。
part.CFrame = CFrame.new(4, 5, 6) * CFrame.new(4, 5, 6):Inverse() --> 等于 CFrame.new(0, 0, 0)
part.CFrame = CFrame.Angles(0, 0, math.pi) * CFrame.Angles(0, 0, math.pi):Inverse() --> 等于 CFrame.Angles(0, 0, 0)
-- 将一个零件相对于另一个零件放置(在这种情况下,将我们的零件放在 otherPart 上面)
part.CFrame = otherPart.CFrame * CFrame.new(0, part.Size.Y / 2 + otherPart.Size.Y / 2, 0)

CollisionGroup
未复制
读取并联
模拟访问权限
BasePart.CollisionGroup:string
代码示例
物理服务:注册碰撞组
local PhysicsService = game:GetService("PhysicsService")
local collisionGroupBall = "CollisionGroupBall"
local collisionGroupDoor = "CollisionGroupDoor"
-- 注册碰撞组
PhysicsService:RegisterCollisionGroup(collisionGroupBall)
PhysicsService:RegisterCollisionGroup(collisionGroupDoor)
-- 将部分分配给碰撞组
script.Parent.BallPart.CollisionGroup = collisionGroupBall
script.Parent.DoorPart.CollisionGroup = collisionGroupDoor
-- 设置组之间为不可相撞并检查结果
PhysicsService:CollisionGroupSetCollidable(collisionGroupBall, collisionGroupDoor, false)
print(PhysicsService:CollisionGroupsAreCollidable(collisionGroupBall, collisionGroupDoor)) --> false

CollisionGroupId
已弃用

Color
未复制
读取并联
BasePart.Color:Color3
代码示例
角色健康身体颜色
-- 粘贴到 StarterCharacterScripts 中的一个脚本内
-- 然后播放游戏,并调整你角色的健康值
local char = script.Parent
local human = char.Humanoid
local colorHealthy = Color3.new(0.4, 1, 0.2)
local colorUnhealthy = Color3.new(1, 0.4, 0.2)
local function setColor(color)
for _, child in pairs(char:GetChildren()) do
if child:IsA("BasePart") then
child.Color = color
while child:FindFirstChildOfClass("Decal") do
child:FindFirstChildOfClass("Decal"):Destroy()
end
elseif child:IsA("Accessory") then
child.Handle.Color = color
local mesh = child.Handle:FindFirstChildOfClass("SpecialMesh")
if mesh then
mesh.TextureId = ""
end
elseif child:IsA("Shirt") or child:IsA("Pants") then
child:Destroy()
end
end
end
local function update()
local percentage = human.Health / human.MaxHealth
-- 根据你的健康百分比插值生成颜色
-- 颜色从 colorHealthy (100%) ----- > colorUnhealthy (0%)
local color = Color3.new(
colorHealthy.R * percentage + colorUnhealthy.r * (1 - percentage),
colorHealthy.G * percentage + colorUnhealthy.g * (1 - percentage),
colorHealthy.B * percentage + colorUnhealthy.b * (1 - percentage)
)
setColor(color)
end
update()
human.HealthChanged:Connect(update)

CurrentPhysicalProperties
只读
未复制
读取并联
BasePart.CurrentPhysicalProperties:PhysicalProperties

CustomPhysicalProperties
读取并联
模拟访问权限
BasePart.CustomPhysicalProperties:PhysicalProperties
代码示例
设置自定义物理属性
local part = script.Parent
-- 这将使部件变得轻且有弹性!
local DENSITY = 0.3
local FRICTION = 0.1
local ELASTICITY = 1
local FRICTION_WEIGHT = 1
local ELASTICITY_WEIGHT = 1
local physProperties = PhysicalProperties.new(DENSITY, FRICTION, ELASTICITY, FRICTION_WEIGHT, ELASTICITY_WEIGHT)
part.CustomPhysicalProperties = physProperties

Elasticity
已弃用

EnableFluidForces
读取并联
模拟访问权限
BasePart.EnableFluidForces:boolean

ExtentsCFrame
只读
未复制
读取并联
模拟访问权限
BasePart.ExtentsCFrame:CFrame

ExtentsSize
只读
未复制
读取并联
模拟访问权限
BasePart.ExtentsSize:Vector3

Friction
已弃用

FrontParamA
已弃用

FrontParamB
已弃用

FrontSurface
读取并联
BasePart.FrontSurface:Enum.SurfaceType

FrontSurfaceInput
已弃用

LeftParamA
已弃用

LeftParamB
已弃用

LeftSurface
读取并联
BasePart.LeftSurface:Enum.SurfaceType

LeftSurfaceInput
已弃用

LocalTransparencyModifier
隐藏
未复制
读取并联
BasePart.LocalTransparencyModifier:number

Locked
读取并联
模拟访问权限
BasePart.Locked:boolean
代码示例
递归解锁
-- 粘贴到您想要解锁的模型中的脚本内
local model = script.Parent
-- 此函数通过模型的层级结构递归并解锁
-- 它遇到的每个部分。
local function recursiveUnlock(object)
if object:IsA("BasePart") then
object.Locked = false
end
-- 在对象的子级上调用相同的函数
-- 如果对象没有子级,递归过程将停止
for _, child in pairs(object:GetChildren()) do
recursiveUnlock(child)
end
end
recursiveUnlock(model)

Mass
只读
未复制
读取并联
模拟访问权限
BasePart.Mass:number

Massless
读取并联
模拟访问权限
BasePart.Massless:boolean

Material
读取并联
模拟访问权限
BasePart.Material:Enum.Material

MaterialVariant
未复制
读取并联
模拟访问权限
BasePart.MaterialVariant:string

Orientation
隐藏
未复制
读取并联
模拟访问权限
BasePart.Orientation:Vector3
代码示例
部件旋转器
local part = script.Parent
local INCREMENT = 360 / 20
-- 不断旋转部件
while true do
for degrees = 0, 360, INCREMENT do
-- 仅设置Y轴旋转
part.Rotation = Vector3.new(0, degrees, 0)
-- 更好的方法是设置CFrame
--part.CFrame = CFrame.new(part.Position) * CFrame.Angles(0, math.rad(degrees), 0)
task.wait()
end
end

PivotOffset
读取并联
模拟访问权限
BasePart.PivotOffset:CFrame
代码示例
重置支点
local function resetPivot(model)
local boundsCFrame = model:GetBoundingBox()
if model.PrimaryPart then
model.PrimaryPart.PivotOffset = model.PrimaryPart.CFrame:ToObjectSpace(boundsCFrame)
else
model.WorldPivot = boundsCFrame
end
end
resetPivot(script.Parent)
时钟指针
local function createHand(length, width, yOffset)
local part = Instance.new("Part")
part.Size = Vector3.new(width, 0.1, length)
part.Material = Enum.Material.Neon
part.PivotOffset = CFrame.new(0, -(yOffset + 0.1), length / 2)
part.Anchored = true
part.Parent = workspace
return part
end
local function positionHand(hand, fraction)
hand:PivotTo(CFrame.fromEulerAnglesXYZ(0, -fraction * 2 * math.pi, 0))
end
-- 创建表盘
for i = 0, 11 do
local dialPart = Instance.new("Part")
dialPart.Size = Vector3.new(0.2, 0.2, 1)
dialPart.TopSurface = Enum.SurfaceType.Smooth
if i == 0 then
dialPart.Size = Vector3.new(0.2, 0.2, 2)
dialPart.Color = Color3.new(1, 0, 0)
end
dialPart.PivotOffset = CFrame.new(0, -0.1, 10.5)
dialPart.Anchored = true
dialPart:PivotTo(CFrame.fromEulerAnglesXYZ(0, (i / 12) * 2 * math.pi, 0))
dialPart.Parent = workspace
end
-- 创建指针
local hourHand = createHand(7, 1, 0)
local minuteHand = createHand(10, 0.6, 0.1)
local secondHand = createHand(11, 0.2, 0.2)
-- 运行时钟
while true do
local components = os.date("*t")
positionHand(hourHand, (components.hour + components.min / 60) / 12)
positionHand(minuteHand, (components.min + components.sec / 60) / 60)
positionHand(secondHand, components.sec / 60)
task.wait()
end

Position
隐藏
未复制
读取并联
模拟访问权限
BasePart.Position:Vector3

ReceiveAge
隐藏
只读
未复制
读取并联
BasePart.ReceiveAge:number

Reflectance
读取并联
BasePart.Reflectance:number

ResizeableFaces
只读
未复制
读取并联
BasePart.ResizeableFaces:Faces
代码示例
改变大小的控制点
-- 将此脚本放置在几种类型的 BasePart 中,例如
-- Part、TrussPart、WedgePart、CornerWedgePart 等。
local part = script.Parent
-- 为这个部件创建一个控制点对象
local handles = Instance.new("Handles")
handles.Adornee = part
handles.Parent = part
-- 手动指定适用此控制点的面
handles.Faces = Faces.new(Enum.NormalId.Top, Enum.NormalId.Front, Enum.NormalId.Left)
-- 或者,使用该部件可以调整大小的面。
-- 如果该部件是只有两个大小维度的 TrussPart
-- 且长度为 2,则可调整面将只有两个
-- 启用的面。对于其他部件,将启用所有面。
handles.Faces = part.ResizeableFaces

ResizeIncrement
只读
未复制
读取并联
BasePart.ResizeIncrement:number

RightParamA
已弃用

RightParamB
已弃用

RightSurface
读取并联
BasePart.RightSurface:Enum.SurfaceType

RightSurfaceInput
已弃用

RootPriority
读取并联
BasePart.RootPriority:number

Rotation
未复制
读取并联
模拟访问权限
BasePart.Rotation:Vector3

RotVelocity
已弃用

Size
未复制
读取并联
模拟访问权限
BasePart.Size:Vector3
代码示例
金字塔构建器
local TOWER_BASE_SIZE = 30
local position = Vector3.new(50, 50, 50)
local hue = math.random()
local color0 = Color3.fromHSV(hue, 1, 1)
local color1 = Color3.fromHSV((hue + 0.35) % 1, 1, 1)
local model = Instance.new("Model")
model.Name = "Tower"
for i = TOWER_BASE_SIZE, 1, -2 do
local part = Instance.new("Part")
part.Size = Vector3.new(i, 2, i)
part.Position = position
part.Anchored = true
part.Parent = model
-- 从 color0 到 color1 的渐变
local perc = i / TOWER_BASE_SIZE
part.Color = Color3.new(
color0.R * perc + color1.R * (1 - perc),
color0.G * perc + color1.G * (1 - perc),
color0.B * perc + color1.B * (1 - perc)
)
position = position + Vector3.new(0, part.Size.Y, 0)
end
model.Parent = workspace

SpecificGravity
已弃用

TopParamA
已弃用

TopParamB
已弃用

TopSurface
读取并联
BasePart.TopSurface:Enum.SurfaceType

TopSurfaceInput
已弃用

Transparency
读取并联
BasePart.Transparency:number
代码示例
褪色门
-- 粘贴到一个高部件的脚本中
local part = script.Parent
local OPEN_TIME = 1
-- 这个门现在可以打开吗?
local debounce = false
local function open()
part.CanCollide = false
part.Transparency = 0.7
part.BrickColor = BrickColor.new("黑色")
end
local function close()
part.CanCollide = true
part.Transparency = 0
part.BrickColor = BrickColor.new("亮蓝色")
end
local function onTouch(otherPart)
-- 如果门已经打开,则不执行任何操作
if debounce then
print("D")
return
end
-- 检查是否被类人角色触碰
local human = otherPart.Parent:FindFirstChildOfClass("Humanoid")
if not human then
print("不是类人角色")
return
end
-- 执行门打开序列
debounce = true
open()
task.wait(OPEN_TIME)
close()
debounce = false
end
part.Touched:Connect(onTouch)
close()

Velocity
已弃用

方法
AngularAccelerationToTorque
模拟访问权限
BasePart:AngularAccelerationToTorque(
angAcceleration:Vector3, angVelocity:Vector3
参数
angAcceleration:Vector3
angVelocity:Vector3
默认值:"0, 0, 0"
返回

ApplyAngularImpulse
模拟访问权限
BasePart:ApplyAngularImpulse(impulse:Vector3):()
参数
impulse:Vector3
返回
()

ApplyImpulse
模拟访问权限
BasePart:ApplyImpulse(impulse:Vector3):()
参数
impulse:Vector3
返回
()

ApplyImpulseAtPosition
模拟访问权限
BasePart:ApplyImpulseAtPosition(
impulse:Vector3, position:Vector3
):()
参数
impulse:Vector3
position:Vector3
返回
()

BreakJoints
已弃用

breakJoints
已弃用

CanCollideWith
写入并联
模拟访问权限
BasePart:CanCollideWith(part:BasePart):boolean
参数
返回

CanSetNetworkOwnership
模拟访问权限
BasePart:CanSetNetworkOwnership():Tuple
返回
代码示例
检查一个部件的网络所有权是否可以被设置
local part = workspace:FindFirstChild("Part")
if part and part:IsA("BasePart") then
local canSet, errorReason = part:CanSetNetworkOwnership()
if canSet then
print(part:GetFullName() .. "的网络所有权可以被更改!")
else
warn("无法更改" .. part:GetFullName() .. "的网络所有权,因为:" .. errorReason)
end
end

GetClosestPointOnSurface
模拟访问权限
BasePart:GetClosestPointOnSurface(position:Vector3):Vector3
参数
position:Vector3
返回

GetConnectedParts
写入并联
BasePart:GetConnectedParts(recursive:boolean):{BasePart}
参数
recursive:boolean
默认值:false
返回

GetJoints
写入并联
模拟访问权限
BasePart:GetJoints():Instances
返回
Instances

GetMass
写入并联
模拟访问权限
BasePart:GetMass():number
返回
代码示例
查找零件的质量
local myPart = Instance.new("Part")
myPart.Size = Vector3.new(4, 6, 4)
myPart.Anchored = true
myPart.Parent = workspace
local myMass = myPart:GetMass()
print("我零件的质量是 " .. myMass)

getMass
已弃用

GetNetworkOwner
写入并联
模拟访问权限
BasePart:GetNetworkOwner():Instance
返回

GetNetworkOwnershipAuto
写入并联
模拟访问权限
BasePart:GetNetworkOwnershipAuto():boolean
返回

GetNoCollisionConstraints
模拟访问权限
BasePart:GetNoCollisionConstraints():Instances
返回
Instances

GetRenderCFrame
已弃用

GetRootPart
已弃用

GetTouchingParts
模拟访问权限
BasePart:GetTouchingParts():Instances
返回
Instances

GetVelocityAtPosition
写入并联
模拟访问权限
BasePart:GetVelocityAtPosition(position:Vector3):Vector3
参数
position:Vector3
返回

IntersectAsync
暂停
功能: CSG
BasePart:IntersectAsync(
parts:Instances, collisionfidelity:Enum.CollisionFidelity, renderFidelity:Enum.RenderFidelity
参数
parts:Instances
collisionfidelity:Enum.CollisionFidelity
默认值:"Default"
renderFidelity:Enum.RenderFidelity
默认值:"Automatic"
返回

IsGrounded
写入并联
模拟访问权限
BasePart:IsGrounded():boolean
返回

MakeJoints
已弃用

makeJoints
已弃用

Resize
模拟访问权限
BasePart:Resize(
normalId:Enum.NormalId, deltaAmount:number
参数
normalId:Enum.NormalId
deltaAmount:number
返回

resize
已弃用

SetNetworkOwner
模拟访问权限
BasePart:SetNetworkOwner(playerInstance:Player):()
参数
playerInstance:Player
默认值:"nil"
返回
()

SetNetworkOwnershipAuto
模拟访问权限
BasePart:SetNetworkOwnershipAuto():()
返回
()

SubtractAsync
暂停
功能: CSG
BasePart:SubtractAsync(
parts:Instances, collisionfidelity:Enum.CollisionFidelity, renderFidelity:Enum.RenderFidelity
参数
parts:Instances
collisionfidelity:Enum.CollisionFidelity
默认值:"Default"
renderFidelity:Enum.RenderFidelity
默认值:"Automatic"
返回
代码示例
BasePart:SubtractAsync()
local Workspace = game:GetService("Workspace")
local mainPart = script.Parent.PartA
local otherParts = { script.Parent.PartB, script.Parent.PartC }
-- 执行减法操作
local success, newSubtract = pcall(function()
return mainPart:SubtractAsync(otherParts)
end)
-- 如果操作成功,将其放置在相同的位置并将其父级设为工作区
if success and newSubtract then
newSubtract.Position = mainPart.Position
newSubtract.Parent = Workspace
end
-- 销毁操作后保持完整的原始部分
mainPart:Destroy()
for _, part in otherParts do
part:Destroy()
end

TorqueToAngularAcceleration
模拟访问权限
BasePart:TorqueToAngularAcceleration(
torque:Vector3, angVelocity:Vector3
参数
torque:Vector3
angVelocity:Vector3
默认值:"0, 0, 0"
返回

UnionAsync
暂停
功能: CSG
BasePart:UnionAsync(
parts:Instances, collisionfidelity:Enum.CollisionFidelity, renderFidelity:Enum.RenderFidelity
参数
parts:Instances
collisionfidelity:Enum.CollisionFidelity
默认值:"Default"
renderFidelity:Enum.RenderFidelity
默认值:"Automatic"
返回
代码示例
BasePart:UnionAsync()
local Workspace = game:GetService("Workspace")
local mainPart = script.Parent.PartA
local otherParts = { script.Parent.PartB, script.Parent.PartC }
-- 执行联合操作
local success, newUnion = pcall(function()
return mainPart:UnionAsync(otherParts)
end)
-- 如果操作成功,将其放置在相同位置并将其父对象设置为工作区
if success and newUnion then
newUnion.Position = mainPart.Position
newUnion.Parent = Workspace
end
-- 销毁在操作后保持完好的原始部分
mainPart:Destroy()
for _, part in otherParts do
part:Destroy()
end

活动
LocalSimulationTouched
已弃用

OutfitChanged
已弃用

StoppedTouching
已弃用

Touched
BasePart.Touched(otherPart:BasePart):RBXScriptSignal
参数
otherPart:BasePart
代码示例
接触部件数量
local part = script.Parent
local billboardGui = Instance.new("BillboardGui")
billboardGui.Size = UDim2.new(0, 200, 0, 50)
billboardGui.Adornee = part
billboardGui.AlwaysOnTop = true
billboardGui.Parent = part
local tl = Instance.new("TextLabel")
tl.Size = UDim2.new(1, 0, 1, 0)
tl.BackgroundTransparency = 1
tl.Parent = billboardGui
local numTouchingParts = 0
local function onTouch(otherPart)
print("开始接触: " .. otherPart.Name)
numTouchingParts = numTouchingParts + 1
tl.Text = numTouchingParts
end
local function onTouchEnded(otherPart)
print("接触结束: " .. otherPart.Name)
numTouchingParts = numTouchingParts - 1
tl.Text = numTouchingParts
end
part.Touched:Connect(onTouch)
part.TouchEnded:Connect(onTouchEnded)
模型触碰
local model = script.Parent
local function onTouched(otherPart)
-- 忽略与模型本身接触的实例
if otherPart:IsDescendantOf(model) then
return
end
print(model.Name .. " 与 " .. otherPart.Name .. " 碰撞")
end
for _, child in pairs(model:GetChildren()) do
if child:IsA("BasePart") then
child.Touched:Connect(onTouched)
end
end

TouchEnded
BasePart.TouchEnded(otherPart:BasePart):RBXScriptSignal
参数
otherPart:BasePart
代码示例
接触部件数量
local part = script.Parent
local billboardGui = Instance.new("BillboardGui")
billboardGui.Size = UDim2.new(0, 200, 0, 50)
billboardGui.Adornee = part
billboardGui.AlwaysOnTop = true
billboardGui.Parent = part
local tl = Instance.new("TextLabel")
tl.Size = UDim2.new(1, 0, 1, 0)
tl.BackgroundTransparency = 1
tl.Parent = billboardGui
local numTouchingParts = 0
local function onTouch(otherPart)
print("开始接触: " .. otherPart.Name)
numTouchingParts = numTouchingParts + 1
tl.Text = numTouchingParts
end
local function onTouchEnded(otherPart)
print("接触结束: " .. otherPart.Name)
numTouchingParts = numTouchingParts - 1
tl.Text = numTouchingParts
end
part.Touched:Connect(onTouch)
part.TouchEnded:Connect(onTouchEnded)

©2026 Roblox Corporation、Roblox、Roblox 标志及 Powering Imagination 是我们在美国及其他国家或地区的注册与未注册商标。