2016-12-26 167 views
0

的邊界我現在有一個名爲「塊」與兩個長的立方體遊戲物體彼此相鄰,在它們之間的間隙。現在,當用戶觸摸屏幕並向左或向右拖動時,該塊也向該方向移動。現在我正在嘗試設置一個邊界,以便它們可以在左側或右側方向上達到一定數量。不過,我怎麼可以編寫這所以它是不同的屏幕比如iPhone的iPad等同樣使用mathf.clamp作爲用於不同大小的屏幕

我目前使用的代碼使相互重疊擺脫這需要存在差距塊。我該如何解決這個問題。代碼如下:

public float speed = 0.0F; 
void Update() { 
    if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Moved) { 
     // Get movement of the finger since last frame 
     Vector3 touchDeltaPosition = Input.GetTouch(0).deltaPosition; 

     // Move object across XY plane 
     transform.Translate(touchDeltaPosition.x * speed, 0, 0); 

     Vector3 boundaryVector = transform.position; 
     boundaryVector.x = Mathf.Clamp (boundaryVector.x, -1f, 1f); 
     transform.position = boundaryVector; 
    } 
} 

blocks in unity

回答

1

對於屏幕大小的問題,我建議ü把一些圖像用戶界面的背景,然後根據不同的分辨率設置它使用anchor財產。

製作高寬比0.5,這組UI規模屏幕大小......所有這些在Inspector只。 從Transform獲得左側和右側邊界值,然後在block gameobj腳本中使用它,如下所示:

//windows specific code 

      float x=Input.GetAxis ("Horizontal"); 
      if (x == 0) { 
       Stop(); 
      } else if (x > 0) { 
       MoveRight(); 
      } else if (x < 0) { 
       MoveLeft(); 
      } 
      pos = transform.position;  //left     //right 
      pos.x=Mathf.Clamp (pos.x, "your boundry min to", "Your boundry max"); 
      transform.position = pos; 

的重疊問題ü可以使用父/子屬性的區塊。使一個別人的孩子。 。這樣的話如果妳左移右擋也將向左移動,他們將不會重疊....

+0

我已經照你問,但是當我在我的遊戲對象塊IM上面的代碼粘貼得到以下錯誤CS0103:當前上下文中不存在名稱「pos」。這是「Stop」,「moveright」,「moveleft」,「pos」等等。作爲即時通訊相當新的團結和c#你能解釋爲什麼這些錯誤是存在的,我怎麼能解決這個問題。感謝 – U53R

+1

第一ü學習C#..並從谷歌的統一基礎。在這種情況下,你得到這些錯誤,因爲沒有聲明變量'pos'在課堂上聲明它 – utkdub

相關問題