Unity学习笔记------用Unity2D制作打地鼠游戏
制作思路
“地鼠”被打到時(shí)(受到鼠標(biāo)點(diǎn)擊)消失
同時(shí)在原有“地鼠”位置出現(xiàn)新對(duì)象“死地鼠”并在規(guī)定時(shí)間內(nèi)消失
未受到點(diǎn)擊的“地鼠”在指定時(shí)間內(nèi)自動(dòng)消失
“地鼠”能在相同時(shí)間間隔內(nèi)隨機(jī)產(chǎn)生
制作步驟
搭建打地鼠游戲場(chǎng)景
(這里導(dǎo)入的背景圖片可以自行在網(wǎng)上搜索,由一個(gè)大的背景圖片.jpg(ground)和一個(gè)有α通道的地鼠洞圖片.png(hole)組成)
選中圖片,打開(kāi)inspector面板,參數(shù)如下圖所示
Texture Type:Sprite(2D and UI)
Sprite Mode:Single
Pixels Per Unit:100 【每個(gè)像素點(diǎn)個(gè)數(shù)為100】
關(guān)掉【自動(dòng)生成小地圖】的選項(xiàng)Generate Mip Map(一般情況下為未勾選狀態(tài))
調(diào)整攝像機(jī)大小Size(可以使用鼠標(biāo)拖拽調(diào)整或者用公式【高度除以2除以每單位像素?cái)?shù)100調(diào)整數(shù)值修改)
注意此處要確保他們的參數(shù)Order in layer 層級(jí)關(guān)系:hole為1層,ground為0層
使得hole放置在ground上面而不至于被遮擋不可見(jiàn)
保存場(chǎng)景
Ps:此處有一些出入。如果我們有相匹配的“地鼠”的3D模型和材質(zhì),可以使用3D模型制作。不過(guò)由于我沒(méi)有找到相關(guān)的素材,而恰巧我們此次制作為2D游戲,所以可以采取給圖片即2D對(duì)象添加碰撞器的做法,如下。
同理制作對(duì)象“死地鼠”,并將該對(duì)象拖拽為預(yù)制體。
如果光線較暗的話可以添加Directional light平行光
攝影機(jī)設(shè)置Clear Flags項(xiàng)選項(xiàng)為Solid Color,顏色改為黑色,如圖所示。
使對(duì)象“地鼠”在受到鼠標(biāo)點(diǎn)擊時(shí)自動(dòng)銷(xiāo)毀
將腳本加到對(duì)象“地鼠”上
然后在銷(xiāo)毀對(duì)象“地鼠”前實(shí)例化對(duì)象“死地鼠”
Instantiate(m_prefab2, transform.position, Quaternion.identity); //實(shí)例化生成 “死地鼠”,位置為當(dāng)前【點(diǎn)擊“地鼠”】的原位置,旋轉(zhuǎn)角度為任意值注意:要先生成,再銷(xiāo)毀。因?yàn)樵谶壿嬌蟻?lái)講如果對(duì)象已經(jīng)被銷(xiāo)毀而不存在,那么所在位置則有可能出現(xiàn)錯(cuò)誤。
注意腳本寫(xiě)好以后將“死地鼠”的預(yù)制體拖拽給“地鼠”對(duì)象身上的腳本S1的m_prefab2
使對(duì)象“死地鼠”在出現(xiàn)0.5秒以后自動(dòng)銷(xiāo)毀
同理可以應(yīng)用在S1腳本中,使對(duì)象“地鼠”在始終沒(méi)有受到點(diǎn)擊時(shí)出現(xiàn)3秒后自動(dòng)銷(xiāo)毀
保存場(chǎng)景
InvokeRepeating函數(shù)可以在制定間隔調(diào)用指定函數(shù),實(shí)現(xiàn)Create函數(shù)的重復(fù)調(diào)用,即實(shí)現(xiàn)“地鼠”對(duì)象的重復(fù)生成
void Start() {InvokeRepeating("Create", 0, 1);//該調(diào)用函數(shù)為Create,等待時(shí)間為0(密集運(yùn)行),間隔為1s//每指定間隔調(diào)用生成一次函數(shù) }Create函數(shù)實(shí)現(xiàn)地鼠的實(shí)例化生成以及隨機(jī)出現(xiàn)
首先定義位置變量pos,然后產(chǎn)生隨機(jī)的id值,再使用if函數(shù)根據(jù)隨機(jī)產(chǎn)生的id值確定pos的值即對(duì)象實(shí)例化的位置,最后Instantiate函數(shù)進(jìn)行對(duì)象的實(shí)例化
void Create() {Vector3 pos = Vector3.zero; //初始化建立位置變量int id= 0;id = Random.Range(1,10); //在1~9的9個(gè)數(shù)中隨機(jī)產(chǎn)生一個(gè)數(shù)值if (id== 1)pos = new Vector3(0, 0, 0);if (id== 2)pos = new Vector3(2, 0, 0);if (id== 3)pos = new Vector3(-2, 0, 0);if (id== 4)pos = new Vector3(0, 1, 0);if (id== 5)pos = new Vector3(2, 1, 0);if (id== 6)pos = new Vector3(-2, 1, 0);if (id== 7)pos = new Vector3(0, -1, 0);if (id== 8)pos = new Vector3(2, -1, 0);if (id== 9)pos = new Vector3(-2, -1, 0);Instantiate(m_Target, pos, Quaternion.identity); //實(shí)例化對(duì)象}出現(xiàn)的問(wèn)題及解決方法
解決過(guò)程:但我想到之前講到的3D對(duì)象和2D對(duì)象的不同在于2D對(duì)象需要手動(dòng)添加碰撞器。而此次游戲剛好是一個(gè)2D游戲,所以我猜想如果給2D的圖片添加碰撞器是否可以在游戲中實(shí)現(xiàn)需要的對(duì)象效果。嘗試成功。
解決過(guò)程:我搜索了2D對(duì)象看不到的原因,但是沒(méi)有找到解決辦法。無(wú)奈之下我刪除原來(lái)制作好的對(duì)象并重新導(dǎo)入圖片做了一遍,對(duì)象就又是可見(jiàn)的了。我猜想這可能是因?yàn)檐浖姆€(wěn)定性等等原因造成的。
收獲
之前學(xué)習(xí)unity3D時(shí)有學(xué)過(guò)一個(gè)類似功能的函數(shù)叫攜程函數(shù),不過(guò)實(shí)現(xiàn)的功能更加全面,可以設(shè)置多個(gè)時(shí)間間隔,從而體現(xiàn)出關(guān)卡的效果。
就是不知道這些用在Unity2D游戲里的函數(shù)能不能同樣在Unity3D游戲中使用,不過(guò)理論上應(yīng)該是可以的。
總結(jié)
以上是生活随笔為你收集整理的Unity学习笔记------用Unity2D制作打地鼠游戏的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: [vue] 使用vue后怎么针对搜索引擎
- 下一篇: 项目管理和软件开发的边界