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
透過蝦皮分潤計畫,輕鬆賺取零用金!本文分享5-6月實測心得,包含數據流程、實際收入、平臺優點及注意事項,並推薦高分潤商品,教你如何運用空閒時間創造被動收入。
Thumbnail
透過蝦皮分潤計畫,輕鬆賺取零用金!本文分享5-6月實測心得,包含數據流程、實際收入、平臺優點及注意事項,並推薦高分潤商品,教你如何運用空閒時間創造被動收入。
Thumbnail
單身的人有些會養寵物,而我養植物。畢竟寵物離世會傷心,植物沒養好再接再厲就好了~(笑)
Thumbnail
單身的人有些會養寵物,而我養植物。畢竟寵物離世會傷心,植物沒養好再接再厲就好了~(笑)
Thumbnail
不知你有沒有過這種經驗?衛生紙只剩最後一包、洗衣精倒不出來,或電池突然沒電。這次一次補貨,從電池、衛生紙到洗衣精,還順便分享使用心得。更棒的是,搭配蝦皮分潤計畫,愛用品不僅自己用得安心,分享給朋友還能賺回饋。立即使用推薦碼 X5Q344E,輕鬆上手,隨時隨地賺取分潤!
Thumbnail
不知你有沒有過這種經驗?衛生紙只剩最後一包、洗衣精倒不出來,或電池突然沒電。這次一次補貨,從電池、衛生紙到洗衣精,還順便分享使用心得。更棒的是,搭配蝦皮分潤計畫,愛用品不僅自己用得安心,分享給朋友還能賺回饋。立即使用推薦碼 X5Q344E,輕鬆上手,隨時隨地賺取分潤!
Thumbnail
身為一個典型的社畜,上班時間被會議、進度、KPI 塞得滿滿,下班後只想要找一個能夠安靜喘口氣的小角落。對我來說,畫畫就是那個屬於自己的小樹洞。無論是胡亂塗鴉,還是慢慢描繪喜歡的插畫人物,那個專注在筆觸和色彩的過程,就像在幫心靈按摩一樣,讓緊繃的神經慢慢鬆開。
Thumbnail
身為一個典型的社畜,上班時間被會議、進度、KPI 塞得滿滿,下班後只想要找一個能夠安靜喘口氣的小角落。對我來說,畫畫就是那個屬於自己的小樹洞。無論是胡亂塗鴉,還是慢慢描繪喜歡的插畫人物,那個專注在筆觸和色彩的過程,就像在幫心靈按摩一樣,讓緊繃的神經慢慢鬆開。
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) 轉換的程式,將會介紹載入場景的兩種主要方法,並且詳細介紹同步載入的程式與範例。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News