使用 Smart Shape 打造 OrbitRun|第 5 部分:找到流程
Logo

試著一路按住按鍵爬上山坡。飛船爬坡時會失去速度。本篇會讓你更容易感受到好時機釋放與太晚釋放之間的差別。接著,你會為高空飛行留出更多畫面空間,並讓遊戲進行時節奏逐漸加快。

從第 4 部分繼續,或從檢查點套件開啟 OrbitRun-15-recovery.tap。本篇會修改一些先前的設定。每次修改後都玩一玩,感受哪些設定有所幫助。

移動與鏡頭的課程設計靈感來自 Andreas Illiger 的 Tiny Wings 瀏覽器示範和遊戲影片。OrbitRun 保留自己的原創美術與音效。

完成重製版中的下坡收集,接著高空滑翔並縮放鏡頭

錄製自完成的檢查點,包含第 6 部分新增的電池。觀察飛船升高時如何縮小,而畫面中可見的地形範圍如何擴大。

在圖示中,重複使用表示使用你已新增的行為。如需手勢提示,請參閱第 1 部分的行為連接。點按圖片即可放大檢視。

16. 讓下坡有重量感、上坡更輕盈

理想的釋放點是山谷,也就是坡面開始向上升起的地方。一路按住直到山頂,會在爬坡時受到更強的重力牽制。

  1. 開啟 Skimmer 的行為。選取 Generate,並依照下方設定修改地形。
  2. 將 Dive、Release 和 Launch 改為新數值。
  3. 更新輔助與上限這兩組行為的兩端:比較條件和套用的速度必須一致。
  • **Generate:**高度 14 m、間距 24 m、變化 28%、摩擦力 0。坡面會將動量導向爬升。
  • **Launch:**X 速度 28 m/s、Y 0,讓起步更有力。
  • **Dive:**物件重力 X 0、Y −60,讓下坡拉力更強。
  • **Release:**物件重力 X 0、Y −4,讓飛船在空中停留更久。
  • **Slow Check 和 Assist:**若 X 速度 < 18,將 X 設為 18;啟用 Maintain Y。這有助於從不理想的著陸中恢復。
  • **Fast Check 和 Speed Limit:**若 X 速度 > 58,將 X 設為 58;啟用 Maintain Y。理想的著陸可以累積速度,最高到達此上限。

套用新的地形設定,繼續調整飛行手感

  1. 將 Dive Cue 改為 DIVING / RELEASE AS THE HILL TURNS UP,並將 Glide Cue 改為 GLIDING / PRESS INTO THE NEXT DOWNSLOPE。
  2. 將標題說明更新為 Hold on the downhill. Release on the uphill. Build speed, then soar.

先飛一趟,不要觸碰任何按鈕。下一趟在下坡時按住,到了山谷就放開。看看你能爬升多高。現在試著在上坡時繼續按住:你應該會感受到飛船受到更強的向下拉力,難以爬升。

飛船沿著坡面滑行時,山坡會改變它的運動方向。爬升時減弱重力,便能讓飛船將更多動量帶往上方。

若要調整手感,每次只改一個數值。試試將 Release 設為 −6,縮短飛行時間;或將 Dive 設為 −45,讓按壓效果溫和一些。比較時請保持 Flight Tick 為 0.05 秒。這些重力設定適合這艘飛船和這條賽道;其他遊戲可能需要不同設定。

17. 留出足夠畫面空間,讓玩家看見著陸點

你需要在抵達下一座山丘前看見它。將飛船移到畫面偏左的位置,並在高空飛行時拉遠鏡頭。

設定畫面構圖

調整畫面時,請保持 Screen to Object 和 Zoom Screen 開啟。

  1. 選取 Camera,也就是步驟 5 建立的 Screen to Object 行為。目標設為 Skimmer,持續時間設為 0。開啟 Anchor 設定,將相對 X 設為 450%、Y 設為 50%。這個偏移會將飛船前方的一點置於畫面中央,讓飛船位在畫面左側。
  2. 保留 Camera 底部圓圈連到 Follow 的既有連線,並在 Skimmer 上使用 Screen Follow,同時啟用 X 和 Y。Screen Follow 會保留 Screen to Object 建立的畫面構圖。

Screen to Object 的 Anchor 彈出視窗已開啟:X 450%、Y 50%

  1. 將初始的 Zoom Screen 行為(別名 Zoom)設為 75%,持續時間設為 0。讓 HUD 保持在 Scene UI 上。

根據高度計算縮放目標

新增一個註解群組 17 Frame the landing and ease the zoom,並依照下方圖示設定。

  • **Camera Height (Get Position):**Skimmer,Screen Coordinates Off
  • **Camera Denominator (Add Values):**A = Camera Height 的 Y Position;B = 2
  • **Camera Ratio (Divide Values):**A = 1800;B = Camera Denominator 的結果
  • **Camera Near (If):**Camera Ratio 的結果 > 75
  • **Camera Near Zoom (Zoom Screen):**Zoom 75%,持續時間 0.45 s
  • **Camera Far (If):**Camera Ratio 的結果 < 22
  • **Camera Far Zoom (Zoom Screen):**Zoom 22%,持續時間 0.45 s
  • **Camera Air Zoom (Zoom Screen):**Zoom 設為 Camera Ratio 的結果,持續時間 0.45 s

依照下方指南連接,並讓 Zoom Screen 的輸出保持未連接。Hud Tick 會在每次鏡頭更新時啟動行為。

每次 HUD 更新時讀取飛船的高度,並計算縮放目標。

動畫連接指南:計算縮放目標

  1. 重複使用 Hud Tick。
  2. 新增名為 Camera Height 的 Get Position。將 Hud Tick 上空白的底部白色圓圈連到 Camera Height。
  3. 新增名為 Camera Denominator 的 Add Values。將 Camera Height 上空白的底部白色圓圈連到 Camera Denominator。
  4. 新增名為 Camera Ratio 的 Divide Values。將 Camera Denominator 上空白的底部白色圓圈連到 Camera Ratio。
  5. 新增名為 Camera Near 的 If。將 Camera Ratio 上空白的底部白色圓圈連到 Camera Near。

若目標超過 75%,就使用 75%。否則,檢查另一個上限。

動畫連接指南:首先檢查近距離上限

  1. 重複使用 Camera Near。
  2. 新增名為 Camera Near Zoom 的 Zoom Screen。將 Camera Near 底部(true)圓圈連到 Camera Near Zoom。
  3. 新增名為 Camera Far 的 If。將 Camera Near 右側(false)圓圈連到 Camera Far。

若目標低於 22%,就使用 22%。否則,使用計算出的數值。

動畫連接指南:接著檢查遠距離上限

  1. 重複使用 Camera Far。
  2. 新增名為 Camera Far Zoom 的 Zoom Screen。將 Camera Far 底部(true)圓圈連到 Camera Far Zoom。
  3. 新增名為 Camera Air Zoom 的 Zoom Screen。將 Camera Far 右側(false)圓圈連到 Camera Air Zoom。

讓高度控制縮放

選取接收行為,將來源輸出拖到 Zoom (%),選擇最終值,並確認產生的參照

放開後,Zoom (%) 會包含 Camera Ratio · final value。將持續時間設為 0.45 秒。

Camera Air Zoom 取得 Camera Ratio 的結果,並在 0.45 秒內平滑縮放

此關係為 target zoom = clamp(1800 / (world Y + 2), 22, 75)。請使用清單中的行為建立這個關係;不要將此運算式貼到數值欄位中。

  • **22 m:**套用上限後為 75%
  • **40 m:**約 43%
  • **60 m:**約 29%
  • **90 m:**套用下限後為 22%

觀察飛船靠近山丘時,以及高空滑翔時的畫面。飛船升高時,賽道在畫面中應占較小的範圍。分數、能量和按鈕的大小應保持不變。如果 HUD 也縮小了,代表它位於世界圖層,而不是 Scene UI。

Hud Tick 每 0.2 秒提供一次新的鏡頭目標。每次 0.45 秒的轉場都會平滑地朝目標縮放,因此鏡頭能隨著爬升平順跟進。上下限則可確保飛船清晰可見。

此公式假設賽道的高度與位置如目前設定。如果你將賽道下移至接近或低於 Y −2 的位置,請調整偏移量,並防止除以零。

18. 隨著遊戲進行加快節奏

依照第 1 部分介紹的 Object Attributes 工作流程,新增 cruiseSpeed。使用 Get Attribute 讀取它。

以經過時間為基礎調整節奏。第 6 部分會新增能延長飛行時間的電池。它們應該讓玩家有更多時間應付目前的難度。

  1. 在 Skimmer 上新增物件屬性 cruiseSpeed,初始值為 18。
  2. 建立下方顯示的兩個群組:先計算速度,再將速度套用至速度檢查。
  • **Pace Progress (Multiply Values):**A = Seconds 的結果;B = 0.12
  • **Pace Base (Add Values):**A = Pace Progress 的結果;B = 18
  • **Pace Clamp (If):**Pace Base 的結果 > 36
  • **Pace Max (Set Attribute):**Skimmer,cruiseSpeed = 36
  • **Pace Current (Set Attribute):**Skimmer,cruiseSpeed = Pace Base 的結果
  • **Pace Read (Get Attribute):**讀取 Skimmer 的 cruiseSpeed
  • **Pace Cap (Add Values):**A = Pace Read 的 Attribute Value;B = 40
  1. 第一個指南讓 Pace Progress 有兩個觸發來源:Seconds 會在遊戲進行時更新它;Generate 會在啟動時初始化它。
  2. 移除 Velocity 直接連到 Slow Check 和 Fast Check 的執行連線。第二個指南會讓兩個檢查都經過 Pace Read。保留既有的旋轉與回饋連線。
  3. 將 Slow Check 的第二個數值以及 Assist 的 X 速度設為 Pace Read 的 Attribute Value 輸出。
  4. 將 Fast Check 的第二個數值以及 Speed Limit 的 X 速度設為 Pace Cap 的結果輸出。兩個 Set Velocity 行為都保留 Maintain Y On。

在啟動時,以及之後每經過一秒,計算一次最低速度。

動畫連接指南:提高巡航速度

  1. 重複使用 Seconds。
  2. 重複使用 Generate。
  3. 新增名為 Pace Progress 的 Multiply Values。將 Seconds 上空白的底部白色圓圈連到 Pace Progress。再將 Generate 上空白的底部白色圓圈連到 Pace Progress。
  4. 新增名為 Pace Base 的 Add Values。將 Pace Progress 上空白的底部白色圓圈連到 Pace Base。
  5. 新增名為 Pace Clamp 的 If。將 Pace Base 上空白的底部白色圓圈連到 Pace Clamp。
  6. 新增名為 Pace Max 的 Set Attribute。將 Pace Clamp 底部(true)圓圈連到 Pace Max。
  7. 新增名為 Pace Current 的 Set Attribute。將 Pace Clamp 右側(false)圓圈連到 Pace Current。

在檢查飛船速度之前,先讀取新的最低速度。

動畫連接指南:套用變動中的節奏

  1. 重複使用 Velocity。
  2. 新增名為 Pace Read 的 Get Attribute。將 Velocity 上空白的底部白色圓圈連到 Pace Read。
  3. 重複使用 Slow Check。將 Pace Read 上空白的底部白色圓圈連到 Slow Check。
  4. 新增名為 Pace Cap 的 Add Values。將 Pace Read 上空白的底部白色圓圈連到 Pace Cap。
  5. 重複使用 Assist。保留從 Slow Check 到 Assist 既有的 true/底部連線。
  6. 重複使用 Fast Check。將 Pace Cap 上空白的底部白色圓圈連到 Fast Check。
  7. 重複使用 Speed Limit。保留從 Fast Check 到 Speed Limit 既有的 true/底部連線。

將新節奏值傳入輔助

選取接收行為,將來源輸出拖到 X velocity,選取 attributeValue,並確認產生的參照

放開後,X velocity 會包含 Pace Read · attributeValue。保持 Maintain X 關閉,並啟用 Maintain Y。

最低速度在啟動時為 18 m/s,30 秒後為 21.6、60 秒後為 25.2,以及90 秒後為 28.8。速度會在 36 m/s 停止提升。水平速度上限會維持在最低速度之上 40 m/s,因此最高可達 76 m/s。順利的下坡能讓飛船超過最低速度。

玩一段時間,感受節奏變化。後面的山丘會讓你有更少時間反應,但良好的著陸仍可讓速度高於最低值。

最低速度有助於飛船從不理想的著陸中恢復。如果遊戲太快變得困難,請降低速度增長率。保留速度上限,讓長時間遊玩時的節奏仍有明確範圍可供測試與調整。

下一篇:第 6 部分:電池道具。檢查點 18-rising-pace 包含本篇的所有內容。