次の問題があります。画面の周りを移動する矢印の後にワールドスペースのキャンバスがあります。キャンバス自体は矢の子です。問題は、矢印が画面の端の何かを指しているときにキャンバスの部分が画面から外れることがあることです。私はいつでもビューポートの中にキャンバス全体を保持するコードを書く必要があります。私は解決策をオンラインで見つけましたが、これはオブジェクト全体のものではなく、カメラ境界内のオブジェクトのピボットポイントを保持します。カメラの境界線内にオブジェクト全体を保持する方法を理解できません。ここで私が持っているコードは次のとおりです。オブジェクト(ワールドスペースキャンバス)を常にカメラのビューポートに保持する
void LateUpdate()
{
transform.rotation = rotation;// This simply keeps the objects original rotation independant from the parent
Vector3 pos = Camera.main.WorldToViewportPoint(transform.position);
pos.x = Mathf.Clamp01(pos.x);
pos.y = Mathf.Clamp01(pos.y);
transform.position = Camera.main.ViewportToWorldPoint(pos);
}
だけでなく、それはRectTransformがあるので、キャンバスを回転/シフトし、すべての4つの隅の点を変換して動くことができることは、ビルドことですGetWorldCornersメソッドを使用してrect変換の4つのコーナーを取得します。私が把握できないのは、ビューポート内にあるかどうかを確認する方法と、その後にオブジェクトを移動する方法です。 –
@UriPopov私は自分の答えを編集しました – TheDjentleman