Я хотел узнать, какой метод оптимальной практики использовать для сенсорных элементов управления для мобильных 2D-игр, в частности, перетаскивая весло для игр с прорывом/арканоидом. Было бы удивительно, если бы в Unity не было удобного средства для этого, так как я бы подумал, что это была бы стандартная функция, учитывая популярность мобильных игр. Любые советы или ссылки на учебные пособия, особенно перетаскивание игровых объектов, были бы весьма признательны. Благодарю.Единство - мобильный контроль касания, чтобы перетащить игровой объект в 2D-игру
0
A
ответ
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
Простым решением было бы импортировать стандартный (Unity 5?) Скрипт DragRigidbody и прикрепить его к игровому объекту. Просто убедитесь, что у вашего объекта есть связанный с ним компонент RigidBody (который я бы предположил, что ваш объект paddle уже был бы).
Спасибо, посмотрим на это. – Kaz