2016-10-24 10 views
0

모바일 2D 게임의 터치 컨트롤에 가장 적합한 방법, 특히 브레이크 아웃/아카노이드 스타일 게임을위한 패들을 드래그하는 방법을 알고 싶었습니다. 모바일 게임의 인기를 고려할 때 이것이 표준 기능이었을 것이라고 생각했기 때문에 유니티 기능을 쉽게 구현할 수 없다면 놀랄 것입니다. 자습서에 대한 조언이나 링크, 특히 게임 개체 드래그가 크게 도움이 될 것입니다. 감사.유니티 - 2D 게임에서 게임 객체를 끌기위한 모바일 터치 컨트롤

답변

0

내 조언은 이와 같은 스크립트를 사용하여 (유니티 4.6에 도입) 유니티 UI 기능을 사용하는 것입니다 : (계속 당신이 raycasting UI를 항목을 활성화해야 작동이 들어

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; 
    } 
} 

"레이 캐스트 Target "을 선택) UI 레이어에서 항목 위에있는 레이 캐스트를 차단하는 것도 없습니다.

또한 필요하지 않은 경우 Input.multiTouchEnabled = false;을 사용하여 mutli 터치 입력을 사용 중지 할 수 있습니다.

+0

감사합니다. – Kaz

0

쉬운 해결책은 지금 표준 (Unity 5?) "DragRigidbody"스크립트를 가져 와서 게임 객체에 첨부하는 것입니다. 그냥 개체에 RigidBody 구성 요소가 연결되어 있는지 확인하십시오. (당신의 외륜 개체가 이미 가지고 있다고 가정합니다).

+0

감사합니다. 어떤 패키지에서 가져올 수 있습니까? – Kaz

+0

죄송합니다. 감사 – Kaz