一、Sprite 導入與設定問題
- Pixels Per Unit(PPU)不一致:請將所有 Sprite 的 PPU 統一設為 96,避免大小不一、導致畫面不協調。
- 濾鏡模式錯誤:像素風格圖像應將 Filter Mode 設定為「Point」或「No Filtering」,避免模糊失真。
- 地面平鋪錯誤:地面 Sprite 須將 Max Size 設為較大(如 4096),並將 Wrap Mode 設為 Repeat,才能無限平鋪。若為 Clamp,將無法達成滾動背景的效果。
二、角色與物理行為設定
- 碰撞器使用錯誤:
- 玩家建議使用
Character Controller 而非 Rigidbody,以利處理非真實物理並善用 isGrounded 屬性。
- 地面與障礙物應使用
Box Collider(3D 版本),否則無法與 Character Controller 正常互動。
- 地面碰撞器位置需調整:請手動調整地面 Collider 的 Y 軸位置(例如 -1.1),使角色正確站立。
- 渲染層級錯誤:將角色與障礙物的 Sprite Renderer 中的 Order in Layer 設為較高值(如 1),避免被地面遮蓋。
- 自訂重力設定:為避免角色跳躍感覺“漂浮”,可使用自訂重力值(如 9.81 * 2),而非 Unity 內建重力。
- 跳躍輸入設定:使用
Input.GetButton("Jump")(可長按)會讓跳躍手感更佳,相較於 GetButtonDown(需重複按下)。
- 重力值累積問題:角色在地面上時,重力應重置為固定值,避免重力疊加。
三、遊戲管理器與動畫控制
- 動畫與遊戲速度同步:地面滾動、角色跑步、障礙物移動都須根據
GameManager.instance.GameSpeed 一致變動,避免節奏不協調。
- 地面滾動方式:
- Sprite Renderer 無法修改紋理偏移,應改用
Mesh Filter(設為 Quad)與 Mesh Renderer。
- 使用
material.mainTextureOffset 調整紋理偏移以模擬滾動。
- 動畫初始化時機問題:
Animate() 不應在 Start 中立刻執行,因為 GameSpeed 尚未初始化(為 0)。建議改用 Invoke("Animate", 0f) 延後至下一幀執行。
- 動畫停止機制:在
OnDisable() 中記得呼叫 CancelInvoke(),避免動畫在遊戲結束後仍持續播放。