創建移動對象

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

移動對象 是一些在 3D 空間內移動在一個或多個軸上的物件。使用 Roblox 的內置力量來移動對象並與環境交互,以偉大地模擬玩家的實際行為,例如重力、氣力和摩擦。

使用 移動對象.rbxl 作為參考,這個教學解釋了物理力如何在 Studio 中影響直線運動,並且展示了一些移動對象從 A 點移動到 B 點的體驗,包括導航運動行為的提示:

  • 使用 LinearVelocity 移動限制來移動整個組合在一個定速線速移動。
  • 使用 PrismaticConstraint 來限制裝配件到單一軸,並且在 3D 空間中的某個點上以固定速度移動。
  • 使用 ApplyImpulse 方法移動裝配件以達到初始力的速度,以便裝配件在時間過程中慢慢減速。

線性運動和物理力

Roblox Studio 是一種實時模擬實體行為的引擎,可以模擬物體在實時行為中的物理行為,因此要預測物體移動線性的方式在體驗中如何表現,就重要有高層級的了解物體在實體生命中以線性運動的方式移動。 線性運動 是沿著一個軸移動的。例如,當一個方塊有線性運動時,它會沿著一個特定的軸移動。

A gray block in front of a dark background. The movement axis is highlighted, and it faces toward the left of the screen to signify that the block is going to move along the world's Y axis.

直線運動不能存在,沒有外部物理力推拉或拉動對象來移動工具移動工具。根據牛頓的 第一個運動定律 ,靜態對象保持靜態,移動對象保持移動,直到外部力量作用在它們上,否則它們會保持不動,直到外部力量作用在它們上,否則它們會保持不動,直到外部力量作用在它們上,否則它們會保持不動,直到外部

力量 是測量物體沿軸線移動速度的方向和強度的測量。變化速度是 加速 。這個概念對於在 Studio 中移動物體非常重要;你對物體的應用會使物體更快地加速。

這是因為力必須比任何物理力推回對物件,例如重力或摩擦。 為例,如果您將方塊放在金屬板上,風的物理力必須克服金屬板的摩擦力才能繼續加速方磚塊。如果風的力量不大於金屬板的摩擦力,方塊會加速,但速度會比上一個範例慢。

A gray block in front of a dark grey metal plate with a diagram that signifies the block will have a plate friction to slow the block's movement from the wind.

線性速度 是對物物件的移動的測量,或物體在一個時間段內沿軸的位置變化速度。 Studio 測量線性速度根據物體每秒鐘移動的速度。 Studs 是 Roblox 的主要物理單位,用於測量長度,每個 Stud 相當於約 28cm 的實際世界。

A gray block in front of the default baseplate's 4x4 grid texture. A single stud cube rectangle is highlighted.

了解線性速度對於設計遊戲體驗中的游戲玩法很重要,因為它能幫助你確定你需要的力量來達到特定速度對於移動對象。例個體、實例,當你想要向上移動對象時,你必須考慮如何調整你的力量來克服重力在環境中移動。

下列部分會進一步討論這些概念,讓您學會如何以一個定速或初始直線速度移動對象,並且以所需的力量來克服環境中的任何對稱物理力。當您檢視這些物理概念時,您可以更準確地預測如何調整屬性值以達到 Studio 中的任何理想直線運動行為。

維持一個定速直線速度

要使對象達到並保持一致的直線速度,它需要一種力量來克服任何會降低對物件直線速度或使對象保持不動的物理力。例如,如果您想要在 Studio 中的對象具有 [0, 12, 0] 的直線速度,您需要足夠的力量才能在 Y 軸的環境中以 12 個每

力的數量不僅取決於環境自身內的對立物理力,例如重力和摩擦,而且也取決於對象本身。例如,如果您有兩個相同形狀的對象移動在相同的軸上,那麼大質量的對象需要更多力來達到相同的直線加速。

小三角形零件的重量很小,所以它需要較小的力量來達到相同的加速。
大型三角形零件有大量質量,因此需要更多力量才能達到相同的加速。

下列子節使用不同形狀和大小的組合來教你如何移動整個對象或只是對象的一個部分以一致的直線速度。隨著你與不同的屬性值進行實驗,你會學會估算你需要的最大力量。

使用線速度限制

LinearVelocity 對象是一種 mover 限制 ,它們在整個裝配上施加力量以維持一致的直線速度。 通過不鎖定裝配的位置以軸在其移動中與其他對象在 3D 空間中碰撞,裝配是自由旋轉的,因為它不鎖定裝配的位置到軸。 這種

隨著蘭花墊與一起碰撞,它們會改變方向,但仍會繼續朝河流下以一個正常的直線速度。

要開始移動裝配,LinearVelocity 限制需要知道:

  • 指向和正向或負向來適用力。
  • 您想要裝配移動的每秒鐘數量。
  • 引擎可以對組件達到一致的平直速度的最大力量。

為了示範此過程,您將設定一個莉莉墊上附有一個附件,以便以一 LinearVelocity 限制引用移動莉莉墊 15 每秒以世界的負 X 軸上的平移速度。

A close up view of a lily pad. The lily pad's constraint visual aid is visible, and it points to the right, which is the world's negative X axis.

新增附件

您可以通過將 Attachment 對象添加到裝配中,然後在 3D 空間中配置附件位置來指定要適用的力來強制。 樣本 Moving 物件 體驗放置一個附件在中心的莉莉墊上,以便可以將網格從附件上移動到特定軸線上。

附件包括視覺協助,以幫助您視覺化其運動軸。黃色箭頭表示附件的主軸,橙色箭頭表示附件的副軸。 雙軸在此技術的步驟中對艾莉邊距的移動沒有影響,但對於不同類型的限制,例如 <

A attachment's visual aid arrows. The yellow arrow that signfies the attachment's primary axis points up, and the orange arrow that signfies the attachment's secondary axis points to the right.

要新增附件:

  1. Explorer 窗口中,將 LinearVelocityExample 文件夾擴展,然後擴展其子孫 LilyPad_DIY 模型。

  2. 將一個附件插入 Pad 網格。

    1. 將鼠標擺放在網格上,單擊⊕按鈕。一個上下文菜單顯示。
    2. 從選單中,插入 附件 。 附件會顯示在零件的中心。
    3. 將附件重命名為 移動附件
    A close up view of a lily pad and its attachment visual aid. The primary axis points away from the camera, and the secondary axis points upward.

配置限制

現在您的網格有一個固定點來移動莉莉邊距,您可以配置 LinearVelocity 限制的屬性來指定方向和大小對於常量直線速度,您想要網格每秒鐘移動的速度和引擎可以應用的力量的上限。

樣本 移動對象 體驗包括 5000 行銜的定力力以每秒鐘 15 公尺的速度移動世界的負 X 軸上的莉莉墊 。行銷是 Roblox 的主要物理單位,用於測量力的測量。要參照 Roblox 的物理單位並將其轉換為公制單位,請參閱

要設定 LinearVelocity 限制式:

  1. (可選) 在 3D 空間中顯示限制,讓您可以參照其直線方向。

    1. 在選單欄中,導航到 模型 標籤,然後是 限制 部分。
    2. 如果尚未啟用,請按一下 限制細節 以顯示限制視覺援助。
    A close up view of the Studio's Constraints section UI.
  2. LinearVelocity 限制插入 Pad 網格。

    1. 探險家 窗口中,將鼠標擺動在網格上,然後單擊 ⊕ 圖示。一個上下文菜單顯示。
    2. 從上下文菜單中,插入 線性速度
  3. 將網格的附件指定到新的限制式。

    1. Explorer 窗口中,選擇限限制式。
    2. 屬性 視窗中,
      1. 附件0 設置為 移動附件
      2. MaxForce 設置為 5000 以應用最多 5000 行動力量來達到目標直線速度。
      3. 相對位置 保留在 世界 以將紙巾相對於世界的位置和方向。
      4. VelocityConstraint 設置為 來限制力在附件上的線路。
      5. 線向 設置為 -1, 0, 0 以移動世界的負 X 軸上棕紙板。注意,如果您將此屬性設置為 1, 0, 0 ,棕紙板將移動在世界的正向 X 軸上。
      6. 線速度 設置為 15 以移動百合墊 15 每秒運動。
    A close up view of a lily pad and its constraint visual aid arrow that points to the right, or the world's negative X axis.
  4. 確認您設置的力量會以每秒移動 15 公尺的速度移動橫向世界的負 X 軸。

    1. 在選單欄中,導航到 測試 標籤。

    2. 模擬 區域中,單擊 模式選擇器 。一個下拉菜單顯示。

      Rapid playtest options in Test tab of Studio
    3. 選擇 執行 。Studio 會在 3D 空間中的當前視角位置模擬您沒有頭銜的虛擬人偶在執行體驗。

使用 PrismaticConstraint 限制

PrismaticConstraint 對象是一種 機械限制 類型,它們創建兩個附件之間的剛體關係,允許其父親裝配移動在一個軸上 相對 。通過鎖定兩個裝置的位置到一個軸上,每個裝置只能旋轉,如果它們在同一個方向旋轉。

這種移動會導致更容易預測的穩定遊戲場景,因為玩家可以預測更容易的移動移動對象體驗。舉例來說,PrismaticConstraint體驗使用Class.PrismaticConstraint對象來移動巨大河流,玩家可以使用它來精準穿越巨大河流。

當您將 PrismaticConstraint.ActuatorType 設置為 發動機 時,此約束對兩個附件施加力,以達到附件達到並保持一致的直線速度。如果您將一個附件的親粒組裝設為 錨定,則會強制移動未錨定的組裝設為 1> 靜止1>,而��

要開始移動裝配,PrismaticConstraint 限制需要知道:

  • 指向和正向或負向來適用力。
  • 你想要的附件每秒移動的 stud 數量。
  • 引子和其父親組合體可以達到一個定速的平移速度,引子的最大力量是引子的最大力量的 100 倍。

為了示範此過程,您將設定一個具有兒童附件的木頭組合,以 2 個 PrismaticConstraint 參考以 40 每秒鐘沿世界的負 X 軸線上移動木頭 40 磅。

A close up view of a brown log on top of a river. The log's constraint visual aid is visible and points to the right, or the world's negative X axis.

設定附件

您可以在組裝中指定特定對象的方向,並且在 3D 空間中配置其對齡方向和方向。 示例 Attachment 體驗會在世界的 X 軸上重疊未錨定的木頭,並且將其對稱在 3D 空間中。 對齡方向 將主軸對稱到世界

當您在下一個部分配置您的PrismaticConstraint限制時,它會將記錄 在相關 的錨定部分移動。在其他話,記錄會從可以移動的3D空間固定在一起,因此會從靜止部分移動。

要設定棱鏡限制的附限制式:

  1. Explorer 窗口中,將 PrismaticConstraintExample 文件擴展到,然後擴展其子 Log_DIY 模型。

  2. 將附件插入 樹狀網格 網格。

    1. 將鼠標擺放在網格上,單擊⊕按鈕。一個上下文菜單顯示。
    2. 從選單中,插入 附件 。 附件會顯示在零件的中心。
    3. 將附件重命名為 木頭附件
    A close up view of a log and its attachment visual aid. The primary axis points toward the camera, and the secondary axis points upward.
  3. 使用相同的過程,將附件插入 錨定 零件,然後重新命名附件 錨定附件

    A close up view of a log and two attachment visual aids. The primary axis of the new attachment visual aid points to the right, and the secondary axis points upward.
  4. 使用 檢視選擇器 工具作為世界的坐標參考,旋轉 LogAttachment錨定附件 直到每個附件的主軸面向世界的負 X 軸

    A close up view of a log and its attachment visual aid. Both attachments have a primary axis that points to the right, and a secondary axis that points upward.
  5. 重新定位 錨定附件 以便兩個附件都齊齊在世界的 X 軸上。

    A close up view of a log and its attachment visual aids that are now positioned horizontally. Both attachments have a primary axis that points to the right, and a secondary axis that points upward.

配置限制

現在您的附件正確對稱在同一軸上,面向同一個方向,您想要的紀錄移移動工具,您可以配置 PrismaticConstraint 限制來指定要在每個附件的主軸上的正向或負向方向中移動目標速度,以及您想要的附件每秒鐘移動的速度,以及引擎可以應用的力

雖然您可以為自己的使用案例選擇不同的值,但樣本 移動對象 體驗以 50000 行単位的定向力量移動附件 40 每秒以正常速度沿世界的負 X 軸上的附件 40 範圍沿線性速度。但因為錨定對象在錨定對物件上,只有錨定對象才能移動工具

要設定漿狀限制式:

  1. PrismaticConstraint 對象插入 記錄 網格。

    1. 探險家 窗口中,將鼠標擺動在網格上,然後單擊 ⊕ 圖示。一個上下文菜單顯示。
    2. 從上下文菜單中,插入 PrismaticConstraint
  2. 將樹木的附件分配到新的限制上,以便樹木移動在 關係 錨定的方塊部分。

    1. Explorer 窗口中,選擇限限制式。
    2. 屬性 視窗中,
      1. 附件0 設為 錨定附件
      2. 附件1 設置為 記錄附件 。限制在視角中顯示。
    A close up view of a log and its constraint visual aid. It doesn't have a arrow visual aid because it doesn't yet have a set velocity.
  3. 在 Explorer 窗口中,選擇限制式,然後在 Properties 窗口中,

    1. ActuatorType 設置為 機器 。新的屬性字段顯示。
    2. 機器最大力量 設置為 50000 以應用最多 50000 行動力量來達到目標直線速度。
    3. 速度 設為 40 以移動木頭 40 每秒単位。
    A close up view of a log and its constraint visual aid arrow that points to the right, or the world's negative X axis.
  4. 確認您設置的力量會每秒以 40 個速度移動世界的負 X 軸上的樹狀結構。

    1. 在選單欄中,導航到 測試 標籤。

    2. 模擬 區域中,單擊 模式選擇器 。一個下拉菜單顯示。

      Rapid playtest options in Test tab of Studio.
    3. 選擇 執行 。Studio 會在 3D 空間中的當前視角位置模擬您沒有頭銜的虛擬人偶在執行體驗。

應用初始線形力

改變對物件的直線速度的另一個方法是應用力的衝擊。在力的衝擊後,對象會否決速直到變成靜止,如果存在對稱的力,例如摩擦力,或者保持一致的直線速度,如果沒有對稱的力,則會保持移動。

此技術有助於在重大遊戲事件後移動對象,例如爆炸或具有劇烈衝擊的衝突,因為它提供瞬間回饋給玩家。要示範,下一個子部分教學玩家如何向上向天發射他們的角色,當他們與一個跳板結合時,可以適應新值以滿足您的遊戲要求。

使用 ApplyImpulse

Class.BasePart.ApplyImpulse|ApplyImpulse 方法在整個裝配上施加力,以獲得初始直線速度,然後在有對方力時停止。要開始移動裝配,方法需要知道:

  • 要移動工具動的裝配。
  • 用於達到初始直線速度的力量軸。
  • 每個軸的力量要應用。

您可以在指令碼中定義這些值。例如,範例指令碼會定義裝配移動為玩家角色的 Humanoid 對物件,然後應用 2500 行鐘的力量衝擊來啟動玩家向上在世界的正向 Y 軸上的世界。注意,玩家角色的重量會隨

要使用 ApplyImpulse 移動裝配:

  1. 在 Explorer 窗口中,擴展 應用強化範例 文件夾,然後擴展其子 JumpPad_DIY 模型。
  2. 將一個 腳本 插入 跳躍板 零件。
    1. 將鼠標指针擺動到零件上,然後按一下 ⊕ 按鈕。一個上下文菜單顯示。
    2. 從選單中,插入 指令碼 。 附件會顯示在零件的中心。
    3. 將指令碼重命名為 JumpScript
  3. 將以下代碼替換為預設代碼:

local volume = script.Parent
local function onTouched(other)
local impulse = Vector3.new(0, 2500, 0)
local character = other.Parent
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
if humanoid and other.Name == "LeftFoot" then
other:ApplyImpulse(impulse)
end
end
volume.Touched:Connect(onTouched)