2017-05-09 6 views
4

の左上の位置検索:オブジェクトの位置を取得するにはキャンバス

Vector3 mainCanvasPosition = mainCanvas.GetComponent<RectTransform>().position; 

をしかし、それは、オブジェクトの中央の位置を返します。

左上隅の位置を取得するにはどうすればよいですか? enter image description here

+0

画面の左上の位置、またはキャンバスだけを意味しますか? – Programmer

+0

@Programmerちょうどキャンバス(緑のパネルを保持) – David

答えて

5

main.canvas.GetComponent()。rect.xMinは、ワールド空間ではなく、キャンバス空間でキャンバスの最小位置を指定します。 xMinをキャンバスのx位置に追加すると、ワールド空間内のキャンバスの最小x位置が取得されます。そしてyについても同じです。

So;

float minX = mainCanvas.GetComponent<RectTransform>().position.x + mainCanvas.GetComponent<RectTransform>().rect.xMin; 
float maxY = mainCanvas.GetComponent<RectTransform>().position.y + mainCanvas.GetComponent<RectTransform>().rect.yMax; 
float z = mainCanvas.GetComponent<RectTransform>().position.z; 

Vector3 topLeft = new Vector3(minX, maxY, z); 

あなたのキャンバスの左上を与える

編集:あなたはユニティの参照を見ればhttps://docs.unity3d.com/ScriptReference/RectTransform-rect.html

、あなたはRectTransform.rectがないワールド空間では、ローカル空間であることを確認する必要があり

+2

私はインターネットに問題があり、返信できませんでした。私の解決策としては、TransformPointを使用してローカル空間をワールド空間に変換するので、それは問題ではありません。実際に、私はシーンビューを通して私のことをテストしていたので、私はそれに気付かなかった。 – Programmer

関連する問題