2024 虛擬實境 x 人因設計 06unity角色移動

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

上次我們完成用Unity 建完一張椅子,還有學習基本變數的應用,那我們就繼續寫更多的腳本,來讓物體有更多的變化~~~

#一般不會用Unity來建模(不會這麼傻啦),模型主要還是要靠其他3D軟體導入 :)

教大家怎麼讓椅子(物件)動起來囉~

raw-image

動次~棟次~動動起來~~


raw-image

準備好你的椅子(Chair)還有地板(Ground),我們開始


raw-image

新建一個腳本(C# Script),我們命名ChairMoveScript



raw-image

先新增一個條件式

if (Input.GetKey("w"))

{

this.gameObject.transform.Translate(new Vector3( 1, 0, 0));

}

先測試看看按下 "W" 鍵,是否可以前進

解釋一下這段話意思

// 如果玩家按下 "W" 鍵

// 系統自行尋找 "W" 按鍵

// 讓這個遊戲物體沿著世界坐標系中的 x 軸正方向移動1個單位距離

raw-image

如果我們把剩下的ASD的移動都把他補上

raw-image


#這時候,你會發現椅子速度比高鐵還快 :( 🏃🏃🏃🏃🏃

為啥會有這樣情形產生呢?

Ans: 很簡單,上禮拜有說到在Update方法,是每一幀都在判斷,所以一幀跑1個單位,1秒就跑60個單位,所以才會這麼快。

我們需要鎮定劑來緩解他飛快的速度

"Time.deltaTime"

在 Unity 中,Time.deltaTime 是一個非常重要的屬性,表示兩次幀之間的時間間隔。通常用於計算物體的移動、旋轉、縮放等變換時,以確保這些變換在不同的遊戲環境和不同的設備上都能保持一致的速度和流暢度。

Time.deltaTime 是以秒為單位,表示上一個畫面和當前畫面之間的時間間隔。使用它可以讓你的遊戲在不同的幀率(FPS,Frames Per Second)下都能保持相同的速度,避免遊戲在不同設備上運行時出現速度不一致的情況。

那我們就在new Vector3( 1* Time.deltaTime, 0, 0)).........用乘以*的方式加上去

raw-image


速度好像有點慢ㄋㄟ,宣告一個變數來控制速度好ㄌ


新增一個速度(Speed)變數,好讓我們之後可以調整

public float speed = 1.0f;

raw-image

然後再把速度乘進去new Vector3( 1 * Time.deltaTime * Speed , 0, 0))

應該就會好很多了~~

不過,我們人移動很少橫向的移動吧,除非你是螃蟹🦀🦀🦀

我們都是用頭/身體轉來換方向啦,所以我們transform.Translate 要更改一下組件​

改成transform.Rotate

raw-image

左右控制的 A & D Translate(座標) 改成 Rotate(旋轉)

有變合理了齁~~讚讚👍🏽👍🏽👍🏽👍🏽👍🏽


我們再給椅子一個跳躍往上的力量

if (Input.GetKey("space")) //系統自行尋找 空白鍵按鍵

{

this.gameObject.transform.Translate(new Vector3(0, 1 * Time.deltaTime * Speed, 0));

}

raw-image

測試看看,好像又怪怪的,沒關係我們來想辦法

再宣告一個變數,要使用這個特殊的變數獨有的性質,去做變化

private Rigidbody rb;

然後再void Start()打上

rb = GetComponent<Rigidbody>();

像這樣

raw-image


來解釋一下

private Rigidbody rb;

rb = GetComponent<Rigidbody>();

raw-image

private Rigidbody rb; 定義了一個私有(private)的 Rigidbody 變數,名稱為 rb。這個變數用於儲存從遊戲物件中獲取的 Rigidbody 組件。

rb = GetComponent<Rigidbody>();。從遊戲物件中獲取 Rigidbody 組件並將其賦值給 rb 變數。通常都在 Start 方法中執行這樣的操作,因為 Start 方法在遊戲物件被啟用時執行一次,可以確保遊戲物件已經初始化完成。

<>內都是裝特殊的變數類型,比如說

<Rigidbody>(模擬物體的物理行為,比如移動、碰撞等)

<Collider>(處理物體的碰撞和觸發事件)

<MeshRenderer>(控制物體的顯示和渲染)

<AudioSource>(播放音效)

上述程式碼(應該)只在 MonoBehaviour 的衍生類中使用,因為 GetComponent 方法是 Unity 引擎提供的 MonoBehaviour 方法之一,用於獲取遊戲物件上的組件。


我們得到了Rigidbody內的就可以用它的功能了

velocity// 改變物體的速度

AddForce// 應用向前的推力

angularVelocity // 改變物體的角速度

我們需要跳 AddForce

給一個瞬間的力量 ​

if (Input.GetKeyDown(KeyCode.Space))

{

rb.AddForce(new Vector2(0, 200));

}

raw-image

GetKey() V.S. GetKeyDown()

GetKey():當透過你所指定的按鍵被使用者按住時回傳true,是按住,就是長按的意識,例如你想控制角色在你按住方向鍵時移動,那麼就是用GetKey()。

GetKeyDown():當透過你所按下指定名稱的按鍵時的那一幀時回傳true,是那一幀,就一下的事情,不管你按多久,只是在你按下的那一瞬間。


最後我們把上述的東西,用一個自創方法把它包起來,整理起來比較好看一點,之後如果要打包出去,直接呼叫方法名就可以用了,

目前沒有要給其他人或外部使用,我們可以先用private限制他的權限,方法名稱我們先叫BaseMove吧....

BaseMove();................這邊是一個函式用來呼叫方法

private void BaseMove().............這邊寫方法的內容

{

}

raw-image

這樣就完成簡單的物體移動了!

🪑🪑🪑🪑🪑🪑🪑🪑🪑🪑🪑🪑🪑🪑🪑🪑🪑🪑

.

.

.

.

.

.

.

.

.

.

辛苦大家了,其實Unity早幫我們寫好簡單的移動了WASD


註解// /* */

大家可以先把前面的文字註解起來,之後回去可以跟朋友分享打得多辛苦 ><

複習一下註解,有兩種方式,對付一行的或對付一段的~~

對付一行:

// 15445 I'm Gavin.

對付一段:

/* 15445 I'm Gavin. 15445 I'm Gavin. 15445 I'm Gavin.

I'm a student now. I'm a student now. I'm a student now.

Happy every day */


raw-image

原本是還要宣告一個變數,然後再呼叫變數來使用

EX:

float verticalInput = Input.GetAxis("Vertical"); // 獲取垂直軸的輸入值

Vector3 moveDirection = new Vector3(0, 0, verticalInput); // 創建移動方向向量


不過Unity都幫你想好了,不用宣告可以直接使用。

this.gameObject.transform.Translate(Input.GetAxis("Vertical") * Speed * Time.deltaTime, 0, 0);

this.gameObject.transform.Rotate(0, Input.GetAxis("Horizontal") * 60 * Time.deltaTime, 0);

raw-image

這樣就完成更簡單的物體移動了!




avatar-img
4會員
20內容數
Gavin Hsieh ㄉ基地
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Gavin Hsieh ㄉ基地 的其他內容
完成了Debug.log()的測試,接著還是要跟各位簡單講一下C#的一些規則,之後看程式會(比較)看得懂。 又講到變數? 在Unity中,變數是重要的工具,用來儲存和管理資料。讓開發者能夠靈活調整遊戲的行為和性能,減少代碼的重複性,使得遊戲開發更加高效和簡潔。透過使用變數,開發者可以輕鬆修改資料
本章節要帶大家初探虛擬實境這個產業~~~ 伴隨著科技進步發展,VR 虛擬實境已逐漸擴大應用到許多產業之中,2021 年不能錯過的熱搜榜科技新詞「元宇宙」更是其混合使用的最強案例。然而, AR/VR 混合式的 MR 以及 XR 也趁勢崛起,大幅度的挑戰人們對於感官的互動體驗! 虛擬實境(Vir
完成了Debug.log()的測試,接著還是要跟各位簡單講一下C#的一些規則,之後看程式會(比較)看得懂。 又講到變數? 在Unity中,變數是重要的工具,用來儲存和管理資料。讓開發者能夠靈活調整遊戲的行為和性能,減少代碼的重複性,使得遊戲開發更加高效和簡潔。透過使用變數,開發者可以輕鬆修改資料
本章節要帶大家初探虛擬實境這個產業~~~ 伴隨著科技進步發展,VR 虛擬實境已逐漸擴大應用到許多產業之中,2021 年不能錯過的熱搜榜科技新詞「元宇宙」更是其混合使用的最強案例。然而, AR/VR 混合式的 MR 以及 XR 也趁勢崛起,大幅度的挑戰人們對於感官的互動體驗! 虛擬實境(Vir
你可能也想看
Google News 追蹤
Thumbnail
大家好,我是woody,是一名料理創作者,非常努力地在嘗試將複雜的料理簡單化,讓大家也可以體驗到料理的樂趣而我也非常享受料理的過程,今天想跟大家聊聊,除了料理本身,料理創作背後的成本。
Thumbnail
哈囉~很久沒跟各位自我介紹一下了~ 大家好~我是爺恩 我是一名圖文插畫家,有追蹤我一段時間的應該有發現爺恩這個品牌經營了好像.....快五年了(汗)時間過得真快!隨著時間過去,創作這件事好像變得更忙碌了,也很開心跟很多厲害的創作者以及廠商互相合作幫忙,還有最重要的是大家的支持與陪伴🥹。  
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
遊戲是元宇宙的重要組成部分和試驗場。 在我的構想中,元宇宙可以成為一種綜合應用介面,使人們能夠在三維的環境中,更有效率地完成任務。 想像我們去超市時,自然地掃視貨架找到所需產品。若同樣情形換到網路購物平台,一個貨架的商品可能要分散在多個分頁中。
Thumbnail
這篇內容,將會用一個簡單的範例,來解釋物件(Object)和實體(Instance)的差別。包括Instance的簡介、ID、物件改變會影響實體。
Thumbnail
這篇文章介紹了使用UE4製作遊戲的練習和免費資源,包括素材連結和對話系統外掛。同時也提到了Unreal遊戲引擎的每月限免素材和線上學習資源,以及Epic Game Store遊戲平臺的優惠和缺點。
Thumbnail
介紹Unreal Sequencer鏡頭工具,CG動畫的學習經驗,並提供相關教程,適合想學習Cinematic Designer的人。
Thumbnail
最近ChatGPT-4o的發布引起了我的注意,又在Youtube看上見有人教學如何用ChatGPT設計屬於自己的家教,被他的能力震撼到的我一頭熱就訂閱了plus版然後馬上設計了一個自己的家教。最一開始的時候我只有把它用來學習語言的輔助,但用著用著忽然想到:「如果我把它用來引導我學習我沒有學過的領域呢
Thumbnail
Ae 小技巧:製作3D 方塊 動態後記系列會記錄一些我在製作中的記錄,可能是分解動畫、小技巧、發想、腳本......等等。 每篇都是小短篇,就是補充用的小筆記,沒有前後順序,可跳著閱讀。
Thumbnail
透明立體方練習,使用AI向量繪圖軟體
Thumbnail
這是一個簡單的工作流,可以對輸入的圖片進行3D重建
Thumbnail
大家好,我是woody,是一名料理創作者,非常努力地在嘗試將複雜的料理簡單化,讓大家也可以體驗到料理的樂趣而我也非常享受料理的過程,今天想跟大家聊聊,除了料理本身,料理創作背後的成本。
Thumbnail
哈囉~很久沒跟各位自我介紹一下了~ 大家好~我是爺恩 我是一名圖文插畫家,有追蹤我一段時間的應該有發現爺恩這個品牌經營了好像.....快五年了(汗)時間過得真快!隨著時間過去,創作這件事好像變得更忙碌了,也很開心跟很多厲害的創作者以及廠商互相合作幫忙,還有最重要的是大家的支持與陪伴🥹。  
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
遊戲是元宇宙的重要組成部分和試驗場。 在我的構想中,元宇宙可以成為一種綜合應用介面,使人們能夠在三維的環境中,更有效率地完成任務。 想像我們去超市時,自然地掃視貨架找到所需產品。若同樣情形換到網路購物平台,一個貨架的商品可能要分散在多個分頁中。
Thumbnail
這篇內容,將會用一個簡單的範例,來解釋物件(Object)和實體(Instance)的差別。包括Instance的簡介、ID、物件改變會影響實體。
Thumbnail
這篇文章介紹了使用UE4製作遊戲的練習和免費資源,包括素材連結和對話系統外掛。同時也提到了Unreal遊戲引擎的每月限免素材和線上學習資源,以及Epic Game Store遊戲平臺的優惠和缺點。
Thumbnail
介紹Unreal Sequencer鏡頭工具,CG動畫的學習經驗,並提供相關教程,適合想學習Cinematic Designer的人。
Thumbnail
最近ChatGPT-4o的發布引起了我的注意,又在Youtube看上見有人教學如何用ChatGPT設計屬於自己的家教,被他的能力震撼到的我一頭熱就訂閱了plus版然後馬上設計了一個自己的家教。最一開始的時候我只有把它用來學習語言的輔助,但用著用著忽然想到:「如果我把它用來引導我學習我沒有學過的領域呢
Thumbnail
Ae 小技巧:製作3D 方塊 動態後記系列會記錄一些我在製作中的記錄,可能是分解動畫、小技巧、發想、腳本......等等。 每篇都是小短篇,就是補充用的小筆記,沒有前後順序,可跳著閱讀。
Thumbnail
透明立體方練習,使用AI向量繪圖軟體
Thumbnail
這是一個簡單的工作流,可以對輸入的圖片進行3D重建