Unity 2D小遊戲製作(三) :怪物生成與死亡

 

  1. 怪物隨機生成
  2. 怪物死亡

             此篇效果 - 怪物隨機生成與死亡* * * * 

 

-  接下來進入完整教學   -

 

怪物隨機生成

一、我們先在場景中新增一個空物件,並且命名為「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);

        }

    }

}

 

2.jpg

 

四、再來我們把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);

    }

 =======新增這段======

}

 

 

1.jpg

 

十五、找到場景中的Monster物件,然後點選 Overrides > Apply All (這樣新生成的怪物就會爆炸囉!)

 

爆炸特效

一、把爆炸連續圖放入Sprite資料夾中,並把它設定成Sprite(記得按下Apply)

 

二、點選爆炸圖,把Sprite Mode設定成 Mutiple並點擊左下角的Sprite Editor

 

三、開始切割爆炸圖,把每個爆炸狀態都用滑鼠左鍵圈選(沒有每個圈就會有缺漏喔)

 

四、當全部都圈選完畢後按下Apply,再到Sprite資料夾中檢視剛剛的爆炸圖,可以看到爆炸圖下面出現很多張剛剛切割好的圖片

 

五、將切割好的爆炸物件的第一個拖曳至遊戲場景中(其實哪個都可以不過這裡先已第一個當範例)

 

3.jpg

 

六、開啟Animation視窗(Window→Animation)

 

 

七、點選爆炸物件,後點選Animation內的Create鍵

 

八、在Sprite資料夾下建立一個叫做MonsterExplode的動畫檔

 

九、把剛剛切割好的圖片拖曳到動畫編輯器上,每個間隔 0.1 秒(上面有時間軸可以對照)

 

九、點選動作檔(MonsterExplode_Obj.anim)

10.jpg

 

十、新增新的C#程式檔,命名為「MonsterExplode_Obj」

5.jpg

 

十一、「MonsterExplode_Obj.cs」程式如下

 

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class MonsterExplode_Obj : MonoBehaviour {


    void Start () {

        Destroy (this.gameObject, 1f);

    }
}

6.jpg

 

十二、將爆炸物建設成預置物(拖曳至下方)

7.jpg

 

十三、修改怪物程式碼(MonsterCode.cs),將下面二行程式碼新增至下圖二個地方

 

public GameObject MonsterBoom;

Instantiate (MonsterBoom, this.transform.position, Quaternion.identity);

 

8.jpg

 

十四、將爆炸預置物拖曳至怪物程式馬上(如下圖)

9.jpg

 

實作完成!!!

 

-------------------------------------------------------------------------------------------------------------------------------------

 

我們有粉絲專頁囉!!!       

如果怕有問題連絡不到我們,歡迎隨時私訊FB粉專哦!!!

https://www.facebook.com/Straying2018/

 

●     如果這篇文章有幫助到您,希望您能留言給予我們鼓勵 !  

●     對於文章有任何的建議,非常歡迎留言告訴我們哦 !!!  

●     有任何想知道的功能也歡迎告訴我們,我們會盡快寫成部落格分享給大家 !

 

arrow
arrow
    全站熱搜

    『迷途』 發表在 痞客邦 留言(4) 人氣()