Unity蛮牛教程噩梦射手----代码讲解(1)
?????? 很久沒(méi)有寫(xiě)博客了,因?yàn)樽罱_(kāi)始學(xué)習(xí)Unity。在蠻牛教育網(wǎng)上有一套講解Unity官方教程的視頻-------噩夢(mèng)射手游戲?qū)嵗?#xff0c;網(wǎng)站為http://www.unitytrain.cn/course/40,是Logic3d老師講解的。游戲本身并不是很復(fù)雜,跟著視頻來(lái)學(xué)習(xí)的話困難不打。然而作為程序員來(lái)學(xué)習(xí)這一套視頻,更加關(guān)注的是這個(gè)游戲的腳本部分。也看到有評(píng)論說(shuō)對(duì)代碼部分老師講解并不是很深入,所以我打算開(kāi)這樣一個(gè)新坑--------對(duì)該套視頻部分的腳本代碼進(jìn)行講解。好,那廢話不多說(shuō),我們進(jìn)入正題。
?
?????? 視頻第一課出現(xiàn)的是游戲主角Player的移動(dòng)腳本,我先上代碼
?
??????代碼開(kāi)頭定義的變量我們先跳開(kāi),來(lái)關(guān)注特殊的函數(shù)
? FixedUpdate()函數(shù)
?所以我們?cè)谶@個(gè)函數(shù)里面加入我們對(duì)鍵盤(pán)移動(dòng)輸入信號(hào)的響應(yīng)事件。??通過(guò)GetAxisRaw()來(lái)獲取到當(dāng)前用戶(hù)的輸入,在通過(guò)Move(),Turning(),Animating()函數(shù)來(lái)逐個(gè)改變Player的位置Position,旋轉(zhuǎn),動(dòng)畫(huà)狀態(tài)Animation。我們來(lái)一一解釋。
?
Move()函數(shù):
直接使用Vector3 movement來(lái)記錄當(dāng)前的水平垂直方向的位移值,乘上速度和單位時(shí)間,最后賦予Player新的Position實(shí)現(xiàn)位置移動(dòng)。這段代碼不難理解。
注意:這里使用剛體RigidBody來(lái)實(shí)現(xiàn)位置的轉(zhuǎn)變。直接使用transfrom.position也是可以的。
?
Turning()函數(shù):
這里涉及到通過(guò)光線投影來(lái)記錄當(dāng)前鼠標(biāo)方向,來(lái)實(shí)現(xiàn)player視角的旋轉(zhuǎn)的方法。
首先是
?我們將使用它來(lái)記錄我們鼠標(biāo)和Floor的碰撞,來(lái)獲取我們需要的視角,實(shí)現(xiàn)旋轉(zhuǎn)。這里我們需要使用到point屬性。我們下面會(huì)講到。
?
其次
這是光線投影碰撞的核心函數(shù)。四個(gè)參數(shù)中,后兩個(gè)我們?cè)谶@個(gè)腳本的開(kāi)頭定義一個(gè)定義好了。包括射線長(zhǎng)度我們定位100,還有碰撞的層蒙版設(shè)為Floor。而前兩個(gè)參數(shù)則是我們射線的起點(diǎn)和方向。該函數(shù)返回值為true則光線投影反生了碰撞,反之沒(méi)有。
如果有碰撞發(fā)生,我們需要計(jì)算出新的旋轉(zhuǎn)方向,并且使用這個(gè)方向來(lái)實(shí)現(xiàn)player視角的變化。這里使用Quaternion四元數(shù)來(lái)實(shí)現(xiàn)旋轉(zhuǎn)。
?
最后Animating()函數(shù)
我們檢測(cè)當(dāng)前的水平,垂直速度是否為0,否則就是移動(dòng),我們就把角色的狀態(tài)機(jī)的參數(shù)進(jìn)行改變,實(shí)現(xiàn)動(dòng)畫(huà)效果。
?
?
------player的運(yùn)動(dòng)腳本基本就這些內(nèi)容了,其他的在蠻牛的課程中也有講解。如果你是直接看這篇博客可能不知所云,請(qǐng)見(jiàn)諒。
總結(jié)
以上是生活随笔為你收集整理的Unity蛮牛教程噩梦射手----代码讲解(1)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 学会拐弯,才是人生大智慧(深度好文)
- 下一篇: 程序员最常见的谎话,太准了