Создать новую фотографию в точке постукивания - PullRequest
0 голосов
/ 02 мая 2020

Я хочу создать новую фотографию в том месте, где я ее касаюсь, и хочу, чтобы это делалось при каждом касании, поэтому я написал следующую строку внутри функции void Update ().

public Canvas cv;
public Image im; 

I определили элементы пользовательского интерфейса выше.

for (var i = 0; i < Input.touchCount; ++i)
    {   Touch touch = Input.GetTouch(i);
        if (touch.phase == TouchPhase.Began)
        {
            Instantiate(im, Input.GetTouch(i).position, Quaternion.identity).transform.SetParent(cv.transform, false);
        }
    }

И когда я пытаюсь сделать это с помощью приложения для удаленного доступа, я делаю снимок на 3-4 пальца выше точки, которую нажимаю. в чем проблема? пожалуйста, помогите!

enter image description here

Vector2 scaleSomething()
{
    var screenPosition = Camera.main.WorldToScreenPoint(worldPosition);
    var scaler = cv.GetComponentInParent<CanvasScaler>();
    var guiScale = 1.0f;
         if (Mathf.Approximately(scaler.matchWidthOrHeight, 0.0f))
             guiScale = scaler.referenceResolution.x / (float) Screen.width;

         else if (Mathf.Approximately(scaler.matchWidthOrHeight, 1.0f))
             guiScale = scaler.referenceResolution.y / (float) Screen.height;
         return new Vector2(
             (screenPosition.x - (Screen.width* 0.5f)) * guiScale,
             (screenPosition.y - (Screen.height* 0.5f)) * guiScale);
}

1 Ответ

0 голосов
/ 02 мая 2020

попробуйте удалить установленную родительскую часть после создания экземпляра

. Редактируйте то, что происходит, когда вы создаете экземпляры своих объектов как дочерние объекты, которые переводятся / масштабируются в локальном пространстве для родительского объекта. Поскольку ваш холст растягивается (увеличивается на y), ваши дочерние элементы также увеличиваются на y и оказываются не на своем месте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...