Unity drag не работает, объект отходит от указателя - PullRequest
0 голосов
/ 07 апреля 2019

Я прикрепил следующий скрипт к Image внутри Canvas:

public class DragMe : MonoBehaviour, IDragHandler
{
    public void OnDrag(PointerEventData eventData)
    {
        this.transform.localPosition += (Vector3)eventData.delta;
    }
}

Проблема в том, что, когда я перетаскиваю дальше, Image все больше и больше уходит из-под указателя. Когда я перетаскиваю обратно в начальную позицию, Image возвращается туда, где он находился под пальцем / указателем.

изменив код на:

this.transform.position = eventData.position;

заставляет объект прыгать куда-то еще.

Любая помощь очень ценится.

Обновление: Ребята, если вы прочитаете мой код и ответите на предполагаемый дублирующий вопрос, то мой ответ - мой вопрос! Но у него есть проблема, то есть объект не остается под перетаскивающим пальцем / указателем и продолжает уходить дальше, пока вы продолжаете перетаскивать!

Обновление 2: Image

enter image description here

Canvas:

enter image description here

Камера:

enter image description here

1 Ответ

2 голосов
/ 07 апреля 2019

Лучше использовать Screen Space - Overlay, если область просмотра камеры не изменилась.Тогда будет работать следующий код:

this.transform.position = eventData.position;

Чтобы использовать Screen Space - Camera, вам необходимо преобразовать положение события в пространство камеры:

Vector3 position = eventData.position;
var canvas = image.canvas;
position.z = canvas.planeDistance;
image.transform.position = canvas.worldCamera.ScreenToWorldPoint(position);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...