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