京城遊戲人-Day10: 2D 遊戲中手機/PC 的單次觸摸/點擊
-
- 作者:大銳哥
- 地址:http://blog.csdn.net/prevention
-
基本方法
- 創建一個 Sprite
- 給這個 Sprite 添加 Box Collide 2D 的組件
- 創建一個 Empty Object,命名爲 GameController
- 創建一個名爲 GameController.cs 的腳本,並添加到 GameController 上
- 編寫腳本
以下腳本,包括處理 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)
這裏用的是射線判斷方法,是一種非常常用的判斷法
-
- 作者:大銳哥
- 地址:http://blog.csdn.net/prevention
-