Unity3D開發(fā)常用API之實(shí)例化與銷毀(六)

本節(jié)要點(diǎn)

1.實(shí)例化游戲物體

1.游戲中的案例介紹

在很多 MMORPG 類的游戲中都有類似于“金錢副本”的副本關(guān)卡。在這類副

本中通常都是限定一個(gè)時(shí)間,在這個(gè)時(shí)間內(nèi)玩家可以盡情的破壞,然后收集金錢。

分析游戲截圖講解場景元素:[見圖]

①場景中所有的壇子,模型都是一樣的,壇子是預(yù)制體。

②壇子是從“天上”掉下來的,所以壇子模型身上有剛體組件。

③如果玩家在一段時(shí)間內(nèi)沒有打碎壇子,這些壇子會(huì)消失。


2.案例場景制作

①創(chuàng)建地面模型;

②創(chuàng)建“壇子”模型,并制作成預(yù)制體;




3.實(shí)例化生成 1 個(gè)壇子

GameObject.Instantiate(Object, Vector3, Quaternion);

參數(shù)說明:

Object:用于實(shí)例化的預(yù)制體;

Vector3:實(shí)例化后生成的物體所在的位置;

Quaternion[四元數(shù)]:實(shí)例化后生成的物體的旋轉(zhuǎn)狀態(tài);

Quaternion.identity:無旋轉(zhuǎn);




4.構(gòu)造隨機(jī)位置

位置是用 Vector3 類型進(jìn)行表示的。

X,Y,Z 三個(gè)值確定了物體在三維世界中的位置。

Random.Range(min, max):生成隨機(jī)數(shù)。

在 min 和 max 直接隨機(jī)生成一個(gè)隨機(jī)數(shù)。

演示:按下鍵盤的一個(gè)鍵,就在隨機(jī)位置實(shí)例化一個(gè)物體。


2.銷毀游戲物體

GameObject.Destroy(Object, float);定時(shí)銷毀某個(gè)游戲物體。

參數(shù)說明:

Object:要銷毀的游戲物體;

float:時(shí)間,多少秒后銷毀;


關(guān)鍵代碼

CreateBoxs

public class CreateBoxs : MonoBehaviour {

    //定義公開變量 并通過拖曳 把相關(guān)預(yù)置體拖至相關(guān)屬性下
    public GameObject goPrefab;



    void Start () {
    
        //實(shí)例化對(duì)象關(guān)鍵語句(靜態(tài)方法)
       // GameObject.Instantiate(goPrefab,Vector3.up,Quaternion.identity);//參數(shù)1:預(yù)置體,就是要實(shí)例化的對(duì)象;參數(shù)2:0位置上方1米,參數(shù)3:4元數(shù)無旋轉(zhuǎn)

        //自己定義隨機(jī)范圍(位置) 
       // Vector3 position = new Vector3(1,1,1);

        //Vector3 position = new Vector3(Random.Range(-9.0f,9.0f),10,Random.Range(-9.0f,9.0f));//參數(shù)1:X軸的范圍 Y固定下高度,Z軸的范圍
        //GameObject.Instantiate(goPrefab,position,Quaternion.identity);
        //通過按下空格鍵隨機(jī)實(shí)例化box;

    }
    

    void Update () {

        //通過按下空格鍵隨機(jī)實(shí)例化box;
        if (Input.GetKeyDown(KeyCode.Space))
        {
            Vector3 position = new Vector3(Random.Range(-9.0f,9.0f),10,Random.Range(-9.0f,9.0f));
            GameObject.Instantiate(goPrefab,position,Quaternion.identity);


        }


    }
}

DestroyBox

public class DestroyBox : MonoBehaviour {

    // Use this for initialization
    void Start () {

        //出現(xiàn)段時(shí)候后,銷毀物體  關(guān)鍵語句 gameobject靜態(tài)類方法

        GameObject.Destroy(gameObject,Random.Range(5.0f,10.0f));//參數(shù)1:銷毀物體的對(duì)象(就是本身) 參數(shù)2:銷毀的時(shí)間

        //以上方法只能寫在start方法里,不能寫在其他update方法中;

    
    }
    
    //// Update is called once per frame
    //void Update () {
    
    //}
}

小結(jié)

Unity API.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容