2016-10-24 95 views
0

我想知道什麼是用於移動2D遊戲的觸摸控制的最佳實踐方法,特別是拖動突破/打磚塊風格遊戲的槳。如果沒有簡單的Unity設備來做這件事,會感到驚訝,因爲我認爲這將成爲手機遊戲普及的標準功能。 任何意見或教程鏈接,特別是拖動遊戲對象,將不勝感激。謝謝。統一 - 在2D遊戲中拖動遊戲對象的移動觸摸控制

回答

0

我的建議是使用統一的用戶界面功能(在Unity 4.6中引入)使用腳本像這樣的:

public class DragControl : MonoBehaviour, IPointerDownHandler, IPointerUpHandler 
{ 
    private bool m_Used; 
    private Vector3 m_MouseStartPosition; 
    private Vector3 m_ItemStartPosition; 

    public void Start() 
    { 
     m_Used = false; 
    } 

    public void Update() 
    { 
     if(m_Used) 
     { 
      GetComponent<RectTransform>().anchoredPosition = new Vector2(m_ItemStartPosition.x + (Input.mousePosition.x - m_MouseStartPosition.x), m_ItemStartPosition.y + (Input.mousePosition.y - m_MouseStartPosition.y)); 
      // or you can set the y value to m_ItemStartPosition.y only if you don't want the paddle to move on Y axis 
     } 
    } 

    public void OnPointerDown(PointerEventData eventData) 
    { 
     m_Used = true; 
     m_MouseStartPosition = Input.mousePosition; 
     m_ItemStartPosition = GetComponent<RectTransform>().anchoredPosition; 
    } 

    public void OnPointerUp(PointerEventData eventData) 
    { 
     m_Used = false; 
    } 
} 

對於這個工作,你必須啓用UI項光線投射(保持「光線投射目標「選中),並且不會阻止在您的UI層上顯示您的項目。

另請注意,如果您不需要它,您可以使用Input.multiTouchEnabled = false;禁用多點觸摸輸入。

+0

謝謝,請看看這個。 – Kaz

0

一個簡單的解決方案是導入現在的標準(Unity 5?)「DragRigidbody」腳本並將其附加到您的遊戲對象。只要確保你的對象有一個連接到它的RigidBody組件(我假設你的槳對象已經)。

+0

謝謝,在什麼包下導入? – Kaz

+0

對不起,我明白了。謝謝 – Kaz