2016-10-24 10 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; 
    } 
} 

За эту работу вы должны включить элемент пользовательского интерфейса raycasting (держать «Raycast Target ") и ничего не блокирует raycast над вашим предметом в слоях пользовательского интерфейса.

Также обратите внимание, что если вам это не нужно, вы можете отключить входной сигнал mutli с помощью Input.multiTouchEnabled = false;.

+0

Спасибо, посмотрим на это. – Kaz

0

Простым решением было бы импортировать стандартный (Unity 5?) Скрипт DragRigidbody и прикрепить его к игровому объекту. Просто убедитесь, что у вашего объекта есть связанный с ним компонент RigidBody (который я бы предположил, что ваш объект paddle уже был бы).

+0

спасибо, под какой пакет я импортирую это? – Kaz

+0

Извините, я получил это. благодаря – Kaz