Learning C# by Developing Games with Unity第七章筆記整理

更新於 發佈於 閱讀時間約 5 分鐘

筆記:角色移動、相機控制與碰撞

1. 角色移動的基礎

  • 移動方式選擇
    1. Transform 組件:簡單易用,直接改變物件的位置與旋轉。
    2. Rigidbody 物理效果:通過施加力實現真實移動,但需配置物理屬性。
    3. 現成組件或 Prefab:如 Unity 的 Character Controller,快速實現移動控制。
  • 基本設置
    1. 在場景中創建一個膠囊物件作為玩家角色。
    2. 為膠囊添加 Rigidbody 組件並設置其約束(限制旋轉)。
    3. 使用 Material 為角色設置顏色。

2. 使用 Transform 控制角色移動

  • 向量基礎
    • Unity 使用 Vector3 表示 3D 空間中的位置和方向。
    • Vector3.forward 表示物件的正向方向。
  • 玩家輸入
    • 通過 Input.GetAxis("Horizontal") 和 Input.GetAxis("Vertical") 捕捉玩家輸入。
    • 水平軸 (A/D 或 ←/→) 控制旋轉,垂直軸 (W/S 或 ↑/↓) 控制前進和後退。
  • 程式碼實現
    public float MoveSpeed = 10f;
    public float RotateSpeed = 75f;

    void Update() {
    float vInput = Input.GetAxis("Vertical") * MoveSpeed;
    float hInput = Input.GetAxis("Horizontal") * RotateSpeed;

    transform.Translate(Vector3.forward * vInput * Time.deltaTime);
    transform.Rotate(Vector3.up * hInput * Time.deltaTime);
    }

3. 相機控制

  • 相機跟隨
    • 設置相機與玩家的相對位置(偏移)。
    • 使用 TransformPoint 方法動態更新相機位置。
  • 程式碼實現
    public Vector3 CamOffset = new Vector3(0f, 1.2f, -2.6f);
    private Transform _target;

    void Start() {
    _target = GameObject.Find("Player").transform;
    }

    void LateUpdate() {
    transform.position = _target.TransformPoint(CamOffset);
    transform.LookAt(_target);
    }

4. 使用 Rigidbody 改進移動

  • Rigidbody 動態物理運算
    • 避免直接修改 Transform,通過 MovePosition 和 MoveRotation 實現平滑移動和旋轉。
  • 程式碼更新
    private Rigidbody _rb;

    void Start() {
    _rb = GetComponent<Rigidbody>();
    }

    void FixedUpdate() {
    Vector3 rotation = Vector3.up * hInput;
    Quaternion angleRot = Quaternion.Euler(rotation * Time.fixedDeltaTime);
    _rb.MovePosition(transform.position + transform.forward * vInput * Time.fixedDeltaTime);
    _rb.MoveRotation(_rb.rotation * angleRot);
    }

5. 碰撞與觸發器

  • 碰撞
    • Collider 組件允許物件檢測相互碰撞。
    • 事件處理: OnCollisionEnter:檢測物件碰撞。 OnTriggerEnter:檢測物件進入觸發區域。
  • 觸發器
    • 啟用 isTrigger,物件可以穿過 Collider,觸發相關事件。
    • 應用於敵人偵測玩家範圍。

6. 練習與總結

  • 實作練習
    1. 創建健康補給物件,實現玩家碰撞後拾取的邏輯。
    2. 為敵人添加觸發區域,實現進入或離開觸發區時的日誌輸出。
  • 核心概念
    1. Rigidbody 添加真實物理效果。
    2. Collider 管理物件間的互動與觸發。
    3. Prefab 提高設計效率,支持多場景重用。


留言
avatar-img
留言分享你的想法!
avatar-img
uka的沙龍
0會員
6內容數
uka的沙龍的其他內容
2025/01/12
第五章 筆記:使用類別、結構和物件導向程式設計(OOP) 目標與重要性 類別與物件導向程式設計(OOP):學習創建自定義類別,了解變數、建構子、方法,以及類別與結構之間的差異。 OOP 原則: 封裝(Encapsulation):限制對物件變數和方法的訪問權限。 繼承(Inherita
2025/01/12
第五章 筆記:使用類別、結構和物件導向程式設計(OOP) 目標與重要性 類別與物件導向程式設計(OOP):學習創建自定義類別,了解變數、建構子、方法,以及類別與結構之間的差異。 OOP 原則: 封裝(Encapsulation):限制對物件變數和方法的訪問權限。 繼承(Inherita
2024/11/05
## 存取修飾詞詳解 在 C# 中有四種主要的存取修飾詞,但作為初學者,你最常用到的是以下兩種: 1. **Public**: 任何腳本都可以無限制地訪問 2. **Private**: 只能在它們被創建的類別(稱為包含類別)中訪問。任何沒有存取修飾詞的變數預設都是 Private
2024/11/05
## 存取修飾詞詳解 在 C# 中有四種主要的存取修飾詞,但作為初學者,你最常用到的是以下兩種: 1. **Public**: 任何腳本都可以無限制地訪問 2. **Private**: 只能在它們被創建的類別(稱為包含類別)中訪問。任何沒有存取修飾詞的變數預設都是 Private
2024/10/22
深入探討變數、型別和方法 正確撰寫 C# 程式碼 基本語法規則 程式碼行就像句子一樣,需要有某種分隔或結束字符。每一行 C# 程式碼(稱為陳述式)必須以分號結尾,以便程式碼編譯器處理。 例如,一個簡單的變數可以這樣寫: ```csharp public string FirstNam
2024/10/22
深入探討變數、型別和方法 正確撰寫 C# 程式碼 基本語法規則 程式碼行就像句子一樣,需要有某種分隔或結束字符。每一行 C# 程式碼(稱為陳述式)必須以分號結尾,以便程式碼編譯器處理。 例如,一個簡單的變數可以這樣寫: ```csharp public string FirstNam
看更多
你可能也想看
Thumbnail
孩子寫功課時瞇眼?小心近視!這款喜光全光譜TIONE⁺光健康智慧檯燈,獲眼科院長推薦,網路好評不斷!全光譜LED、180cm大照明範圍、5段亮度及色溫調整、350度萬向旋轉,讓孩子學習更舒適、保護眼睛!
Thumbnail
孩子寫功課時瞇眼?小心近視!這款喜光全光譜TIONE⁺光健康智慧檯燈,獲眼科院長推薦,網路好評不斷!全光譜LED、180cm大照明範圍、5段亮度及色溫調整、350度萬向旋轉,讓孩子學習更舒適、保護眼睛!
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
這篇文章將會講述角色控制器(CharacterController )的基本概述,並且分析其中可能的應用方式,最後簡單講述它的使用方式心得。
Thumbnail
這篇文章將會講述角色控制器(CharacterController )的基本概述,並且分析其中可能的應用方式,最後簡單講述它的使用方式心得。
Thumbnail
這篇文章將會介紹建構式(Constructor),這是一個隱藏在程式腳本中的重要知識,我們極常使用建構式,但新手程式員幾乎不會知道它。
Thumbnail
這篇文章將會介紹建構式(Constructor),這是一個隱藏在程式腳本中的重要知識,我們極常使用建構式,但新手程式員幾乎不會知道它。
Thumbnail
這篇文章將會介紹 Collider 並說明應用與控制方式。
Thumbnail
這篇文章將會介紹 Collider 並說明應用與控制方式。
Thumbnail
這篇文章將會介紹一個 Unity 3D 的人物角色和動畫的網站,以及安裝和放置遊戲中的簡易流程。
Thumbnail
這篇文章將會介紹一個 Unity 3D 的人物角色和動畫的網站,以及安裝和放置遊戲中的簡易流程。
Thumbnail
這篇文章將會講述 Animation 在設定後要如何使用程式觸發,並不介紹直接使用的 Animation,並簡易提到 Animator 的連結教學。
Thumbnail
這篇文章將會講述 Animation 在設定後要如何使用程式觸發,並不介紹直接使用的 Animation,並簡易提到 Animator 的連結教學。
Thumbnail
這篇文章將會介紹 Unity 怎麼處理動畫,從控制中心到每個獨立的動畫,都可以在這篇文章中找到,在這一周的時間內,我會從編輯器講述到實際應用。
Thumbnail
這篇文章將會介紹 Unity 怎麼處理動畫,從控制中心到每個獨立的動畫,都可以在這篇文章中找到,在這一周的時間內,我會從編輯器講述到實際應用。
Thumbnail
這篇文章將會講述讓角色或控制中心傳承到下一個場景的關鍵程式,可以讓物件再轉換場景時不會被摧毀。
Thumbnail
這篇文章將會講述讓角色或控制中心傳承到下一個場景的關鍵程式,可以讓物件再轉換場景時不會被摧毀。
Thumbnail
這篇文章將會講述場景 (Scene) 轉換的程式,將會介紹載入場景的兩種主要方法,並且詳細介紹同步載入的程式與範例。
Thumbnail
這篇文章將會講述場景 (Scene) 轉換的程式,將會介紹載入場景的兩種主要方法,並且詳細介紹同步載入的程式與範例。
Thumbnail
這篇文章將會講述各種關節的介紹,並且說明他們的使用效果和適用範圍。
Thumbnail
這篇文章將會講述各種關節的介紹,並且說明他們的使用效果和適用範圍。
Thumbnail
這篇文章將會介紹碰撞體,並且說明在不同情況下的使用情形。
Thumbnail
這篇文章將會介紹碰撞體,並且說明在不同情況下的使用情形。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News