ファイブボックス一分間Unity講座、主にUnityに初めて触れる方や、初めて間もない方向けのステップアップ講座です。
ファイブボックス公式Youtube「Unityマニア」の「1分間Unity講座」の記事の詳細説明になります。
今回はオブジェクトの大きさを更新する方法をご説明します。
オブジェクトの大きさは、TransformコンポーネントのScaleプロパティが管理しており、x軸、y軸、z軸の3軸の値を持っています。
プログラムでこの値を変更するには「transform.localScale」の値を更新します。
「transform.localScale」とは親要素に対する相対的な大きさを表し、Unityでは常に親要素を基準とした相対的な大きさを指定してプログラミングします。
Hierarchy上で親要素がないルートオブジェクトでも「transform.localScale」の値を更新します。
ルートオブジェクトの場合、「transform.localScale」はワールド座標に対する相対的な大きさを表します。
X軸方向の変化
void Update()
{
if (Input.GetKey(KeyCode.D)) //Dキーが押されたら
{
//X軸方向に0.01ずつ大きくなる
transform.localScale += Vector3.right * 0.01f;
}
if (Input.GetKey(KeyCode.A)) //Aキーが押されたら
{
//X軸方向に-0.01ずつ大きくなる
transform.localScale -= Vector3.right * 0.01f;
}
}
x軸方向に拡大、縮小を行いたい場合は Vector3.right の方向に値を更新します。
なお、X軸の値がマイナスに転じた場合、オブジェクトは反対方向にへの伸縮を行います。
transform.localScale += Vector3.right * 0.01f;
Y軸方向の変化
void Update()
{
if (Input.GetKey(KeyCode.UpArrow)) //上矢印キーが押されたら
{
//Y軸方向に0.01ずつ大きくなる
transform.localScale += Vector3.up * 0.01f;
}
if (Input.GetKey(KeyCode.DownArrow)) //下矢印キーが押されたら
{
//Y軸方向に-0.01ずつ大きくなる
transform.localScale -= Vector3.up * 0.01f;
}
}
y軸方向、つまり高さの拡大、縮小を行いたい場合は Vector3.up の方向に値を更新します。
下の様にかなりスマートなUnityチャンになりました。
Z軸方向の変化
void Update()
{
if (Input.GetKey(KeyCode.W)) //Wキーが押されたら
{
//Z軸方向に0.01ずつ大きくなる
transform.localScale += Vector3.forward * 0.01f;
}
if (Input.GetKey(KeyCode.S)) //Sキーが押されたら
{
//Z軸方向に-0.01ずつ大きくなる
transform.localScale -= Vector3.forward * 0.01f;
}
}
Z軸方向に縮小を行いたい場合は Vector3.forward の方向に値を更新します。
Zの値がマイナスに転じた場合、Unityチャンは反対方向を向くようになります。
まとめ
これまで学習してきたTransformコンポーネントの Positionプロパティ、Rotationプロパティは直接プロパティ値を変更する方法のほかに、Transformコンポーネントのもつメソッドを使ってプロパティ値を変更する方法がありました。
しかしSlaleプロパティにはそのようなメソッドが用意さえれていませんので、上の様に直接プロパティ値を更新して大きさを変更します。
ファイブボックスでは、Unityの個別指導のオンラインレッスンを行っています。
ご興味のある方は当サイト、オンラインレッスンから、無料体験授業へお問い合わせ下さい。
コメント