2015-04-24 13 views
6

UI elemanlarına sahibim (resim, vb). Tuval kameraya bağlı. RectTransform var, ancak bu verileri ekrana veya dünya koordinatlarına dönüştürüp bu görüntünün merkez noktasını nasıl edinebilirim?Unity3d. UI elemanının ekran veya dünya pozisyonu nasıl alınır

çalıştı RectTransform.GetWorldCorners ama sıfır vektörleri döndürür. Yerel alanda merkez noktası için

cevap

9

yourRectTransform.rect.center.

yourRectTransform.TransformPoint dünya alanına dönüştürmek.

O belirtildiği gibi RectTransform.GetWorldCorners çalışmadığını garip. Burada başka bir sorun varsa merak ediyorum. Gerçek boyutlara sahip bir çocuk kullanırken ama sadece

+0

Thx Huacanacha yeniden boyutlandırılabilir için beklemek gerekecek gibi hem GetWorldCorners ve TransformPoint sadece değil) Awake (açık) Başlat (üzerinde çalışmak olduğunu gördük. Tam olarak –

+0

neye ihtiyacım var 'yourRectTransform.TransformPoint (Vector3)' nü bulmak için çok fazla zaman aradım .... Çok teşekkürler! – Kursion

+0

gerçekten de, RectTransform.GetWorldCorners'ın hiç işe yaramayacağını biliyorum: Kay'in altında, tuvalin yalnızca dünya uzay stili olması durumunda işe yaradığını bildiriyor. – Fattie

1

Sen GetWorldCorners çalışabilirsiniz. Dünya uzay tuvalinin çocuğu için makul değerlerim var.

0

sizi içerik

Vector3 min = referenceArea.rectTransform.TransformPoint(referenceArea.rectTransform.rect.min); 
    Vector3 max = referenceArea.rectTransform.TransformPoint(referenceArea.rectTransform.rect.max); 

    elementToResize.transform.localScale = new Vector3(Mathf.Abs(min.x - max.x) , Mathf.Abs(min.y - max.y), 1f); 
    elementToResize.transform.position = referenceArea.rectTransform.TransformPoint(referenceArea.rectTransform.rect.center);