2016-03-20 12 views
-2

Bir GameObject hareketli grafiğin altına düştüğünde bir eylem gerçekleştiren basit bir yordam oluşturuyorum. Sprite'ın sınırlarını kullanarak boyutlarını nasıl alacağımı anladım, ancak sprite'ın nerede olduğunu düşündüğüm yeri hesapladığımda, beklediğimden daha küçük bir sayı veriyor.Unity'deki bir hareketli grafiğin alt kısmı için neden yanlış yerel konum hesaplanıyor?

public class FooBehaviour : MonoBehaviour 
{ 
    public SpriteRenderer ChildSprite; 

    void Start() 
    { 
     float bottomEdgeInLocalSpace = 
      ChildSprite.gameObject.transform.localPosition.y - ChildSprite.bounds.extents.y; 
    } 
} 
+0

sen ne yapmaları gerektiğini Debugger'ı kullanılarak .. ayrıca birisi nasıl belirleyebilirsiniz: InverseTransformPoint kullanarak yerel alana bounds.min dönüştürerek

, şu kullanarak sprite beklenen altını elde edebildi Sadece 1'lik kod satırını yazarken hesaplama (lar) ınız için yanlış gideceğiniz yer. – MethodMan

+0

Düzenleme: Nevermind, pivot noktanın kafesin üstünde olduğu yerdir. –

+0

@MartinMazzaDawson Transform.position sadece nesnenin merkezini vermiyor mu? Benliğin kendisinin en alt kenarının konumunu hesaplamak istiyorum. – TVOHM

cevap

1

yüzden çıkıyor: (? Sprite pozisyonunu, eksi sınırların boyutunu (yarım genişlik), bana sprite altını vermelidir) aşağıdaki gibi

Benim yöntemidir Renderer.bounds dünya uzayında ve yerel alanda çalışıyordum, bu yüzden onu doğrudan yerel pozisyona uygulamak saçma sapan sonuçumu veriyordu.

float position = transform.InverseTransformPoint(symbol.bounds.min).y; 
İlgili konular