最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

一個(gè)人做游戲(一)——打氣球手游

2018-01-22 12:31 作者:楓2  | 我要投稿

UP之前教程發(fā)現(xiàn)坑開的大了點(diǎn),以及對各位幫助也不是太大,所以《從零開始做游戲》這個(gè)系列暫停停更,以及UP重新開個(gè)坑。

本次新專題叫一個(gè)人做游戲,UP準(zhǔn)備繼這個(gè)專題做個(gè)很小的游戲,也就是一個(gè)人絕對可以完成的(至少UP一個(gè)人肯定可以完成)。

在這里會(huì)涉及到游戲的策劃、程序、美術(shù)、音樂所有方面的講解,當(dāng)然UP策劃出生,所以這里講策劃的地方肯定是最多的,想學(xué)游戲制作的小伙伴不要錯(cuò)過。

這個(gè)游戲開發(fā)成本很低,目前已經(jīng)寫好了想法框架,但是UP不會(huì)一次性把想法都放給大家看,在整個(gè)設(shè)計(jì)中,你會(huì)清楚一款游戲的需求是怎么增加起來的。


策劃篇

這款游戲的規(guī)則非常簡單,就是屏幕中會(huì)隨機(jī)飛出氣球,然后你只用一戳就爆炸了。

如果氣球飛出屏幕就游戲結(jié)束,計(jì)算得分。

就是這么簡單,開干。

美術(shù)篇

首先我們來畫個(gè)大概游戲的界面,為了成本更低,我們使用540*960的分辨率來作游戲畫面。

UP用PS+鋼筆工具簡單的繪制了游戲的界面,因?yàn)閁P是個(gè)美術(shù)廢,所以在設(shè)計(jì)的時(shí)候盡量希望以最簡單的方式來設(shè)計(jì)畫面。

然后就去搜索扁平風(fēng)格背景圖,然后找到了類似作文本的圖片,于是UP覺得,這種感覺好像還不錯(cuò),適合我這種美術(shù)廢,于是便這樣簡簡單單的繪制好了。

在繪制素材的時(shí)候可以去參考別人的設(shè)計(jì),比如真實(shí)的氣球,或者氣球的UI圖標(biāo)等,然后模仿別人的樣子自己畫一個(gè),因?yàn)檫@些素材都長的差不多,不會(huì)非常的存在版權(quán)問題,所以一般來說模仿一下沒有問題。


感謝這幾年扁平風(fēng)能被人接受,不然UP都不知道怎么畫出圖

雖然不是很好看,或許字體全部都搞成手繪風(fēng)還會(huì)更舒服一些,不過這個(gè)問題今后再思考吧。

那么接下來UP準(zhǔn)備打開程序,并切圖了。

程序篇

我們首先準(zhǔn)備項(xiàng)目,依然是U3D,依然是2D項(xiàng)目,UP建議沒有一個(gè)多人團(tuán)隊(duì)最好不要玩3D游戲,否則工作量再翻倍。


接下來我們做的是切圖,將之前的圖每一部分都導(dǎo)出PNG,導(dǎo)出辦法很簡單,把所有圖層都關(guān)掉,然后選擇一個(gè)圖層,剪切透明區(qū)域,存儲(chǔ)為PNG格式,如果這個(gè)都不會(huì),請先去找找Photoshop基礎(chǔ)教程。


最后圖片全部切好后是這樣的:


這就是所有的素材了

然后我們開始干程序的事,程序的事情挺多的,首先第一步是讓氣球飛起來。

這里不再過多的描述UNITY的基礎(chǔ)操作了,因?yàn)閁P曾經(jīng)有很詳細(xì)的講解過項(xiàng)目是如何安排在文件夾中的以及UNITY創(chuàng)建項(xiàng)目是怎么操作的,如果想知道,可以看看下面這個(gè)文章。

首先UP要教大家一個(gè)非常重要的腳本:

transform.Translate  //平移

不過如果要寫個(gè)往上飛的氣球,應(yīng)該這樣寫:

transform.Translate(Vector3.up* Time.deltaTime);

Vector3.forward的意思就是往上,Time.deltaTime又是什么意思呢。

Time.deltaTime簡單的解釋就是無論你設(shè)備配置有多高,都強(qiáng)行按照固定的速度上升,如果不加這一段,很可能你的電腦配置高移動(dòng)速度就會(huì)更快,你的電腦配置卡移動(dòng)速度就會(huì)更慢。

或許初學(xué)者還是沒有明白,沒關(guān)系,你記住上面那個(gè)語句就可以了,了解復(fù)制粘貼可以實(shí)現(xiàn)向上的功能就好。

題外話:U3D官網(wǎng)有每一個(gè)腳本的說明,但是卻只有英文版,不過國內(nèi)有人漢化了,詳見www.ceeger.com/Script/

我們創(chuàng)建了個(gè)叫做ballFly的腳本,然后在里面粘貼了這段代碼

我們把代碼拖入氣球中運(yùn)行程序來運(yùn)行一下


實(shí)際上是很流暢的,由于GIF設(shè)置幀數(shù)低所以看起卡卡的

好了,下一步我們要解決點(diǎn)擊氣球后氣球破掉的代碼,我們首先要知道如何判斷鼠標(biāo)左鍵按下的腳本,也很簡單。

if(Input.GetMouseButtonDown(0))  //如果鼠標(biāo)左鍵按下

//執(zhí)行后面的內(nèi)容

接下來你要了解如何判斷點(diǎn)到了氣球,其實(shí)也很簡單,在網(wǎng)上搜索一下Unity 2d 點(diǎn)擊物體,就可以知道寫法了。

其實(shí)這段寫法的意思是,鼠標(biāo)左鍵按下后,向鼠標(biāo)點(diǎn)擊的地方發(fā)射一條射線,如果射線碰撞到了物體(代碼是“不是沒有碰到物體”),則打印出物體的當(dāng)前坐標(biāo)和名字。

可能初學(xué)者依然很懵,碰撞是什么,其實(shí)在游戲設(shè)計(jì)中,最重要的就是碰撞,簡單來說就是兩個(gè)物體的區(qū)域重合了,實(shí)際上在游戲中每個(gè)物體都有個(gè)你看不見的框,只有程序才看得見,比如打飛機(jī)游戲中,物體子彈和物體機(jī)體重合了,就觸發(fā)了一個(gè)碰撞。

而往往彈幕設(shè)計(jì)游戲中,都會(huì)把機(jī)體的碰撞框設(shè)置的比實(shí)際圖片小,所以才有擦彈玩法

所以這里我們也需要為氣球添加一個(gè)碰撞盒,同時(shí)你還可以更清晰的了解到什么叫做“你看不見的框”。


有看見左側(cè)的不容易看見的綠色框嗎,那就是碰撞框

我們在設(shè)計(jì)碰撞框的時(shí)候,比實(shí)際氣球還要更大一些,這是為了增加手感,降低游戲難度而做。

我們運(yùn)行程序點(diǎn)擊氣球,出現(xiàn)了下圖的顯示,意思就是程序功能成功了。


接下來我們要讓氣球被點(diǎn)后boom。

首先我們把代碼改成了這樣,意思就是如果點(diǎn)擊后判斷名字是redBall,就打印boom


當(dāng)然,這只是其中一個(gè)步驟,寫代碼的時(shí)候步子要小,最好每一個(gè)功能都測試通過再寫下一個(gè)功能,不然的話最后發(fā)現(xiàn)出問題了都不知道哪里出的。

測試通過后,我們加了一句代碼

Destroy(hit.collider.gameObject);  //銷毀這個(gè)物體。

好了至此我們基礎(chǔ)功能就寫完了。

但是這個(gè)游戲就這樣會(huì)不會(huì)太無聊了點(diǎn)呢,而且根本就沒有可玩性好嗎,所以我們應(yīng)該為氣球加入隨機(jī)生成的功能。

在學(xué)習(xí)生成前,我們需要知道一個(gè)概念Prefab模塊化,簡單的說就是把這個(gè)物體做成模板,讓其可以批量化,而且修改的時(shí)候也可以只用修改prefab物體就可以批量把所有的組件修改掉。


按照動(dòng)圖的辦法創(chuàng)建Prefab,最后是把氣球組件拖了進(jìn)去

接下來我們需要掌握一個(gè)代碼,生成物體。

實(shí)例代碼是這樣:Instantiate (prefab, Vector3(2.0, 0, 0), Quaternion.identity);

然后我們最后修改成了這樣:


上面的代碼中,Random.Range是隨機(jī)數(shù),還有整個(gè)if功能是說在固定多少秒內(nèi)執(zhí)行一次這樣的事情,這些知識在拋硬幣教程里都教學(xué)過,有興趣可以去看看上一期。

我們運(yùn)行一下,現(xiàn)在情況是這樣的


是不是覺得太死板了,有2個(gè)問題:

  1. 氣球出現(xiàn)頻率太固定

  2. 氣球速度太固定

所以我們現(xiàn)在需要修改下這幾個(gè)問題,具體代碼UP會(huì)放入git里,之后去git看看吧。

最后我們做出了這樣的小游戲,UP試玩了下


突然出現(xiàn)神速移動(dòng)氣球還是有點(diǎn)壓力山大

后記

用了一期時(shí)間來寫這個(gè)教程,當(dāng)然還是沒有寫完。

  1. 現(xiàn)在還沒有寫計(jì)分與死掉的效果

  2. 氣球戳爆后的特效也沒有加入

這幾個(gè)需求就留在下一期完成吧

項(xiàng)目代碼git:github.com/suxsho/terobiBalloon

一個(gè)人做游戲(一)——打氣球手游的評論 (共 條)

分享到微博請遵守國家法律
北京市| 凤山县| 增城市| 丹江口市| 喜德县| 会同县| 新津县| 襄城县| 阳新县| 天津市| 郴州市| 嵊泗县| 永德县| 区。| 古交市| 五大连池市| 普兰县| 滨海县| 郯城县| 田林县| 涟水县| 新巴尔虎左旗| 洛南县| 淮北市| 鄢陵县| 沧州市| 鲁山县| 哈尔滨市| 肥东县| 南江县| 九台市| 应城市| 安仁县| 闽清县| 固镇县| 嘉善县| 昂仁县| 荣成市| 莒南县| 罗定市| 石门县|