京城遊戲人-Day10: 2D 遊戲中手機/PC 的單次觸摸/點擊

京城遊戲人-Day10: 2D 遊戲中手機/PC 的單次觸摸/點擊

-

-

基本方法

  1. 創建一個 Sprite
  2. 給這個 Sprite 添加 Box Collide 2D 的組件
  3. 創建一個 Empty Object,命名爲 GameController
  4. 創建一個名爲 GameController.cs 的腳本,並添加到 GameController 上
  5. 編寫腳本

以下腳本,包括處理 PC 鼠標點擊和手機觸摸屏點擊。

public class GameController : MonoBehaviour {

    // Use this for initialization
    void Start () {
    }

    // Update is called once per frame
    void Update ()
    {
        if (Input.touchCount == 1 && Input.touches[0].phase == TouchPhase.Ended)
        {
            var hit = Physics2D.Raycast (Camera.main.ScreenToWorldPoint(Input.touches[0].position), Vector2.zero);
            if (hit.collider != null)
            {
                hit.collider.gameObject.transform.Rotate (new Vector3(0, 0, 90));
            }
        }

        if (Input.GetMouseButtonUp(0))
        {
            var hit = Physics2D.Raycast (Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);
            if (hit.collider != null)
            {
                hit.collider.gameObject.transform.Rotate (new Vector3(0, 0, 90));
            }
        }
    }
}

常見問題

  • 如果不給 Sprite 添加 Box Collide 2D,則無法識別點擊
  • 注意用 TouchPhase.Ended 和 GetMouseButtonUp 來判斷點擊結束。如果不看點擊開始、結束,則會出現單次點擊後,Sprite 連續轉動多個 90 度的現象,讀者們可以把代碼做如下兩個修改,感受下:

    // 去掉下面這句
    Input.touches[0].phase == TouchPhase.Ended
    
    // 修改下面這句
    Input.GetMouseButton(0)
    
  • 這裏用的是射線判斷方法,是一種非常常用的判斷法

-

-

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章