旋轉物體是指在3D空間中圍繞一個或多個軸旋轉的物體。利用Roblox內建的模擬引擎的強大功能,您可以使物體旋轉並與其環境互動,模擬現實世界中熟悉且直觀的物理行為,例如重力、空氣動力學和摩擦力。
使用旋轉物體 .rbxl 文件作為參考,本教程解釋了物理力量如何影響Studio中的角運動,並展示了各種技術,以不同的旋轉行為在您的遊戲中旋轉物體,包括指導:
- 使用 AngularVelocity 移動約束以恆定角速度旋轉整個組件。
- 使用 HingeConstraint 機械約束以恆定角速度旋轉組件中的一個部分,而其餘組件保持靜止。
- 使用 ApplyAngularImpulse 方法以初始角力的衝擊旋轉組件,使組件隨時間緩慢減速。
角運動和物理力量
Roblox Studio是一個現實世界的模擬引擎,實時模擬物理行為,因此為了預測遊戲中旋轉物體的行為,了解物體在現實生活中如何以角運動旋轉是非常重要的。
角運動,或稱為旋轉運動,是圍繞固定點或軸的運動。例如,當螺旋槳具有角運動時,它圍繞螺旋槳中間的旋轉軸旋轉。

角運動無法在沒有外部物理力量推動或拉動物體旋轉的情況下存在。根據牛頓的第一運動定律,靜止物體保持靜止,運動物體保持以恆定速度運動,除非受到外部力量的作用。例如,靜止的螺旋槳保持靜止,除非像風這樣的物理力量推動它旋轉。
扭矩是導致物體旋轉的物理力量的度量,並且它負責物體獲得角加速度。這一概念對於在Studio中使物體旋轉特別重要;您施加的扭矩越大,物體加速的速度就越快。
這是因為扭矩需要大於任何方向的物理力量,這些力量會對物體施加反作用力,例如重力或摩擦力。例如,如果您將螺旋槳放在泥土中,風的物理力量需要克服泥土的摩擦力才能繼續加速旋轉的螺旋槳。如果風的力量不比泥土的摩擦力大得多,則螺旋槳會加速,但速度會比前一個例子慢。

角速度是物體旋轉速率的度量,或物體在一段時間內圍繞固定點或軸旋轉的速度。Studio根據物體每秒旋轉多少弧度來測量角速度。每次旋轉有2π弧度(6.283),因此為了使物體每秒完成一次完整的旋轉,它必須有足夠的扭矩來旋轉約6弧度。理解角速度對於設計遊戲玩法非常重要,因為它幫助您確定為了實現特定的加速度,您需要多少扭矩來旋轉物體。
以下部分將深入探討這些概念,您將學習如何以恆定或初始角速度旋轉物體,並施加必要的扭矩以克服環境中的任何反向物理力量。在您回顧這些物理概念及即將到來的技術時,您可以更準確地預測如何調整屬性值,以實現Studio中任何理想的旋轉行為。
維持恆定的角力
為了使物體達到並維持恆定的角速度,它需要一個角力來克服任何減速物體角速度的反向物理力量,或使物體保持靜止。例如,如果您希望物體在Studio中具有 [0, 12, 0] 的角速度,則需要足夠的扭矩使物體在其環境中沿Y軸達到並維持 12 弧度每秒,或約每秒兩次完整的旋轉。
您施加在物體上的扭矩不僅取決於環境中自身的反向物理力量,例如重力和摩擦力,還取決於物體本身。例如,如果您有兩個形狀相同的物體在同一軸上旋轉,較大的物體具有較大的慣性矩,需要更多的扭矩才能達到相同的角加速度。
以下子部分使用不同形狀和大小的組件來教您如何旋轉整個物體或僅旋轉物體的一部分。當您嘗試不同的屬性值時,您將學會如何估算在您自己的遊戲中對組件所需的最大扭矩。
使用 AngularVelocity 約束
AngularVelocity 物件是一種移動約束,它對整個組件施加扭矩以維持恆定的角速度。要開始旋轉組件,AngularVelocity 約束需要知道:
- 施加角力的點和正向或負向方向。
- 您希望組件每秒旋轉的弧度數。
- 引擎可以施加的最大扭矩,以使組件達到恆定的角速度。
為了演示這個過程,您將在工作區中添加一個塊,並添加一個 AngularVelocity 約束引用的附件,以使塊以恆定的角速度沿世界的Y軸旋轉 6 弧度每秒,或約一次完整的旋轉。

添加附件
您可以通過向組件添加一個 Attachment 物件來指定固定點以旋轉組件,然後配置附件在3D空間中的位置。示例旋轉物體遊戲在一個塊部件的中心放置了一個附件,以便約束可以使部件圍繞其中心逆時針旋轉。
附件包括視覺輔助工具,幫助您可視化其旋轉軸。黃色箭頭表示附件的主要軸,橙色箭頭表示附件的次要軸。雖然在這個技術的步驟中,這兩個旋轉軸都不影響塊的旋轉,但了解這些視覺輔助工具對於未來的參考是很重要的,因為它們可以幫助您確定不同類型約束的理想行為,例如下一個技術中的 HingeConstraint。

要添加附件:
在 Explorer 窗口中,將一個 塊 部件插入 Workspace。

在新部件中插入一個附件。
- 在 Explorer 窗口中,將鼠標懸停在部件上,然後單擊 ⊕ 按鈕。將顯示上下文菜單。
- 從菜單中插入一個 Attachment。附件顯示在部件的中心。
- 將附件重命名為 SpinAttachment。

配置約束
現在您的塊有了一個固定點來旋轉塊,您可以配置 AngularVelocity 約束的屬性,以指定施加目標恆定角速度的旋轉方向、軸或軸、您希望塊每秒旋轉的弧度數,以及引擎可以施加的最大扭矩,以使塊達到恆定的角速度。
示例旋轉物體遊戲施加最多1000 Rowton-單位的恆定角力,以使塊以恆定的角速度沿世界的Y軸旋轉6弧度每秒。Rowton-單位是Roblox測量扭矩的主要物理單位。要參考Roblox物理單位及其如何轉換為公制單位,請參見Roblox單位。
要配置 AngularVelocity 約束:
為了使約束在視口中可見,以便您可以參考其旋轉方向,請在Studio的 View 菜單中啟用 Show Constraint Details。
在部件中插入一個 AngularVelocity 約束。
- 在 Explorer 窗口中,將鼠標懸停在部件上,然後單擊 ⊕ 圖標。將顯示上下文菜單。
- 從上下文菜單中插入 AngularVelocity。約束的視覺輔助工具顯示在部件的中間。
將部件的附件分配給新約束。
- 在 Explorer 窗口中,選擇約束。
- 在 Properties 窗口中,
- 將 Attachment0 設置為 SpinAttachment。
- 將 AngularVelocity 設置為 0, 6, 0 以使部件沿Y軸以6弧度每秒旋轉。請注意,如果您將此屬性設置為 0, -6, 0,則塊將順時針旋轉。
- 將 MaxTorque 設置為 1000 以施加最多1000 Rowton-單位的恆定角力每秒,以達到目標角速度。
- 將 RelativeTo 保持為 World 以使塊相對於世界的位置和方向旋轉。

驗證您設置的扭矩使塊沿世界的Y軸以6弧度每秒旋轉。
從夾層的下拉菜單中選擇 Run 模擬模式,然後單擊 Play 按鈕以開始。Studio在當前相機位置模擬遊戲,而不在3D空間中顯示您的角色。

您可能需要根據塊的比例和環境中的任何反向物理力量調整您的扭矩。例如,示例遊戲中 AngularVelocity 約束的屬性適用於在平坦平台上具有塑料材料的默認大小為 4, 1, 2 的塊部件,以及具有經典預設重力的環境。
但是,如果您的塊尺寸較大並且位於草地上,則需要增加 AngularVelocity.MaxTorque 屬性,因為角力需要克服塊的質量和環境中的摩擦力。例如,示例中的大塊部件需要至少 300000 Rowton-單位的恆定角力才能達到設置的角速度!
使用 HingeConstraint 約束
HingeConstraint 物件是一種機械約束,允許兩個附件圍繞一個軸旋轉,將附件約束在相同的位置並使其主要軸朝同一方向。當您將 HingeConstraint.ActuatorType 設置為 Motor 時,該約束對兩個附件施加扭矩,目標是使附件達到並維持恆定的角速度。
此外,當您將附件放入具有兩個物體的組件中時,這些物體會鎖定在一起,並根據附件的固定主要軸嘗試一起旋轉。如果您將其中一個物體固定,則角力將繼續以恆定的角速度旋轉另一個物體,而其餘組件保持靜止。
例如,要開始在組件中旋轉特定物體,HingeConstraint 約束需要知道:
- 您希望附件重疊的位置。
- 施加角力的點和正向或負向方向。
- 您希望附件每秒旋轉的弧度數。
- 引擎可以施加的最大扭矩,以使附件達到恆定的角速度。
為了演示這個過程,您將在工作區中添加一個包含兩個物體的螺旋槳組件,並在兩個物體中添加附件,HingeConstraint 約束引用這些附件,以使螺旋槳以恆定的角速度沿Y軸旋轉 3 弧度每秒(約每秒半次完整的旋轉),同時螺旋槳的基座保持靜止。

獲取螺旋槳資產
Creator Store 是 Toolbox 的一個選項卡,您可以使用它來查找所有由Roblox和Roblox社區製作的資產,以便在您的項目中使用,包括模型、圖像、網格、音頻、插件、視頻和字體資產。您可以使用Creator Store將單個資產或資產庫直接添加到打開的遊戲中。
本教程引用了一個螺旋槳模型,您可以在複製每個步驟的 HingeConstraint 技術時使用。要將此螺旋槳資產從您的庫中添加到您的遊戲中:
將螺旋槳添加到您的庫中。
- 瀏覽到資產的詳細頁面在Creator Store上。
- 在右上角,單擊 Get Model 按鈕。螺旋槳資產現在在您的庫中,您可以在平台上的任何項目中重複使用它。
在Studio中,導航到 Home 標籤,然後單擊 Toolbox 按鈕。 Toolbox 窗口打開。

在 Toolbox 窗口中,單擊 Inventory 標籤。 My Models 排序顯示。

單擊 Propeller 磚塊。模型顯示在您的視口中。

配置附件
您可以通過向組件添加兩個 Attachment 物件來指定您希望附件重疊的位置和旋轉運動的方向,然後配置它們在3D空間中的對齊和方向。
示例旋轉物體遊戲將兩個附件對齊在未固定的螺旋槳與固定的基座重疊的位置附近,並將其主要旋轉軸朝上,以便它們逆時針旋轉。在此示例中,基座附件無法旋轉,因為基座是固定的。
要為鉸鏈約束配置附件:
在 Head 和 Base 中插入一個 Attachment 物件。
- 在 Explorer 窗口中,將鼠標懸停在 Head 上,然後單擊 ⊕ 按鈕。將顯示上下文菜單。
- 從菜單中插入一個 Attachment。
- 對 Base 重複此過程。
- 將兩個附件分別重命名為 HeadAttachment 和 BaseAttachment。

旋轉 HeadAttachment 和 BaseAttachment,使每個附件的主要軸指向Y軸的上方。這告訴Studio使附件逆時針旋轉。

將 BaseAttachment 移動到 Base 的頂部,並將 HeadAttachment 移動到 Propeller 的底邊。這告訴Studio在運行時連接鉸鏈本身,並重疊兩個附件。

配置約束
現在您的附件有了重疊的位置和旋轉運動的方向,您可以配置 HingeConstraint 約束的屬性,以指定您希望附件每秒旋轉的弧度數,以及引擎可以施加的最大扭矩,以使附件達到恆定的角速度。
與前一技術類似,示例旋轉物體遊戲施加最多1000 Rowton-單位的恆定角力,以使附件沿Y軸以恆定的角速度旋轉3弧度每秒。然而,由於基座附件位於固定物體中,只有螺旋槳的附件可以旋轉。
要配置鉸鏈約束:
在 Head 中插入一個 HingeConstraint 物件。
- 在 Explorer 窗口中,將鼠標懸停在 Head 上,然後單擊 ⊕ 圖標。將顯示上下文菜單。
- 從上下文菜單中插入一個 HingeConstraint。
將螺旋槳的附件分配給新約束,以便螺旋槳相對於固定的基座旋轉。
- 在 Explorer 窗口中,選擇約束。
- 在 Properties 窗口中,
- 將 Attachment0 設置為 BaseAttachment。
- 將 Attachment1 設置為 HeadAttachment。鉸鏈在視口中顯示。

在 Explorer 窗口中,選擇約束,然後在 Properties 窗口中,
- 將 ActuatorType 設置為 Motor。新的屬性字段顯示。
- 將 MotorMaxTorque 設置為 1000 以施加最多1000 Rowton-單位的恆定角力,以達到目標角速度。
- 將 AngularVelocity 設置為 3 以使螺旋槳的頭部以3弧度每秒旋轉。

驗證您設置的扭矩使螺旋槳沿Y軸以3弧度每秒旋轉。
從夾層的下拉菜單中選擇 Run 模擬模式,然後單擊 Play 按鈕以開始。Studio在當前相機位置模擬遊戲,而不在3D空間中顯示您的角色。

施加初始角力
改變物體角速度的另一種方法是施加角力的衝擊。在施加角力的衝擊後,物體要麼減速直到靜止,如果存在摩擦等反向力量,要麼在沒有反向力量的情況下保持以恆定速度運動。
這種技術在重大遊戲或天氣事件後旋轉物體時非常有用,例如強風,因為它為玩家提供了瞬時反饋。為了演示,以下子部分教您如何使用初始隨機角力旋轉組件,您可以根據新的值進行調整以滿足自己的遊戲需求。
使用 ApplyAngularImpulse
ApplyAngularImpulse 方法對整個組件施加扭矩,以獲得初始角速度,然後減速至停止。要開始旋轉組件,該方法需要知道:
- 要旋轉的組件。
- 施加扭矩以達到初始角速度的軸。
- 要施加到每個軸的扭矩量。
您可以在腳本中定義所有這些值。例如,示例腳本將要旋轉的組件定義為腳本的父級,然後在Y軸上施加隨機的角力衝擊,範圍在 0 到 100 Rowton-單位之間。
要使用 ApplyAngularImpulse 旋轉組件:
在 Workspace 中插入一個 球體 部件。示例使用一個帶有 MaterialVariant 的球體,以便您可以清楚地可視化球體的運動。

在新部件中插入一個腳本。
- 在 Explorer 窗口中,將鼠標懸停在部件上,然後單擊 ⊕ 按鈕。將顯示上下文菜單。
- 從菜單中插入一個 Script。
用以下代碼替換默認代碼:
local part = script.Parent
local impulse = Vector3.new(0, math.random(0, 100), 0)
part:ApplyAngularImpulse(impulse)