玩家角色可以“坐”在。 当角色触摸启用的座位对象时,它将被附在零件上,通过 BasePart 和默认角色脚本播放坐下动画。
座位如何工作?
当一个包含 Humanoid 和 BasePart 的模型触摸座位时,会生成一个 Weld 在座位和零件之间。
当坐下Class.Seat.Occupant属性设置为Seat.Occupant,其中正在座位上坐下的是Humanoid。此外,人形的Class.Humanoid.SeatPart属性也设置为座位。
角色也可以被强迫坐在座位上使用 Seat:Sit() 函数。
有两种方法让角色从座位上离开。当玩家跳出时,他们会被从座位上移除。但这也可以通过手动摧毁座椅接合来执行,例如:
座位:FindFirstChild("SeatWeld"):Destroy()
注意座位有一个冷却时间(目前为3秒),该冷却时间是根据每个角色每个座位的基础。 这意味着一旦角色离开座位,他们不能在同一个座位上坐下3秒。 此冷却时间可能会改变,并且不应被开发人员使用。
座椅用于什么?
座位有各种各样的使用,从明显的到更不寻常的。
- 创建椅子或长椅,无需任何编程
- 允许角色在车辆等移动对象上“坐下”,不会被挥舞
- 创建使用 Seat.Occupant 属性控制座位角色的界面
代码示例
local Players = game:GetService("Players")
local seat = Instance.new("Seat")
seat.Anchored = true
seat.Position = Vector3.new(0, 1, 0)
seat.Parent = workspace
local currentPlayer = nil
local function onOccupantChanged()
local humanoid = seat.Occupant
if humanoid then
local character = humanoid.Parent
local player = Players:GetPlayerFromCharacter(character)
if player then
print(player.Name .. " has sat down")
currentPlayer = player
return
end
end
if currentPlayer then
print(currentPlayer.Name .. " has got up")
currentPlayer = nil
end
end
seat:GetPropertyChangedSignal("Occupant"):Connect(onOccupantChanged)
概要
属性
座椅是否可用。如果设置为“真”,座椅将作为普通部件使用。
坐在座位上的人形。
设置对象的整体形状。
确定是否是物理上移动不可的部件。
零件的组装角度的速度。
零件装配在世界空间中的中心。
零件的装配直线速度。
零件的装配总量。
对装置的根部分的引用。
确定零件的背面表面类型 (+Z 方向)。
确定零件底部面的表面类型(-Y 方向)。
确定零件的颜色。
确定世界上的 BasePart 的位置和方向。
确定零件是否会与其他零件碰撞。
确定是否在空间查询操作中考虑零件。
决定是否在 Touched 和 TouchEnded 事件触发部件。
是否或否决定零件是否投射阴影。
描述零件中心的位置在哪个世界位置。
描述零件碰撞群组的名称。
确定零件的颜色。
指示零件的当前物理属性。
确定零件的几个物理属性。
用于启用或禁用零件和组装件上的气动力。
Class.BasePart 的物理部分的 BasePart 。
在物理引擎的视角下,BasePart的实际物理大小。
确定零件前面的表面类型(-Z 方向)。
确定零件左面的表面类型(-X 方向)。
为 BasePart.Transparency 设置一个倍增器,该客户端只能看到本地客户端。
在 Studio 中选择零件。
描述零件的质量、密度和体积。
确定零件是否对其刚性身体的总质量或粒度有贡献。
确定零件的材质和默认物理属性。
Class.Material 的名称。
描述世界上部件的旋转。
指定零件的中心从其 CFrame 。
描述世界中部件的位置。
上次记录的物理更新时间。
确定零件反射天空盒子的程度。
描述允许通过“调整大小”方法描述的最小变更。
描述零件可以调整的面。
确定零件右侧的表面类型 (+X 方向)。
确定装配件的根部的主要规则。
三轴上的零件的旋转。
确定零件的尺寸 (长度、宽度、高度)。
确定零件的顶部面的表面类型 (+Y 方向)。
通过(反向)零件隐私度来确定零件的可见度。
方法
强制角色与指定的 Humanoid 坐下。
将角度冲击应用到装配件。
在装配的 center of mass 上应用脉冲。
将脉冲应用到指定位置的装配上。
返回零件是否可以相互碰撞。
检查您是否可以设置零件的网络所有权。
返回一个连接对象的零件表,通过任何类型的刚性关接头。
返回所有连接到此零件的关联或限制。
返回 Mass 属性的值。
返回当前玩家,这是网络的主人,或者在服务器的情况下为零。
如果游戏引擎自动决定网络所有者,返回 true。
返回零件组的基础部分。
返回包含所有 BasePart.CanCollide 真实零件的表。
返回该零件相对于此零件所给定位置的直线速度。
返回 true 如果对象连接到一个部件,它将在那里保持位置(例如 Class.BasePart.Anchored|Anchored 部件),否则返回 false。
就像使用 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 的枢轴。
形成 PVInstance 与所有的后代 PVInstances ,使 pivot 现在位于指定的 CFrame 。