Задать вопрос

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

Может кто напишет, как сделать перетаскивание правильно и при каких настройках работает первое, второе, третье?
  • Вопрос задан
  • 385 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Middle-разработчик игр на Unity
    3 месяца
    Далее
  • Нетология
    Разработчик игр на Unity
    13 месяцев
    Далее
  • Академия Eduson
    Разработчик игр на Unity
    6 месяцев
    Далее
Решения вопроса 1
GavriKos
@GavriKos Куратор тега Unity
Микропетпроджект - https://home-cloud.store/
Правильный вариант тот, который подходит под ваши условия и систему.
Так то все эти варианты рабочие. Но зависят от настроек канвы, от того что конкретно вы тягаете, от иерархии объектов (а в случае юая - еще и от настроек парентов)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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