1. 程式人生 > >[unity] unity學習——彈球遊戲

[unity] unity學習——彈球遊戲

一、學習內容

通過彈球遊戲,來熟悉unity的簡單操作,以及一些指令碼的新增及控制。 彈球遊戲:  即只有一個底盤和一個球,控制底盤去接球,球撞到底盤後隨機一個角度反彈。沒接住球就算結束。

二、彈球遊戲的製作

1、開啟unity5,新建一個3d工程。 2、在Hierarchy檢視框中新增一個cube物件,並命名Plate,作為底盤: 這個物件的Inspector檢視的Transform元件引數設為,大概像個盤子就行。 其中position是控制cube的位置,rotation是角度,scale是大小。 3、再在HIerarchy中新增一個Sphere物件,並命名為Ball,作為球,scale屬性改為1.5  1.5  1.5  (差不多大小就行) 4、給Ball物件新增一個Rigidbody元件,Mass質量屬性設為0.1,勾選Use Gravity選項,表示受重力影響。 5、接下來就是給Plate和Ball建立指令碼控制這兩個物件該如何使用。 Plate的作用是可以控制左右移動,那麼需要獲取輸入,以及設定一個移動速度就行。在plate物件的Inspector檢視下方點選Add Component按鈕,選擇new script,並命名為MovePlate     ,建立好之後會有一個包含框架的程式碼,在裡面加上速度屬性和獲取輸入的程式碼即可:
using UnityEngine;
using System.Collections;

public class MovePlate : MonoBehaviour {
    public float speed = 5.0f;//the speed of plate
	// Use this for initialization	
	// Update is called once per frame
	void Update ()
    {
        float h = Input.GetAxis("Horizontal");//get the horizontal input
        transform.Translate(Vector3.right * h * speed * Time.deltaTime);//move the plate
	}
}
其中使用public命名的物件,都會在Inspector檢視對應的元件中出現,如speed就可以在檢視中修改,不用修改程式碼。
Input.GetAxis("Horizontal")表示通過方向左右鍵來獲得位移量。
transform.Translate表示移動指令碼繫結的遊戲物件,移動距離就是裡面的引數。
Ball的作用是會隨機角度反彈,並且球沒有被盤接住,則遊戲結束。
同樣,在Ball的Inspector檢視中新增指令碼元件,命名為Ballcontroler,程式碼為:
</pre><pre code_snippet_id="1738402" snippet_file_name="blog_20160630_7_8266191" name="code" class="csharp"><pre name="code" class="csharp">using UnityEngine;
using System.Collections;

public class BallContraler : MonoBehaviour {
    public float thrust = 40.0f;
    private Rigidbody rb;
	// Use this for initialization
	void Start ()
    {
        rb = GetComponent<Rigidbody>();
	}
	
	// Update is called once per frame
	void Update ()
    {
        if (transform.position.y < -10)
        {
            Destroy(gameObject);
            Application.Quit();
        }
	}
    void OnCollisionEnter(Collision collision)
    {
        rb.AddForce(new Vector3(Random.Range(-0.2f, 0.2f), 1.0f, 0) * thrust);
    }
}

其中,thrust為反彈力大小,設為public,隨時在檢視介面控制大小。
新建Rigidbody物件rb,用來儲存Ball物件中的元件Rigidbody,就是第4步中新增的物理元件。
如果球的位置低於水平面10的距離,就判輸。
最後,就是碰撞控制的部分,OnCollisionEnter是unity中處理碰撞的函式之一,還有OnCollisionStay和OnCollisionExit。
至此,完成小球的指令碼控制,運行遊戲發現遊戲基本規則已經完成,但是遊戲的攝像頭還有進行控制,小球和底盤會慢慢離開遊戲介面,
我們通過新增unity自帶的攝像頭控制指令碼:project檢視中通過import package——charaters   然後選擇SmoothFollow.cs
然後將這個指令碼拖動到Hieracht檢視的Main Camera物件上,之後再Main Camera的Inspector檢視中就多了一個Script元件,然後target選擇Ball或者Plate都行 這個指令碼的功能就是讓攝像機始終跟隨target物件。
至此整個遊戲設計完成。

三、總結

工程建立 、遊戲元素建立及位置大小控制、Rigidbody的初步認識、為遊戲物件建立指令碼、通過指令碼對遊戲元素的位置控制 攝像機控制初試 通過Ctrl+Shift+B進行遊戲釋出。