EventSystem, что надо писать в OnDrag для перетаскивания?

using UnityEngine;
using UnityEngine.EventSystems;

public class DragDrop : MonoBehaviour, IDragHandler
{
    public void OnDrag(PointerEventData eventData) {
        // Вот тут...
    }
}


В одной статье пишут
transform.position = eventData.position;
// при этом объект уносит в координаты в тысячах

В другой:
transform.position = eventData.pointerCurrentRaycast.screenPosition;
// при этом объект дергается между координаты в тысячах и нулевыми

В третьей:
transform.localPosition += new Vector3(eventData.delta.x, eventData.delta.y, 0) / transform.lossyScale.x;
// Объект перетаскивается только сильно в стороне от курсора, но его хотя бы видно )

Путем экспериментов с третьим пришел к корректному варианту:
transform.localPosition += new Vector3(eventData.delta.x, eventData.delta.y, 0);

Может кто напишет, как сделать перетаскивание правильно и при каких настройках работает первое, второе, третье?
  • Вопрос задан
  • 357 просмотров
Решения вопроса 1
GavriKos
@GavriKos Куратор тега Unity
Правильный вариант тот, который подходит под ваши условия и систему.
Так то все эти варианты рабочие. Но зависят от настроек канвы, от того что конкретно вы тягаете, от иерархии объектов (а в случае юая - еще и от настроек парентов)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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