Unity C# | CharacterController 概述

閱讀時間約 4 分鐘

一、前言

  這篇文章將會講述角色控制器(CharacterController )的基本概述,並且分析其中可能的應用方式,最後簡單講述它的使用方式心得。

二、角色控制器(CharacterController)

  角色控制器是一個很常聽到的名詞,有許多人會好奇既然已經有物理系統與剛體組件,那為什麼要使用角色控制器。在這一次的專題製作中,我們使用的第三人稱控制包,它就是使用角色控制器。

1. 無剛體(Rigidbody)

  它最主要的特色就是為了不使用  Rigidbody 也可以控制玩家的移動,它在使用方式上很貼近初學者直接在每一個影格控制物件座標,不過直接控制座標會有不同程式腳本彼此衝突的問題。

  不使用剛體系統有好處也有壞處,其中之一就是不能使用剛體系統常見的給予推力或調整速度這種容易理解的作法,但也因此不會模擬物理,在移動的過程中一定都是自己程式碼撰寫的內容。

2. 自帶地面判斷與膠囊碰撞體

  它跟物理系統比較不一樣的地方在於,它自己就攜帶了地面判斷,因為本質上來說它就是為了角色控制而產生的機制,而物理系統則不一定。

  它自己攜帶了膠囊碰撞體,角色控制器有不少參數就是在設定這個膠囊碰撞體,包含中心、高度、半徑等內容都是在控制它。

3. 只有唯一移動控制

  因為角色控制器的誕生標榜著容易控制與使用的角色控制方式,因此它全身上下只有一個控制移動的方式。前面有談到它的移動方式近似於初學者隨著影格控制座標的方式,而這就是它的移動方式。

  我在使用的時候有感受到,使用角色控制器應該不會出現程式腳本彼此互相衝突的問題,因為都是使用角色控制器進行移動,因此它應該可以讓每一個移動參數合在一起運作,避免衝突。

三、應用方向

  角色控制器有很明確的新手導向與應用方向,這邊簡單介紹我自己分析的幾項角色控制器的應用方向。

1. 不用複雜物理系統的遊戲

  首先最基本的結論,就是如果遊戲不使用物理系統,那就很適合使用角色控制器來運行。如果不希望角色在移動的過程中,遇到超乎想像的衝擊或奇怪的移動力道,那就使用角色控制器吧!

2. 需要自訂很多奇幻移動的遊戲

  在大多數的奇幻遊戲中,角色通常會使用很多匪夷所思的移動,例如超級無敵長的跳躍時間、滯留在空中、穿梭在敵人之間等,那角色控制器很適合這種遊戲的製作,因為這些控制非常不物理。

  除了避免在連招的過程中遇到奇特的外力,把所有的玩家控制都掌握在可操控的範圍內,角色控制器可以保證自己寫的都是沒問題的項目。

3. 非現實的遊戲

  因為遊戲沒有任何物理系統,自然而然就沒有重力系統,所有非現實的遊戲都有一個很重要的共通點,它們的重力通常變來變去的,無論是遊戲世界在不同維度改變、空間、時間,重力改變都是在實作上的重要手段。

  在非現實的遊戲裡面,這種控制最好玩全交給程式員掌控,而不能使用任何內建的系統,因此角色控制是最適合的工具,否則玩家可能會突然看到自己明明已經在太空了,卻在某一刻被重力影響。

四、使用方式

  非常簡單的使用方式。

1. 移動

CharacterController.Move

public CollisionFlags Move(Vector3 motion);

  它的移動方式非常簡單,就是一個三維座標,有趣的事情在於移動的距離好像是一個小數就能移動很多,我有在網路上找到教學,似乎直接把玩家輸入綁進去角色控制器就能模擬移動了,非常方便。

2. 簡易移動

CharacterController.SimpleMove

public bool SimpleMove(Vector3 speed);

  它的移動方式還包含了重力,並且不用特別撰寫 Time.deltatime,直接寫上想要的速度就可以了,官方在文檔中有寫每一幀只有簡單移動或移動就可以了。 

五、後記

  這篇文章就分享到這邊,角色控制器是真的簡單很多,但是我還是比較喜歡剛體的運動,如果未來我把數學運算與旋轉方向使用精熟了,可能我也會喜歡上角色控制器吧。

avatar-img
106會員
247內容數
對設計師如何成長為設計師好奇嗎? 2020年九月,我進入大學學習當一位設計師,從開始到沉寂,再到重燃熱忱,我將在方格子紀錄我的成長歷程、理念、心情,分享我在這段旅程中所經歷的故事。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
瓶裝雪的沙龍 的其他內容
這篇文章將會講述物件池的基本概述,並介紹應用方向。
這篇文章將會從基本概述到射線偵測應用的詳細步驟,講述運用射線改變特定圖層中,射線命中的物件顏色。
這篇文章將會講述平滑的旋轉與單次旋轉的差異,並介紹旋轉的兩種體系與其使用效果,並提供參考的示範影片。
這篇文章將會講述常見的座標(Transform)旋轉方式,適合初學者到進階程式員複習。
這篇文章將會講述設計模式中的狀態模式,其資料源自於書籍、網路、個人理解,從簡介→架構→撰寫→測試的整個流程進行介紹與分享。
這篇文章將會介紹建構式(Constructor),這是一個隱藏在程式腳本中的重要知識,我們極常使用建構式,但新手程式員幾乎不會知道它。
這篇文章將會講述物件池的基本概述,並介紹應用方向。
這篇文章將會從基本概述到射線偵測應用的詳細步驟,講述運用射線改變特定圖層中,射線命中的物件顏色。
這篇文章將會講述平滑的旋轉與單次旋轉的差異,並介紹旋轉的兩種體系與其使用效果,並提供參考的示範影片。
這篇文章將會講述常見的座標(Transform)旋轉方式,適合初學者到進階程式員複習。
這篇文章將會講述設計模式中的狀態模式,其資料源自於書籍、網路、個人理解,從簡介→架構→撰寫→測試的整個流程進行介紹與分享。
這篇文章將會介紹建構式(Constructor),這是一個隱藏在程式腳本中的重要知識,我們極常使用建構式,但新手程式員幾乎不會知道它。
你可能也想看
Google News 追蹤
Thumbnail
模擬世界是我們寫程式造出來的,我們就是模擬世界的主宰,所以各種作用力要長什麼樣子、要怎麼個作用法,都由我們決定。不過,如果希望這些作用力看起來像真實世界的作用力一樣,那在寫程式的時候,套用這些作用力在真實世界中的物理公式,會是比較省時省力的做法。
Thumbnail
這篇內容,將會講解什麼是腳本函式,以及與腳本函式相關的知識。包括腳本的簡介、使用函式(或全域變數)的注意事項、定義全域變數、定義函式、什麼是宣告、局部變數的應用。
在真實世界中有各式各樣的作用力影響著我們,那在模擬世界中呢?要怎麼在本來無一物的模擬世界中,製造出作用力呢?
Thumbnail
這篇內容,將會講解什麼是變數範圍,以及與變數範圍相關的知識。包括變數範圍的簡介、實體變數、全域變數、局部變數、常數。
  這次要介紹的是「角色互動」的部分,互動方式有千百種,沒有一個標準,每段情節適合的方式與程度也不一樣,這部分只能依照各位偉大寫手的經驗和喜好了!   ※申明:示範的三種方式皆屬「同一個重要的劇情」,因此會寫得比較複雜。且三種方式僅供參考,並非只有此三種,亦須視個別情況做調整。 以上!   
Thumbnail
剩下兩週上課囉,大家加油!! 在一開始我們在課程完成了椅子(角色的移動嘛),但遠遠的看著他移動好像缺少了一些遊戲體驗 嗎?>< 這週我們就來改變遊戲的視角吧~~ 來看一下兩個版本的比較~~ 原本WASD AD控制Y軸旋轉(轉頭),後來改成WASD控制平移座標,把旋轉特別移出來到滑鼠上,
Thumbnail
上次我們完成用Unity 建完一張椅子,還有學習基本變數的應用,那我們就繼續寫更多的腳本來讓物體有更多的ㄅㄧㄢ #一般不會用Unity來建模啦,主要還是要靠其他3D軟體導入 ●Gravity Scale 重力預設為1,是造成物體下墜的主因,可以先調到0。 (Unity有支援負
Thumbnail
這篇分享了作者玩《Control》的遊戲實況,遊戲以女主角和超能力戰鬥為主題。作者喜歡超能力設計和超自然題材。對劇情的理解初期有些困難,但作者打算通過劇情解析更深入了解。文章提到將分成四個PART的直播影片。
Thumbnail
人類其實就是披著肉身的機器人 想像有一個機器人,它所做的任何一舉一動,全部都是由儲存在它晶片裡的電腦程式所控制的,比如說..走路時,遇到前方有障礙物,那麼它就會懂得要閃避,但是要弄明白的一件事情是,這個機器人懂得去閃避障礙物,並不是因為這是機器人知道若是看到前方有障礙物就
Thumbnail
模擬世界是我們寫程式造出來的,我們就是模擬世界的主宰,所以各種作用力要長什麼樣子、要怎麼個作用法,都由我們決定。不過,如果希望這些作用力看起來像真實世界的作用力一樣,那在寫程式的時候,套用這些作用力在真實世界中的物理公式,會是比較省時省力的做法。
Thumbnail
這篇內容,將會講解什麼是腳本函式,以及與腳本函式相關的知識。包括腳本的簡介、使用函式(或全域變數)的注意事項、定義全域變數、定義函式、什麼是宣告、局部變數的應用。
在真實世界中有各式各樣的作用力影響著我們,那在模擬世界中呢?要怎麼在本來無一物的模擬世界中,製造出作用力呢?
Thumbnail
這篇內容,將會講解什麼是變數範圍,以及與變數範圍相關的知識。包括變數範圍的簡介、實體變數、全域變數、局部變數、常數。
  這次要介紹的是「角色互動」的部分,互動方式有千百種,沒有一個標準,每段情節適合的方式與程度也不一樣,這部分只能依照各位偉大寫手的經驗和喜好了!   ※申明:示範的三種方式皆屬「同一個重要的劇情」,因此會寫得比較複雜。且三種方式僅供參考,並非只有此三種,亦須視個別情況做調整。 以上!   
Thumbnail
剩下兩週上課囉,大家加油!! 在一開始我們在課程完成了椅子(角色的移動嘛),但遠遠的看著他移動好像缺少了一些遊戲體驗 嗎?>< 這週我們就來改變遊戲的視角吧~~ 來看一下兩個版本的比較~~ 原本WASD AD控制Y軸旋轉(轉頭),後來改成WASD控制平移座標,把旋轉特別移出來到滑鼠上,
Thumbnail
上次我們完成用Unity 建完一張椅子,還有學習基本變數的應用,那我們就繼續寫更多的腳本來讓物體有更多的ㄅㄧㄢ #一般不會用Unity來建模啦,主要還是要靠其他3D軟體導入 ●Gravity Scale 重力預設為1,是造成物體下墜的主因,可以先調到0。 (Unity有支援負
Thumbnail
這篇分享了作者玩《Control》的遊戲實況,遊戲以女主角和超能力戰鬥為主題。作者喜歡超能力設計和超自然題材。對劇情的理解初期有些困難,但作者打算通過劇情解析更深入了解。文章提到將分成四個PART的直播影片。
Thumbnail
人類其實就是披著肉身的機器人 想像有一個機器人,它所做的任何一舉一動,全部都是由儲存在它晶片裡的電腦程式所控制的,比如說..走路時,遇到前方有障礙物,那麼它就會懂得要閃避,但是要弄明白的一件事情是,這個機器人懂得去閃避障礙物,並不是因為這是機器人知道若是看到前方有障礙物就