Unity 2D小遊戲製作(三) :怪物生成與死亡
- 怪物隨機生成
- 怪物死亡
此篇效果 - 怪物隨機生成與死亡* * * *
- 接下來進入完整教學 -
怪物隨機生成
一、我們先在場景中新增一個空物件,並且命名為「MonsterCreater」
二、我們在「Code」資料夾中,新增一段名為「MonsterCreater」的程式碼
三、接下來我們開啟MonsterCreater並開始編輯為下列程式碼(記得ctrl+S存檔)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MonsterCreater : MonoBehaviour
{
//要被生成的怪物物件
public GameObject Monster;
void Start()
{
//執行生成怪物程式碼(每秒一次)
InvokeRepeating("CreatMoneter", 1, 1);
}
public void CreatMoneter()
{
int MonsterNum;
//隨機決定要生成幾個怪物(0-2個隨機)
MonsterNum = Random.Range(0, 3);
//開始生成怪物
for (int i = 0; i < MonsterNum; i++)
{
//宣告生成的X座標
float x;
//產生隨機的X座標(-6到5之間)
x = Random.Range(-6, 6);
//生成怪物
Instantiate(Monster, new Vector3(x, 2.8f, 0), Quaternion.identity);
}
}
}
四、再來我們把MonsterCreater程式碼拖曳到場景中 MonsterCreater 物件上
五、再來我們把場景中的Monster拖曳到Prefab資料夾中做成預製物件
六、接下來我們點選場景中的MonsterCreater並在上面找到MonsterCreater程式碼元件,會看到上面有一個空欄位Monster
七、把Prefab資料夾中的Monster拖曳到空欄位中,隨機怪物生成就大功告成囉!
怪物死亡
一、接下來我們要回到Monster物件上的MonsterCode程式碼中,要去讓怪物播放動畫,我們將MonsterCode修改如下
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MonsterCode : MonoBehaviour
{
void Update()
{
//怪物持續向下移動
this.transform.position += new Vector3(0, -0.05f, 0);
}
//如果被東西碰到
private void OnTriggerEnter2D(Collider2D collision)
{
=======新增這段======
//如果被子彈打到
if (collision.name == "Bullet(Clone)")
{
//執行怪物死亡
MonsterDie();
}
=======新增這段======
if (collision.name == "Wall_4")
{
//怪物消失
Destroy(this.gameObject);
}
}
=======新增這段======
//爆炸完畢讓怪物消失
public void MonsterDie()
{
//怪物消失
Destroy(this.gameObject);
}
=======新增這段======
}
十五、找到場景中的Monster物件,然後點選 Overrides > Apply All (這樣新生成的怪物就會爆炸囉!)
爆炸特效
一、把爆炸連續圖放入Sprite資料夾中,並把它設定成Sprite(記得按下Apply)
二、點選爆炸圖,把Sprite Mode設定成 Mutiple並點擊左下角的Sprite Editor
三、開始切割爆炸圖,把每個爆炸狀態都用滑鼠左鍵圈選(沒有每個圈就會有缺漏喔)
四、當全部都圈選完畢後按下Apply,再到Sprite資料夾中檢視剛剛的爆炸圖,可以看到爆炸圖下面出現很多張剛剛切割好的圖片
五、將切割好的爆炸物件的第一個拖曳至遊戲場景中(其實哪個都可以不過這裡先已第一個當範例)
六、開啟Animation視窗(Window→Animation)
七、點選爆炸物件,後點選Animation內的Create鍵
八、在Sprite資料夾下建立一個叫做MonsterExplode的動畫檔
九、把剛剛切割好的圖片拖曳到動畫編輯器上,每個間隔 0.1 秒(上面有時間軸可以對照)
九、點選動作檔(MonsterExplode_Obj.anim)
十、新增新的C#程式檔,命名為「MonsterExplode_Obj」
十一、「MonsterExplode_Obj.cs」程式如下
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MonsterExplode_Obj : MonoBehaviour {
void Start () {
Destroy (this.gameObject, 1f);
}
}
十二、將爆炸物建設成預置物(拖曳至下方)
十三、修改怪物程式碼(MonsterCode.cs),將下面二行程式碼新增至下圖二個地方
public GameObject MonsterBoom;
Instantiate (MonsterBoom, this.transform.position, Quaternion.identity);
十四、將爆炸預置物拖曳至怪物程式馬上(如下圖)
實作完成!!!
-------------------------------------------------------------------------------------------------------------------------------------
我們有粉絲專頁囉!!!
如果怕有問題連絡不到我們,歡迎隨時私訊FB粉專哦!!!
https://www.facebook.com/Straying2018/
● 如果這篇文章有幫助到您,希望您能留言給予我們鼓勵 !
● 對於文章有任何的建議,非常歡迎留言告訴我們哦 !!!
● 有任何想知道的功能也歡迎告訴我們,我們會盡快寫成部落格分享給大家 !
留言列表