1. 程式人生 > >【Unity學習第二天】滾球遊戲學習(Roll A Ball)

【Unity學習第二天】滾球遊戲學習(Roll A Ball)

基本流程

**
0、在基礎的地面上會有一個小球,通過控制小球的滾動,吞吃地面上的一些小塊。
1、建立基礎場景,包括地面,主角,觸碰小塊。

① 通過材質設定修改相關物體的顏色/光滑度等顯示。
② 重複出現的遊戲物體最好設定成prefab,以方便修改。
③ 小球上需要新增剛體元件,以模擬物理效果。
④ 觸碰小塊上新增PickUp標籤,用於判斷。

2、建立指令碼,實現對遊戲主角的控制,鏡頭對主角的跟隨,主角觸碰小塊小塊消失(吞食)的功能。

① 在指令碼中定義一個剛體,並通過獲取元件上的剛體對其賦值。
    private Rigidbody rd;
    //在start()模組中對其進行賦值。
    rd = getComponent<Rigidbody>();
② 通過對這個剛體施加力,對主角進行控制。
    float h = getAxisRaw("Horizontal");
    float v = getAxisRaw("Vertical");
    rd.AddForce(new Vector3(h,0,v));

③ 鏡頭的跟隨,指令碼掛在在相機上。首先定義一個gameObject,並將其和工程中的Player聯絡起來。
    public gameObject PlayerTransform;
④ 記錄初始化時主角和相機的偏移量,在持續執行時加上偏移量。
    //在start()模組中
    offset = transform.position - PlayerTransform.position;
    //在Update()模組中,更新相機位置
    transform.position = PlayerTransform.position + offset;

⑤ 吞吃小球,有兩種方式,一種是碰撞檢測,但會有明顯的觸碰效果,第二種是觸發檢測,將觸碰小快的碰撞盒修改成觸發器(is Trigger)。
    //觸碰檢測
    void OnCollisionEnter(Collision collision){
        if(collision.collider.tag == "PickUp"){
            Destroy(collision.collider.gameObject);
        }
    }
    //觸碰檢測
    void OnTriggerEnter(Collider collider){
        if(collider.tag == "PickUp"){
            Destroy(collider.gameObject);
        }
    }

3、建立UI介面的顯示內容,包括一個計數量score,一個完成時的提示量win。

4、在指令碼中實現score的計數功能,和win的條件顯示功能。

① 首先引入新的環境(?),using UnityEngine.UI;
② 得分計數的實現,因為是對遊戲物體的text元件進行修改,所以定義一個text變數,用以和專案中對應的元件聯絡起來。
    public Text text;
    private int score;//計數變數

    score++;//在每次檢測到加分條件時,score+1

    text.text = score;//完成賦值
③ 獲勝提示,在滿足條件的情況下,對winText進行一個啟用操作。同樣定義一個gameObject變數,和工程中的物體聯絡起來。
    public gameObject winText;

    winText.setActive();

5、遊戲的釋出(將需要構建的scene場景拖入到build的視窗中)

總結

**
1、善用unity提供的manual,當中包括很多class,需要一一熟悉。
2、指令碼工程和遊戲工程的聯絡需要定義,使用物體即用gameObject,使用元件即定義元件名稱,獲取元件通常使用gameObject.getComponent<>();