2015-05-21 162 views
0

我開發了一款遊戲,需要用戶通過一次觸摸才能畫出鏈接多個對象。目前使用的鼠標按鈕,觸摸輸入此代碼:Unity3d - 觸摸輸入問題

if(Input.GetButton("Fire1")) 
    { 
     mouseIsDown = true; 
     ...//other codes 
    } 

它工作正常使用鼠標,但它會給我的問題,當我編譯爲多點觸摸設備。在多點觸控設備中,如果您有兩個手指向下,中間點將被視爲輸入。但是,如果我已經觸摸了一個物體,然後用第二根手指放下屏幕,它會攪亂我的遊戲輸入並給我造成浩劫的設計。

我想要的僅限於一次觸摸。如果第二根手指觸摸,請忽略它。我怎樣才能做到這一點?

回答

1

以下是你所需要的:

 if ((Input.touchCount == 1) && (Input.GetTouch (0).phase == TouchPhase.Began)) { 
      mouseIsDown = true; 
      ...//other codes 
    } 

它只會火當一個手指是因爲Input.touchCount == 1

0

您正在使用Input.GetButton。一個按鈕不是一個觸摸。您可能想要看看Input.GetTouch

如果您需要支持多種輸入類型的設備,您可能需要考慮編寫自己的管理員腳本以將其抽象化。

0

在屏幕上我會有點輪詢滾!

在您的更新(

所以)我通常做這樣的事情:

foreach (Touch touch in Input.touches) 
{ 
    // Get the touch id of the current touch if you're doing multi-touch. 
    int pointerID = touch.fingerId;   

    if (touch.phase == TouchPhase.Began) 
    { 
     // Do something off of a touch. 
    } 
} 

如果您正在尋找更多的信息檢查了這一點: TouchPhases in Unity

+0

他想,只能檢測到一個手指,並忽略其他。您擁有的代碼將在屏幕上檢測儘可能多的手指。 – Programmer

+0

這是真的,但是我認爲我會把它作爲一種最佳實踐加以考慮,因爲如果需要的話,他可以管理手指ID,以確保它是相同的鰭。我發現這是鎖定任何繁瑣的可靠方法。 – JedH

+0

他可以但你的代碼沒有。如果兩個或更多手指放在屏幕上,您的if語句將始終運行。也許你應該在你的代碼中實現finger ID來幫助別人。 – Programmer