2016-05-15 38 views
0

我正在製作一個像pong一樣的遊戲,除了用戶控制兩個手柄並且試圖保持球被綁定。我正在使用觸摸來控制兩個槳。我分配了觸摸的指數的方法是像這樣:在Unity中觸摸輸入更新不起作用

 public void checkTouchIndex() { 
    if (Input.touchCount <= 1) 
    { 
     touchPos = Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position); 
     if (touchPos.x < 0) 
     { 
      Debugger.il = "Touch Index = 0"; 
      myTouch = Input.GetTouch(0); 
     } 

    } 
    if (Input.touchCount >= 1) 
    { 
     touchPos = Camera.main.ScreenToWorldPoint(Input.GetTouch(1).position); 
     if (touchPos.x < 0) 
     { 

      Debugger.il = "Touch Index = 1"; 
      myTouch = Input.GetTouch(1); 

     } 
    } 
    else 
     Debugger.il = "Side not touched"; 
} 

這裏是移動的實際槳代碼:

 public void checkMovementTouch() { 
    if (Input.touchCount > 0) 
    { 
     //assigns touch index 
     checkTouchIndex(); 

     touchPos = Camera.main.ScreenToWorldPoint(myTouch.position); 

     if (touchPos.x > 0) 
     { 

      //Begin Section: Touch left side 
      if (touchPos.y > 0) 
      { 
       //moves upwards 
       move(true); 
      } 
      else 
      { 
       //moves downwards 
       move(false); 

      } 
      //End of section 
     } 

    } 

} 

注:Debugger只是出在哪一方的屏幕文本被觸及和觸摸的x位置。但是我有更新的困難。你應該可以拖動你的手指並讓槳跟着它,但是在經過一些測試之後,我注意到只有一個槳正在正確地更新以跟隨手指,並且它總是索引爲1的槳。

例如,如果我觸摸乘坐側,然後將另一個手指放在左側。我將能夠正確地上下拖動我的左側,但右側,即使我上下移動,仍然會保持放置狀態。

問題:我怎樣才能使兩個槳完美地更新。

+0

此檢查觸摸索引代碼在槳本身上? – Allen

+0

@艾倫是的 – Luke

回答

2

我相信你應該有一個for循環經歷所有的觸動。 Here is some documentation on Input.GetTouch

void Update() 
{ 

    if (Input.touchCount > 0) 
    { 
     for (int i = 0; i < Input.touchCount; i++) 
     { 
      myTouch = Input.GetTouch(i); 

      // ... 
     } 
    } 
} 
1

約旦的答案讓你成爲那裏的一部分,但並沒有解釋如何得到哪個觸摸屬於哪個划槳。

目前,由於您在兩個手柄上都有相同的代碼,因此兩個手柄都會分配相同的觸摸。

你需要的東西,它分配槳的第一面的一面。

我向Jordans的答案中添加了一些僞代碼,供您瞭解確切的實現。

if (Input.touchCount > 0) 
{ 
    for (int i = 0; i < Input.touchCount; i++) 
    { 
     touchPos = Camera.main.ScreenToWorldPoint(Input.GetTouch(i)); 

     // if(touchPos.x is on my side) 
     // { 
     // myTouch = touchPos; 
     // } 

    } 
} 

的最好的辦法是分配在觸摸所述觸摸第一被註冊,並通過對每個幀的代碼不循環。 祝你的項目好運。