1Frosty
@1Frosty
Познаю новое

IDragHandler Улетает в Нарнию. Почему?

Доброго времени суток. Пользуюсь Unity3D.
Создал Сцену 2D где хочу по нажатию левой кнопки мыши/касания пальца на телефоне, удерживать объект и перемещать.

Создал объект (изображение). Кидаю на него скрипт такого рода:
using UnityEngine;
using UnityEngine.EventSystems;

public class EventHandle : MonoBehaviour, IDragHandler
{
    public void OnDrag(PointerEventData eventData)
    {
        this.transform.position = eventData.position;
    }
}

Запускаю проект. При нажатии и перетаскивании этого объекта он полностью исчезает со сцены и улетает непонятно куда. Смотрю на позиции по X и Y, а они мгновенно набирают ~8000 и ~10000 соответственно, а мышкой еле двигаю.

В общем хочу чтобы при нажатии и удержании объект цеплялся и ходил в центре курсора, не пойму, почему такая проблема возникает. Подскажите пожалуйста, как правильно решить данную задачу. Спасибо большое!
  • Вопрос задан
  • 1255 просмотров
Решения вопроса 1
@youkerni
Unity3D developer
Дело в том, что тач происходит в другой системе координат.
Что бы перевести тач в "мировые" координаты вам необходимо использовать метод Camera.main.ScreenToWorldPoint()
public void OnDrag(PointerEventData eventData)
{
   transform.position = Camera.main.ScreenToWorldPoint(eventData.position);
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@GreatRash
Интернеты советуют попробовать:

public void OnDrag(PointerEventData eventData)
{
    transform.position += (Vector3)eventData.delta;
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы