我突然發現,學習好像比玩遊戲有趣一些。
至于我為什麼突然會有這樣的想法,請不要問我,去問一下競技類遊戲優秀的比對機制
好好想一想,我最近能從遊戲中得到的,隻有來自隊友的折磨和不斷幹癟下去的錢包。
而學習呢,我可以從中獲得知識,這些知識可以提升自己例如找到更好的工作賺更多的錢。又或者像我一樣學習遊戲開發方面的知識,自己開發一款像瓦洛蘭特一樣的遊戲。
然後把遊戲裡面的對手全部換成簡單人機。
當然我還是很喜歡遊戲的,不隻是單純喜歡玩,還有了解背後的故事等等。
優秀的故事劇情像巫師三、荒野大镖客2這類遊戲能帶給我的感動是我無法在其他地方感受到的。甚至是像UnderTale這樣畫風比較簡單的遊戲也能讓我沉浸許久。
話都說到這份上了,我多少得再打一把遊戲後回來學習。
回到正題
今天因為文章寫得比較早(主要是被遊戲趕回來了),是以要學習兩個部分,分别是遊戲中的視訊播放和如何讓unity中的角色動起來。
讓我們開始今天的折磨吧!
一、視訊播放(P36)
視訊播放和上一篇筆記中所提到的音頻播放在代碼中其實是差不多的,在這裡随意找一個MP4檔案進行示範。
将視訊放進unity的方法中很簡單,隻需要在右側項目視圖下方點選滑鼠右鍵→選擇在資料總管中顯示→将視訊檔案拖拽到Asset檔案夾中即可
1-1.在遊戲場景中播放
在項目視圖中滑鼠右鍵建立一個渲染器紋理,然後建立一個遊戲對象,例如想要在一個平面上播放。
建立平面後添加一個名為VideoPlayer的元件,這個元件很像之前提到的播放音頻的元件AudioSource。unity中播放音頻的片段被稱為AudioClip,而播放視訊的片段叫做VideoClip。
1-1.1 videoplayer元件設定
回到平面上的videoplayer元件中,隻需要将視訊檔案直接拖拽進視訊剪輯中就好。然後在下方的渲染模式中更改為渲染器紋理,把渲染器紋理拖拽到目标紋理。
1
在這一步之後,視訊中的所有内容都會顯示在渲染器紋理當中,隻需要将紋理拖拽到想要播放的對象上就行。
1-2. UI播放方式
當然還有其他的播放方式,建立UI:原始圖像→将渲染器紋理拖拽到RawImage的紋理中
1-3.腳本控制視訊播放
建立一個C#腳本名為VideoTest,将腳本挂載到有VideoPlayer的同一對象上。
因為腳本中是沒有Video,需要引用一個名稱空間:
using UnityEngine.Video;
然後在下方就可以聲明:
private VideoPlayer player;
接下來擷取元件播放器:
player = GetComponent<VideoPlayer>();
在擷取了元件之後就可以進行控制了:
if(Input.GetMouseButtonDown(0));
{
if(play.isPlaying){
play.Pause();}
}
其實原理和音頻播放的一樣,可以随意輸入暫停停止重頭播放等的指令。
階段代碼展示:
二、角色控制(P37)
終于!要開始學習角色的控制,在Unity中角色的控制也會有多種,一共有三種隻要選一種就行
- Unity資源商店購買,拿過來就能用
- Unity中有自帶的角色控制器可以使用
- 後續學會實體系統之後用實體系統來操作
像我這種又沒錢又還沒學到實體系統那一步的人來說,這會就老老實實用unity自帶的角色控制器進行操作。
2-1. 角色控制元件
建立一個平面将其放到世界坐标軸(0,0,0),保證其方向正确(紅色x軸是右邊,藍色z軸是前方)
再建立一個随意對象當作角色,放在平面上,然後搭載一個名為角色控制Character Controller的元件(保持預設設定)
2-2. 腳本中控制角色
建立一個名為PlayerControl的腳本,然後挂載在對象上。
第一步還是要在腳本中聲明,然後擷取這個元件:
Private CharacterController player;
接下來擷取元件(在start中):
player = GetComponent<CharacterController>();
擷取元件之後就可以進行移動代碼的編寫了(在Update中)
在編寫代碼之前要知道Unity中角色的移動一般根據兩個軸,一個是水準軸一個是垂直軸
2-2.1 水準軸
之前虛拟軸的時候提到過,左(-1)右(1)和不動(0)
float horizontal = Input.GetAxis("Horizontal");
2-2.2 垂直軸
float vertical = Input.GetAxis("Vertical");
2-2.3 建立為方向向量
在擷取了兩個軸向之後,就能知道按下了哪些按鍵(按下A就是向左走)
Vector3 dir = new Vector3 (horizontal,0,vertical);
Vector3中一般有3個向量,分别是X,Y,Z
這裡是想讓水準軸horizontal來影響X左右移動,讓垂直軸Vertical來影響Z軸的移動,至于Y軸上天入地的東西先不用管。
順便将向量都畫出來出來,位置的話用自身的位置。
Debug.DrawRay(transform.position,dir,Color.red)
然後回到Unity中運作,這裡要注意的是得點選下方的遊戲視圖視窗。
其實可以看到在按鍵盤上的WASD任意方向之後會有一條紅色的射線出來。
2-3. 朝向移動
在unity中有兩種方法:一種是move,move是不受重力的影響;另一種是SimpleMove,這個是受重力影響的。
player.SimpleMove(dir);
這裡的dir就是讓對象朝着方向移動就行,也就是當在鍵盤上按哪個鍵就朝哪個方向
可以看到在Unity運作中,随意按WASD會按照上下左右進行移動。
當然看着這個移動速度有點慢好像,這裡就可以添加個速度:
player.SimpleMove(dir*2);
讓其以兩倍的速度進行移動
當然還有上述所提到的重力:
今天的課程就到這裡結束了!
當然對我來說今晚還要準備開始寫第二個公衆号的内容,等我回頭再把另一個公衆号貼進來。另一個公衆号主要是講非軟體相關知識,例如我這幾天在研究的裝機電腦配件什麼的。
我要去吃心心念念的炒牛河了,大夥下篇筆記見,拜了個拜!
原課程連結:
https://www.bilibili.com/video/BV1gQ4y1e7SS/?spm_id_from=333.337.search-card.all.click
Unity VideoPlayer:
https://blog.csdn.net/weixin_43367805/article/details/93178830
Unity實體系統:
https://docs.unity3d.com/cn/2021.3/Manual/PhysicsSection.html
本期代碼彙總
video部分:
角色控制器部分:
我突然發現,學習好像比玩遊戲有趣一些。
至于我為什麼突然會有這樣的想法,請不要問我,去問一下競技類遊戲優秀的比對機制
好好想一想,我最近能從遊戲中得到的,隻有來自隊友的折磨和不斷幹癟下去的錢包。
而學習呢,我可以從中獲得知識,這些知識可以提升自己例如找到更好的工作賺更多的錢。又或者像我一樣學習遊戲開發方面的知識,自己開發一款像瓦洛蘭特一樣的遊戲。
然後把遊戲裡面的對手全部換成簡單人機。
當然我還是很喜歡遊戲的,不隻是單純喜歡玩,還有了解背後的故事等等。
優秀的故事劇情像巫師三、荒野大嫖客2這類遊戲能帶給我的感動是我無法在其他地方感受到的。甚至是像UnderTale這樣畫風比較簡單的遊戲也能讓我沉浸許久。
話都說到這份上了,我多少得再打一把遊戲後回來學習。
回到正題
今天因為文章寫得比較早(主要是被遊戲趕回來了),是以要學習兩個部分,分别是遊戲中的視訊播放和如何讓unity中的角色動起來。
讓我們開始今天的折磨吧!
一、視訊播放(P36)
視訊播放和上一篇筆記中所提到的音頻播放在代碼中其實是差不多的,在這裡随意找一個MP4檔案進行示範。
将視訊放進unity的方法中很簡單,隻需要在右側項目視圖下方點選滑鼠右鍵→選擇在資料總管中顯示→将視訊檔案拖拽到Asset檔案夾中即可
1-1.在遊戲場景中播放
在項目視圖中滑鼠右鍵建立一個渲染器紋理,然後建立一個遊戲對象,例如想要在一個平面上播放。
建立平面後添加一個名為VideoPlayer的元件,這個元件很像之前提到的播放音頻的元件AudioSource。unity中播放音頻的片段被稱為AudioClip,而播放視訊的片段叫做VideoClip。
1-1.1 videoplayer元件設定
回到平面上的videoplayer元件中,隻需要将視訊檔案直接拖拽近視訊剪輯中就好。然後在下方的渲染模式中更改為渲染器紋理,把渲染器紋理拖拽到目标紋理。
1
在這一步之後,視訊中的所有内容都會顯示在渲染器紋理當中,隻需要将紋理拖拽到想要播放的對象上就行。
1-2. UI播放方式
當然還有其他的播放方式,建立UI:原始圖像→将渲染器紋理拖拽到RawImage的紋理中
1-3.腳本控制視訊播放
建立一個C#腳本名為VideoTest,将腳本挂載到有VideoPlayer的同一對象上。
因為腳本中是沒有Video,需要引用一個名稱空間:
using UnityEngine.Video;
然後在下方就可以聲明:
private VideoPlayer player;
接下來擷取元件播放器:
player = GetComponent<VideoPlayer>();
在擷取了元件之後就可以進行控制了:
if(Input.GetMouseButtonDown(0));
{
if(play.isPlaying){
play.Pause();}
}
其實原理和音頻播放的一樣,可以随意輸入暫停停止重頭播放等的指令。
階段代碼展示:
二、角色控制(P37)
終于!要開始學習角色的控制,在Unity中角色的控制也會有多種,一共有三種隻要選一種就行
- Unity資源商店購買,拿過來就能用
- Unity中有自帶的角色控制器可以使用
- 後續學會實體系統之後用實體系統來操作
像我這種又沒錢又還沒學到實體系統那一步的人來說,這會就老老實實用unity自帶的角色控制器進行操作。
2-1. 角色控制元件
建立一個平面将其放到世界坐标軸(0,0,0),保證其方向正确(紅色x軸是右邊,藍色z軸是前方)
再建立一個随意對象當作角色,放在平面上,然後搭載一個名為角色控制Character Controller的元件(保持預設設定)
2-2. 腳本中控制角色
建立一個名為PlayerControl的腳本,然後挂載在對象上。
第一步還是要在腳本中聲明,然後擷取這個元件:
Private CharacterController player;
接下來擷取元件(在start中):
player = GetComponent<CharacterController>();
擷取元件之後就可以進行移動代碼的編寫了(在Update中)
在編寫代碼之前要知道Unity中角色的移動一般根據兩個軸,一個是水準軸一個是垂直軸
2-2.1 水準軸
之前虛拟軸的時候提到過,左(-1)右(1)和不動(0)
float horizontal = Input.GetAxis("Horizontal");
2-2.2 垂直軸
float vertical = Input.GetAxis("Vertical");
2-2.3 建立為方向向量
在擷取了兩個軸向之後,就能知道按下了哪些按鍵(按下A就是向左走)
Vector3 dir = new Vector3 (horizontal,0,vertical);
Vector3中一般有3個向量,分别是X,Y,Z
這裡是想讓水準軸horizontal來影響X左右移動,讓垂直軸Vertical來影響Z軸的移動,至于Y軸上天入地的東西先不用管。
順便将向量都畫出來出來,位置的話用自身的位置。
Debug.DrawRay(transform.position,dir,Color.red)
然後回到Unity中運作,這裡要注意的是得點選下方的遊戲視圖視窗。
其實可以看到在按鍵盤上的WASD任意方向之後會有一條紅色的射線出來。
2-3. 朝向移動
在unity中有兩種方法:一種是move,move是不受重力的影響;另一種是SimpleMove,這個是受重力影響的。
player.SimpleMove(dir);
這裡的dir就是讓對象朝着方向移動就行,也就是當在鍵盤上按哪個鍵就朝哪個方向
可以看到在Unity運作中,随意按WASD會按照上下左右進行移動。
當然看着這個移動速度有點慢好像,這裡就可以添加個速度:
player.SimpleMove(dir*2);
讓其以兩倍的速度進行移動
當然還有上述所提到的重力:
今天的課程就到這裡結束了!
當然對我來說今晚還要準備開始寫第二個公衆号的内容,等我回頭再把另一個公衆号貼進來。另一個公衆号主要是講非軟體相關知識,例如我這幾天在研究的裝機電腦配件什麼的。
我要去吃心心念念的炒牛河了,大夥下篇筆記見,拜了個拜!
原課程連結:
https://www.bilibili.com/video/BV1gQ4y1e7SS/?spm_id_from=333.337.search-card.all.click
Unity VideoPlayer:
https://blog.csdn.net/weixin_43367805/article/details/93178830
Unity實體系統:
https://docs.unity3d.com/cn/2021.3/Manual/PhysicsSection.html
本期代碼彙總
video部分:
角色控制器部分: