ゲームオブジェクトに設定された Transform
コンポーネントを操作することで、ゲームオブジェクトを拡大縮小することができます。
Transform
コンポーネントのオブジェクトは下記のいずれかの方法で取得できます。
オブジェクトの拡大縮小の設定は Transform.localScale
プロパティで行います。
位置の設定 (position) や 回転角度の設定 (rotation) には、ワールド座標とローカル座標の区別がありますが、拡大縮小には、localScale
の一種類しかないのでシンプルです。
次の例では、Cube オブジェクトを X 軸方向に 4 倍、Y 軸方向に 0.5 倍、Z 軸方向に 2 倍に拡大縮小しています。
全ての軸に同じ比率だけ拡大縮小したいのであれば、Vector3(1, 1, 1)
を示す定数 Vector3.one
を使って次のように記述できます。
拡大率は親の拡大率を引き継ぐ
オブジェクトが親子関係があるとき、Transform.localScale
による拡大率は、必ず親オブジェクトの拡大率を継承します。
次の例では、3 つの Cube オブジェクトに cube1
← cube2
← cube3
という親子関係を持たせ、それぞれ X 軸の拡大率を 2 倍に設定しています。
拡大率が親子で引き継がれるため、cube1
、cube2
、cube3
の表示上の拡大率は、2倍、4倍、8倍となっていることが分かります。
☝️ ワンポイント
X、Y、Z 軸のいずれかの拡大率を 0 にしてしまうと、オブジェクトの大きさが 0 になって見えなくなってしまうことに注意してください。
ワールド座標におけるグローバルスケールを取得する (lossyScale)
上記の例で、cube1
、cube2
、cube3
の表示上の拡大率は 2倍、4倍、8倍になっていると説明しました。
このような、ワールド座標におけるグローバルな拡大率は、Transform.lossyScale プロパティ で取得することができます。
この lossyScale
プロパティは読み取り専用のため、拡大率の指定はあくまで localScale
プロパティの方で行う必要があります。
関連記事