旋轉物體 是在 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 的 查看 菜單中的 顯示約束詳情。
將 AngularVelocity 約束插入部件。
- 在 Explorer 窗口中,將滑鼠懸停在部件上,然後點擊 ⊕ 圖標。將顯示一個上下文菜單。
- 從上下文菜單中插入 AngularVelocity。約束的視覺輔助工具將顯示在部件的中間。
將部件的附件分配給新約束。
- 在 Explorer 窗口中選擇約束。
- 在 屬性 窗口中,
- 將 Attachment0 設置為 SpinAttachment。
- 將 AngularVelocity 設置為 0, 6, 0 以使該部件沿 Y 軸以 6 弧度每秒旋轉。需要注意的是,如果將此屬性設置為 0, -6, 0,則塊將會順時針旋轉。
- 將 MaxTorque 設置為 1000 以施加最多 1000 Rowton-單位的恆定角力量每秒,以實現目標的角速度。
- 將 RelativeTo 保留為 World 以使塊相對於世界的位置和方向進行旋轉。

確認您設置的扭矩使塊以恆定的角速度沿世界的 Y 軸旋轉 6 弧度。
從中二層的下拉菜單選擇 運行 模擬模式,然後點擊 播放 按鈕開始。Studio 在當前相機位置模擬體驗,而不會在 3D 空間中顯示您的角色。

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

獲取螺旋槳資產
創作者商店 是 工具箱 的一個標籤,您可以用來查找所有由 Roblox 和 Roblox 社區製作的資產,以便在您的專案中使用,包括模型、圖像、網格、音頻、插件、視頻和字體資產。您可以使用創作者商店將單個資產或資產庫直接添加到打開的體驗中。
本教學引用了一個您可以在複製每個步驟的 HingeConstraint 技術時使用的螺旋槳模型。要從您的庫中獲取此螺旋槳資產並將其導入到您的體驗中:
將螺旋槳添加到您的庫中。
- 瀏覽到該資產的 詳細頁面 在創作者商店中。
- 在右上角,點擊 獲取模型 按鈕。螺旋槳資產現在位於您的庫中,您可以在平台上的任何專案中重用它。
在 Studio 中,導航到 Home 標籤,然後點擊 工具箱 按鈕。工具箱 窗口將打開。

在 工具箱 窗口中,單擊 庫 標籤。將顯示 我的模型 筛选。

單擊 螺旋槳 磚塊。模型將顯示在您的視口中。

配置附件
您可以通過向組合中添加兩個 Attachment 物件來指定希望附件重疊的位置以及旋轉運動的方向,然後在 3D 空間中配置它們的對齊和方向。
樣本 旋轉物體 體驗在不固定的螺旋槳與固定的底座重疊的位置附近對齊了兩個附件,並將它們的主要旋轉軸朝上進行對齊,這樣它們就可以逆時針旋轉。在這個例子中,底座附件無法旋轉,因為底座是固定的。
配置鉸鏈約束的附件:
在 頭部 和 底座 中插入一個 Attachment 物件。
- 在 Explorer 窗口中,將滑鼠懸停在 頭部 上並點擊 ⊕ 按鈕。將顯示一個上下文菜單。
- 從菜單中插入一個 附件。
- 對 底座 重複這個過程。
- 將兩個附件分別重新命名為 HeadAttachment 和 BaseAttachment。

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

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

配置約束
現在您的附件都有重疊的位置和方向,您可以配置 HingeConstraint 約束的屬性,以指定每秒希望附件旋轉的弧度數量,還有引擎能夠施加的最大扭矩,以使附件達到恆定角速度。
與前面的技術類似,樣本 旋轉物體 體驗施加最多 1000 Rowton-單位的恆定角力量,以使附件沿 Y 軸以恆定的角速度旋轉 3 弧度。然而,因為底座附件位於固定物件中,因此只有螺旋槳的附件可以旋轉。
要配置鉸鏈約束:
在 頭部 中插入一個 HingeConstraint 物件。
- 在 Explorer 窗口中,將滑鼠懸停在 頭部 上,然後點擊 ⊕ 圖標。將顯示一個上下文菜單。
- 從上下文菜單中插入 HingeConstraint。
將螺旋槳的附件分配給新約束,讓它相對於固定的底座旋轉。
- 在 Explorer 窗口中選擇該約束。
- 在 屬性 窗口中,
- 將 Attachment0 設置為 BaseAttachment。
- 將 Attachment1 設置為 HeadAttachment。鉸鏈顯示在視口中。

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

確認您設置的扭矩使螺旋槳以恆定的角速度沿 Y 軸旋轉 3 弧度。
從中二層的下拉菜單選擇 運行 模擬模式,然後點擊 播放 按鈕開始。Studio 在當前相機位置模擬體驗,而不會在 3D 空間中顯示您的角色。

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

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