[unity] unity學習——彈球遊戲
阿新 • • 發佈:2019-01-01
一、學習內容
通過彈球遊戲,來熟悉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 ,建立好之後會有一個包含框架的程式碼,在裡面加上速度屬性和獲取輸入的程式碼即可:其中使用public命名的物件,都會在Inspector檢視對應的元件中出現,如speed就可以在檢視中修改,不用修改程式碼。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 } }
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
至此整個遊戲設計完成。