玩家角色可以「坐」在的 BasePart 類型。當角色觸碰啟用的座位對物件時,將由 Weld 附加到零件,默認角色腳本將播放坐姿動畫。
座位如何工作?
當包含 Humanoid 和 BasePart 的模型稱為 'HumanoidRootPart' (通常是玩家角色) 觸碰座位時,會在座位和零件之間創建一個 Weld 。C0 和 C1 屬性配置為將角色焊在座椅上方 2 個單位。這個焊接被命名為「座椅焊接」,並與座椅相關。
當坐下時,Seat.Occupant屬性設為坐在座位上的Humanoid。此外,人形的 Humanoid.SeatPart 屬性設為座位。
也可以使用 Seat:Sit() 函數強制角色坐在座位上。
有兩種方法讓角色離開座位。當玩家跳躍時,他們將被從座位上移除。但是,也可以手動完成,例如摧毀座椅接合,例如:
座位:FindFirstChild("座位焊接"):摧毀()
注意座位有冷卻時間(目前為 3 秒),這是基於每個字元每個座位的。這意味著一旦角色從座位上離開,他們不能在同一個座位上坐下 3 秒。此冷卻行為可能會變更,並不應該由開發人員依賴。
座位可用於什麼?
座椅有各種各樣的用途,從最明顯到最不傳統的都有。
- 無需編寫任何程式即可創建椅子或長椅
- 允許角色在移動物件,例如車輛,「坐下」而不會被拋擲
- 使用 Seat.Occupant 屬性控制座椅中角色控制的介面創建
範例程式碼
This code sample includes a demonstration of how the Seat.Occupant property can be used to track which player is sitting in a seat and when they sit down or sit up.
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 事件在零件上發射。
決定零件是否投射陰影。
描述零件的重心位置在哪裡。
描述零件衝突群組的名稱。
決定零件的顏色。
指示零件目前的物理特性。
決定零件的多個物理特性。
用於啟用或禁用零件和裝配的空氣動力。
物理引擎所看到的 BasePart 實際尺寸。
決定零件前面的表面類型(-Z方向)。
決定零件左面的表面類型(-X方向)。
決定只對本地客戶可見的乘數 BasePart.Transparency 。
決定零件是否可在 Studio 中選擇。
描述零件的質量、密度和體積的產品。
決定零件是否會對其剛性身體的總質量或慣性有貢獻。
決定零件的紋理和預設物理特性。
MaterialVariant 的名稱。
描述世界中零件的旋轉。
指定零件的軸偏移來自其 CFrame 。
描述零件在世界上的位置。
上次記錄物理更新的時間。
決定零件是否反映了天空盒。
描述縮放方法可允許的最小尺寸變更。
描述可以縮放零件的面。
決定零件右面的表面類型 (+X 方向)。
決定組裝根部分的主要規則。
零件在三軸上的旋轉度。
決定零件的尺寸(長度、寬度、高度)。
決定零件頂部面的表面類型 (+Y 方向)。
決定零件能被看到多少(與零件隱形度相反)。
方法
強制指定的 Humanoid 角色坐在座位上。
對裝配應用角度脈沖。
在裝配的 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 的軸心。
將 以及所有其子孫 轉換為指定的 位置,使旋轉點現在位於指定的 位置。