2016-03-20 1 views
-2

GameObjectがスプライトの下に来たときにアクションを実行する単純なルーチンを作成しています。私は境界を使ってスプライトの寸法を取得する方法を考え出しましたが、スプライトの底がどこにあるかを計算すると、予想よりも小さい数値が返されます。なぜUnityのスプライトの下の位置が間違っているのですか?

次のように私の方法は、(スプライトの位置、マイナス境界のサイズ(半値幅)は、私のスプライトの下を与えるべき?)である:

public class FooBehaviour : MonoBehaviour 
{ 
    public SpriteRenderer ChildSprite; 

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

は、あなたがどのように誰もが判断できも...やるべきものです'1'のコード行しか投稿していないときにあなたの計算に関して間違っているところがあります。 – MethodMan

+0

編集:気にしないでください、ピボットポイントがメッシュ上にあります。 –

+0

@MartinMazzaDawson transform.positionはオブジェクトの中心だけを与えませんか?私は、スプライト自体の非常に下端の位置を計算するために探しています。 – TVOHM

答えて

1

だから、それが判明そのRenderer.boundsは世界の宇宙にあり、私は地元の宇宙で働いていたので、それを地方の位置に直接適用すると、私は無意識の結果になっていました。 InverseTransformPointを使用してローカル空間にbounds.minを変換することにより

、私は以下を使用してスプライトの予想下を得ることができた:デバッガを使用して

float position = transform.InverseTransformPoint(symbol.bounds.min).y; 
関連する問題