1. 程式人生 > >Unity知識一:簡單的點選事件

Unity知識一:簡單的點選事件

用Unity做專案,不可避免的要用滑鼠或者手指去點選,但是點選的時候我們怎麼判斷我點到了什麼了呢?
點選的實現方法有很多種,我們就由淺入深,先介紹簡單的。
射線點選事件的思路是:當我滑鼠按下的時候,從攝像機往滑鼠的方向發射出一條射線。如果該射線被某遊戲物體擋住了,那麼我們就說現在滑鼠就點選在這個遊戲物體上,會觸發相應的事件。要注意的是:被點選的物體需要新增碰撞器才能進行碰撞檢測。

我們來看一個遊戲開始的例子:
這裡寫圖片描述
當我點選中間的按鈕時,在右側的控制檯會輸出一句話“遊戲開始!”(因為還沒有加功能,所以只是顯示點選按鈕確實觸發了事件。)
這裡寫圖片描述

我們來看看程式碼具體是怎麼實現的:

//下面是一個標準的Unity下C#指令碼的,包含名稱空間的引入、類名、繼承自哪一類、Start方法、Update方法。
using UnityEngine; using System.Collections; public class StartButton : MonoBehaviour { // Use this for initialization void Start () { } // Update is called once per frame void Update () { if (Input.GetMouseButtonDown (0)) { //首先判斷是否點選了滑鼠左鍵 Ray ray=Camera.main.ScreenPointToRay (Input.mousePosition); //定義一條射線,這條射線從攝像機螢幕射向滑鼠所在位置
RaycastHit hit; //宣告一個碰撞的點(暫且理解為碰撞的交點) if(Physics.Raycast (ray,out hit)) //如果真的發生了碰撞,ray這條射線在hit點與別的物體碰撞了 { if (hit.collider.gameObject.name == "StartButton") //如果碰撞的點所在的物體的名字是“StartButton”(collider就是檢測碰撞所需的碰撞器) { print("遊戲開始!"
); } } } } }

這就是射線碰撞完成的點選事件,在射擊遊戲中,射線碰撞還用與是判斷是否射中以及射中了什麼物體。