我已創建使用Unity3d在我的2D遊戲的按鈕,添加盒撞機2D與名PADBASE來檢測觸摸事件是這樣的:Unity3D觸摸事件結合
if(Input.touchCount > 0)
{
for(int i = 0; i < Input.touchCount; i++)
{
Vector3 mouseWorldPos3D = Camera.main.ScreenToWorldPoint(Input.GetTouch(i).position);
Vector2 mousePos2D = new Vector2(mouseWorldPos3D.x, mouseWorldPos3D.y);
Vector2 dir = Vector2.zero;
RaycastHit2D hit = Physics2D.Raycast(mousePos2D, dir);
Touch t = Input.GetTouch(i);
if (hit.transform != null)
{
if(Physics2D.Raycast (hit.transform.position , hit.transform.forward))
{
GameObject recipient = hit.transform.gameObject;
if(t.phase == TouchPhase.Began) //poczatek dotyku
{
// button clicked
// change colour to red to visually show that button is being pressed
}
else if (t.phase == TouchPhase.Ended)
{
// change collor to its default colour to visually show that its no longer pressed
}
}
}
}
}
讓我們假設我將按鈕的顏色變爲紅色當玩家觸摸按鈕,返回到其默認的顏色,當他發佈了他的手指(例如)
現在它顯然會工作,只有當玩家將釋放他的手指,只要他的手指居然是裏面的盒子的邊界對撞機,我試圖做的是「綁定觸摸事件(?)」,即使玩家移動了他的手指,仍然可以捕捉觸摸事件(滑動或結束)沒有釋放他的手指(例如不小心)對撞機的對角線
我期待着一些建議,謝謝。
在我的遊戲中,我將有多個按鈕,所以多點觸摸是必要的。