本系統模擬球在 3D 空間中的運動行為,包含移動、加速、碰撞反彈與難度提升機制。設計目標為:
- 穩定的運動控制
- 合理的速度成長曲線
- 精準碰撞偵測
- 符合直覺的物理反彈
球的最大速度會隨時間逐步增加,以控制遊戲難度。
| 時間(秒) | 最大速度 |
|---|---|
| 0 – 10 | 0.01 |
| 10 – 20 | 0.1 |
| 20 – 30 | 0.4 |
| 30 – 40 | 1 |
| 40 – 50 | 2 |
| 50+ | 5 |
球的移動方式為:
- 使用速度向量控制方向與速度
- 每幀移動距離 = 速度 × 時間間隔
此方式避免使用物理力造成的不穩定行為,使運動結果可預測。
系統使用 SphereCast(球體投射)進行預測碰撞:
- 可提前偵測碰撞
- 避免高速穿透物體
- 可計算實際碰撞距離
當球撞擊物體時,依照以下原則反彈:
- 反彈方向 = 入射方向的鏡射結果
- 速度大小維持不變
- 僅改變方向,不改變速度強度
假設:
- 入射速度: (2, -3, 0)
- 碰撞法線: (0, 1, 0)
則反彈後:
- 速度變為: (2, 3, 0)
👉 表示 Y 軸方向反轉,其餘分量保持不變。
當球碰撞特定物件時:
- 碰到「TopBoard」 → 玩家1 +1 分
- 碰到「DownBoard」 → 玩家2 +1 分
每一幀運作流程如下:
-
更新遊戲時間
-
計算當前最大速度(依時間變化)
-
球進行加速(受最大速度限制)
-
計算移動距離
-
使用 SphereCast 偵測碰撞
-
若碰撞:
- 修正位置
- 計算反彈方向
- 更新速度
- 觸發計分
-
若未碰撞:
- 正常移動