文章

創建一個簡單的2D角色移動

在Unity中創建一個簡單的2D角色移動系統是2D遊戲開發的基礎步驟。通過編寫C#腳本來控制角色的左右移動和跳躍,你可以實現一個基本的角色控制系統。以下是如何實現這個系統的詳細指南。

1. 設置2D場景和角色

步驟

  1. 創建2D場景
    • 打開Unity,創建一個新的2D場景,並確保攝影機的模式設置為 Orthographic
  2. 創建2D角色
    • Hierarchy 視圖中,右鍵選擇 2D Object > Sprite,創建一個新的 Sprite 作為角色。
    • Inspector 視圖中,給 Sprite Renderer 選擇一個精靈圖(例如一個方塊或自定義的角色圖片)。
  3. 添加Rigidbody 2D和Collider 2D
    • 選擇角色物體,在 Inspector 視圖中點擊 Add Component,添加 Rigidbody 2D
    • 再次點擊 Add Component,添加 Box Collider 2D 或其他適合的碰撞體,以便角色能與地面和其他物體發生碰撞。

2. 創建地面物體

步驟

  1. 創建地面
    • Hierarchy 視圖中,右鍵選擇 2D Object > Sprite,創建一個新的 Sprite 作為地面。
    • Inspector 視圖中,將 Sprite 的大小調整為適合地面寬度的尺寸,例如寬度較大、高度較小。
  2. 添加Collider 2D
    • 為地面物體添加 Box Collider 2D,這樣角色可以站在地面上。
  3. 調整地面位置
    • 將地面物體放置在場景的底部,確保角色在運行場景時能夠站在地面上。

3. 編寫角色移動腳本

現在,我們需要編寫C#腳本來控制角色的左右移動和跳躍。

步驟

  1. 創建角色控制腳本
    • Assets 資料夾中右鍵選擇 Create > C# Script,將腳本命名為 PlayerMovement
    • 打開 PlayerMovement 腳本,並編寫以下代碼:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    
    using UnityEngine;
    
    public class PlayerMovement : MonoBehaviour
    {
        public float moveSpeed = 5f;        // 角色移動速度
        public float jumpForce = 300f;      // 角色跳躍力
        private Rigidbody2D rb;
        private bool isGrounded = false;
    
        void Start()
        {
            rb = GetComponent<Rigidbody2D>(); // 獲取Rigidbody2D組件
        }
    
        void Update()
        {
            // 左右移動
            float move = Input.GetAxis("Horizontal");
            rb.velocity = new Vector2(move * moveSpeed, rb.velocity.y);
    
            // 跳躍
            if (Input.GetKeyDown(KeyCode.Space) && isGrounded)
            {
                rb.AddForce(new Vector2(0f, jumpForce));
                isGrounded = false;
            }
        }
    
        // 檢測角色是否著地
        void OnCollisionEnter2D(Collision2D collision)
        {
            if (collision.gameObject.CompareTag("Ground"))
            {
                isGrounded = true;
            }
        }
    }
    
  2. 解釋腳本
    • moveSpeed:控制角色的移動速度。
    • jumpForce:控制角色跳躍時的力。
    • rb:引用角色的 Rigidbody 2D 組件,用來控制物理行為。
    • isGrounded:檢測角色是否在地面上,防止在空中連續跳躍。
    • Update():在每一幀更新時檢測輸入,控制角色的左右移動和跳躍。
    • OnCollisionEnter2D():檢測角色是否與地面碰撞,以判斷角色是否著地。

4. 將腳本附加到角色並設置地面標籤

步驟

  1. 附加腳本
    • PlayerMovement 腳本拖到角色物體上,使其成為角色的組件。
  2. 設置地面標籤
    • 選擇地面物體,然後在 Inspector 視圖中將其標籤設置為 Ground,以便角色腳本能夠識別地面。

5. 測試角色移動

步驟

  1. 運行場景
    • 點擊 Play 按鈕運行場景。
    • 使用鍵盤的左右箭頭鍵或 AD 鍵來控制角色的左右移動,使用空格鍵來控制跳躍。
  2. 檢查移動和跳躍
    • 確保角色能夠順利地左右移動和跳躍。如果角色在空中無法跳躍或移動速度過快/過慢,可以回到腳本中調整 moveSpeedjumpForce 的值。

小結

通過以上步驟,你已經創建了一個簡單的2D角色移動系統,實現了角色的左右移動和跳躍。這是2D遊戲開發中的核心技術之一,掌握這些基礎概念將幫助你構建更複雜的角色控制系統,並進一步開發出完整的2D遊戲。

本文章以 CC BY 4.0 授權