RectTransform pivot
Добавлено: 30 июл 2019, 16:15
Добрый день. Не могу справиться с задачей, может кто сталкивался. Есть RawImage, у него меняется scale, как переместить его пивот в точку клика мыши?
Знаю какие координаты должны быть у пивота (от 0 до 1) с помощью скрипта:
В итоге у меня меняет визуально позицию сам объект относительно pivota а pivot стоит на месте. Нужно чтобы визуально переместился пивот под мышку.
Общая задача увеличить картинку относительно где стоит курсор, меняю скале и картинка увеличивается относительно пивота.
Если не понятно описал задачу скажите, сниму видос.
Знаю какие координаты должны быть у пивота (от 0 до 1) с помощью скрипта:
Синтаксис:
Используется csharp
public void UI_click()
{
print("Click---------------------");
RectTransform r = RiImg.gameObject.GetComponent<RectTransform>();
print("pos do " + r.transform.position);
Vector2 rMin = r.offsetMin;
Vector2 rMax = r.offsetMax;
Vector2 sc = r.localScale;
Vector3 rp = r.position;
//r.localScale = Vector2.one;
r.pivot = new Vector2(0.5f, 0.5f);
Vector2 pos;
RectTransformUtility.ScreenPointToLocalPointInRectangle(r, Input.mousePosition, myCanvas.worldCamera, out pos);
float px = pos.x / r.rect.width + 0.5f;
float py = pos.y / r.rect.height + 0.5f;
r.pivot = new Vector2(px, py);
//r.localScale = sc;
//r.offsetMin = rMin;
//r.offsetMax = rMax;
print("pos posle" + r.transform.position);
print("rMin = " + rMin);
print("rMax = " + rMax);
print("px = " + px);
print("py = " + py);
print("mp = " + Input.mousePosition);
print("pos = " + pos);
print("anchoredPosition = " + r.anchoredPosition);
}
{
print("Click---------------------");
RectTransform r = RiImg.gameObject.GetComponent<RectTransform>();
print("pos do " + r.transform.position);
Vector2 rMin = r.offsetMin;
Vector2 rMax = r.offsetMax;
Vector2 sc = r.localScale;
Vector3 rp = r.position;
//r.localScale = Vector2.one;
r.pivot = new Vector2(0.5f, 0.5f);
Vector2 pos;
RectTransformUtility.ScreenPointToLocalPointInRectangle(r, Input.mousePosition, myCanvas.worldCamera, out pos);
float px = pos.x / r.rect.width + 0.5f;
float py = pos.y / r.rect.height + 0.5f;
r.pivot = new Vector2(px, py);
//r.localScale = sc;
//r.offsetMin = rMin;
//r.offsetMax = rMax;
print("pos posle" + r.transform.position);
print("rMin = " + rMin);
print("rMax = " + rMax);
print("px = " + px);
print("py = " + py);
print("mp = " + Input.mousePosition);
print("pos = " + pos);
print("anchoredPosition = " + r.anchoredPosition);
}
В итоге у меня меняет визуально позицию сам объект относительно pivota а pivot стоит на месте. Нужно чтобы визуально переместился пивот под мышку.
Общая задача увеличить картинку относительно где стоит курсор, меняю скале и картинка увеличивается относительно пивота.
Если не понятно описал задачу скажите, сниму видос.