Как конвертировать Canvas space в мировое пространство - PullRequest
0 голосов
/ 14 октября 2018

Я в основном хочу найти способ установить transform.position = recttransform.position;

Мне нужна функция, которая преобразует положение прямолинейного преобразования для преобразования положения.

Позволяет сказать;

RectTransform objectA;

Transform objectB;

Canvas canvas;

Start()
{
 //All i want to do is this..
 objectB.transform.position = CanvasToWorld(canvas, objectA);
}


Vector2 CanvasToWorld(Canvas canvas, RectTransform rect)
{
//Do some function and return world position of the recttransform 
}

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

transform.position и rectTransform.position находятся в одном и том же пространстве, World Space, потому что RectTransform наследует от Transform, position - это одно и то же свойство.

rectTransform.anchoredPosition - это то, чтоработает на Canvas space

Проблема, вероятно, связана с вашими настройками холста, если это Overlay позиция будет далеко, но на Camera или World она должна быть очень точной, вы можете дажеизменить RectTransform шарниры, чтобы изменить центр игрового объекта.

0 голосов
/ 15 октября 2018

Хорошо, я нашел простое решение.Надеюсь это кому-нибудь пригодится.:)

RectTransform objectA;
Transform objectB;

    Vector3 pos = Camera.main.ViewportToWorldPoint(objectA.position);
    objectB.position = Camera.main.WorldToViewportPoint(pos);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...