关于Unity3D的初步学习研究周记
關(guān)于Unity3D的初步學(xué)習(xí)研究周記(1)
學(xué)習(xí)總結(jié):
本次學(xué)習(xí)Unity3D其實(shí)算是對基本的復(fù)習(xí),因?yàn)樵谝郧白约和孢^一段時間,我也有一點(diǎn)C#的基礎(chǔ),所以我是直接開始做的一些小測試,因?yàn)槭录?#xff0c;兩個星期只是做了兩個demo,一個就是間的跳躍(自動/點(diǎn)擊),另一個就是的游戲雛形,其中自己畫了個不怎么美觀的小鳥,也只是實(shí)現(xiàn)了最基本的幾個功能,算是對Unity3D的復(fù)習(xí)加學(xué)習(xí),忘的有點(diǎn)多。這兩個demo都是在網(wǎng)上找的資源看的教程,用的時間也比較短(畢竟代碼量比較少),但也是對整個Unity3D的運(yùn)行流程再加復(fù)習(xí)。此次報告我將自己在這兩次制作中的心得寫下來,以供以后復(fù)習(xí),或者有學(xué)習(xí)Unity3D的朋友指出我的不足。
學(xué)習(xí)日志:
2021.11.10
今日再一次安裝了熟悉的軟件Unity3D及Visual Studio,懷著沉重的心情打開了以前的demo,熟悉的圖形陌生的腳本使我不等不重新開始。我打算從基本的只是開始,我創(chuàng)建了一個工程及第一個Scenes(Unity3D中每一個場景算是一個Scenes),根據(jù)記憶創(chuàng)建了屬于我自己當(dāng)時學(xué)習(xí)的框架如圖1。因?yàn)閁nity創(chuàng)建腳本的時候是直接在Assets文件下創(chuàng)建的,我個人喜歡把其放在一起(創(chuàng)建script文件中);material是存放素材的地方,一般是存放已經(jīng)設(shè)置好的物體(在unity中如果你已經(jīng)創(chuàng)建好了素材并第一次拖進(jìn)文件時就會保留你現(xiàn)在所有的設(shè)置,在你下一次用的時候直接拖進(jìn)工程之中就可使用)Scenes是存放場景的文件;
圖1
在unity中其實(shí)可以創(chuàng)建一個空白體的但是我還是找了一個素材(一張同學(xué)的照片來滿足自己的惡趣味)來實(shí)現(xiàn)我今天要完成的跳躍動作。在工作區(qū)創(chuàng)建一個2Dsprite并且命名為renwu,拖進(jìn)素材。創(chuàng)建一個2Dsprite來當(dāng)作地面并將其顏色設(shè)置為綠色。
圖2
備注:圖2為工作區(qū)的素材區(qū),其中的Main Camera時unity創(chuàng)建的時候自帶的相機(jī)對象,并經(jīng)沒有相機(jī)就沒有顯示。
圖3
圖4
根據(jù)上面三張圖可以看到在設(shè)置的時候我在renwu素材中設(shè)置了Rigidbody2D腳本,該腳本時Unity自帶的物理腳本,有了該腳本物體就會像現(xiàn)實(shí)中的物體一樣擁有重力,慣性等屬性。還有就是dimian和renwu共同的腳本Box Collider2D,該腳本時給予物體一個方形碰撞體,讓他們能夠接受碰撞。做完這些可以做到如圖5
圖5
接下來就是編寫腳本代碼,只需要在renwu素材之中創(chuàng)建一個檢測碰撞的腳本,在renwu碰撞到dimian的時候給他一個向上的力。具體代碼如圖6。效果圖7。
圖6
圖7
其中OnCollisionEnter2D方法時unity自帶的檢測碰撞的方法。
圖8
點(diǎn)擊跳躍的方法跟自動跳躍其實(shí)是一樣的,只是換了方法,OnMouseDown方法是檢測到鼠標(biāo)點(diǎn)擊運(yùn)行的方法。效果如圖8。
圖9
2021.11.14
因?yàn)樯洗螐?fù)習(xí)了跳躍我就在像有沒有關(guān)于跳躍的2d游戲,正好Flappy Bird就是一個只要跳的小游戲,整體流程也不算大,想發(fā)合理開始工作。
首先我確定是要有素材(其實(shí)也可以用自帶的白板先用著),所以我就畫了張鳥圖,并在unity中創(chuàng)建了場景及鳥(也就是Player)并設(shè)置了物理相關(guān)的物理屬性,
因?yàn)轼B是要實(shí)現(xiàn)跳躍功能和碰撞檢測功能的,故創(chuàng)建了Rigidbody的物理屬性和Collider的碰撞器,場景中應(yīng)該有障礙所以我是創(chuàng)建了障礙墻,
這次其實(shí)是有兩個想法的,因?yàn)橛螒虮旧硎且\(yùn)動的,但是如果是搭建一個完整的場景的話,整個游戲的障礙就沒有隨機(jī)感,
第二種就是創(chuàng)建一個標(biāo)記為讓它隨機(jī)產(chǎn)生墻體,并且讓墻體向玩家的方向運(yùn)動,這樣就會有源源不斷的障礙物。
想法合理開始工作
首先是創(chuàng)建標(biāo)記位,創(chuàng)建一個空的物體放在相機(jī)外面不讓相機(jī)獲取創(chuàng)建過程,并編寫借一個隨機(jī)生成的腳本。
注釋:在Unity中有最基本的兩個方法,Start和Update。顧名思義一個是在開始的時候運(yùn)行的(只一次),update是每一分秒都進(jìn)行。這些方法都是Unity自帶的方法。
創(chuàng)建了障礙之后,我就要考慮碰撞后死亡的方式,首先我是創(chuàng)建了一個公開的類來放玩家的狀態(tài)和分?jǐn)?shù)的獲取。
在Unity之中只要創(chuàng)建公開的變量并放在操作區(qū)的物體中就可以調(diào)用。所以在設(shè)置后我就可以用isActive來儲存player的運(yùn)行狀態(tài),用score來存儲分?jǐn)?shù)。
然后在地面和障礙中設(shè)置腳本,當(dāng)碰撞者的標(biāo)簽為“Player”的時候,就讓狀態(tài)改變false。然后再在玩家操作的腳本中加上條件就能使玩家在碰撞到物體后停止并無法操作。
分?jǐn)?shù)添加的功能我是放在了障礙中間的地方,我給其加了一個碰撞體但是Is Trigger屬性為True(當(dāng)其屬性為True的時候只是檢測碰撞,不會碰撞反射)。
最后就是把分?jǐn)?shù)顯示出來,還有就是在游戲結(jié)束的時候顯示出GAMEGVER,這方面使用的使Unity中的UI類在工作區(qū)創(chuàng)建UItext他會自動創(chuàng)建UI其他的基本原件。
創(chuàng)建兩個文本文件并將其屬性設(shè)置好。如圖
后面的就比較簡單了,創(chuàng)建文字腳本,讓其接受分?jǐn)?shù)變量。值得一提的是GameOver文字的顯示。首先是把其顯示的文字隱藏,當(dāng)玩家的狀態(tài)為false的時候在顯示出來。
至此所有的功能都已經(jīng)完成了,已附送游戲文件。但是游戲本身還有很多問題,比如沒有開始,沒有結(jié)束重開,每一次打開的時候都是直接運(yùn)行,而且結(jié)束后只能關(guān)閉手動啟動。
本次的游戲參考bilibili up李三影 的視頻:視頻鏈接
工程會後續(xù)上傳
報告人姓名:夕草
時間:2021.11.15
總結(jié)
以上是生活随笔為你收集整理的关于Unity3D的初步学习研究周记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 变量不初始化_Java之哪些情
- 下一篇: pyplot显示和保存没有边框的图片