キューブを拡大/縮小してみます。
これにはgameObject.transform.localScaleを変更します。
Scaleにはpositionやrotationとは違いローカルしかないですが、これが要はオブジェクトの大きさの倍率になるので、ローカルだけでよい話です。
lossyScaleというプロパティもあり、これがワールドから見た絶対スケールになりますが、読み取り専用プロパティとなっています。
スポンサーリンク
Scaleを変更する
キーの上下で縦方向の、左右で横方向の、Fire1と2でZ方向のスケールを変更してみます。
まずいつもどおりCubeをひとつ用意して、CubeScale.csスクリプトを作成、それにコンポーネント追加。下のスクリプトをUpdateに追加します。
gameObject.transform.localScale = new Vector3( gameObject.transform.localScale.x + Input.GetAxis("Horizontal"), gameObject.transform.localScale.y + Input.GetAxis("Vertical"), gameObject.transform.localScale.z ); if (Input.GetButton("Fire1")) { gameObject.transform.localScale = new Vector3( gameObject.transform.localScale.x, gameObject.transform.localScale.y, gameObject.transform.localScale.z + 0.5f ); } if (Input.GetButton("Fire2")) { gameObject.transform.localScale = new Vector3( gameObject.transform.localScale.x, gameObject.transform.localScale.y, gameObject.transform.localScale.z - 0.5f ); }
実際動かしてみると、なんかこうふよふよしている感じがして妙に楽しくなってくるところある…
面白いのはマイナスにつきぬけたときで、そこで止まるんじゃなくて反転して伸びていくのね。
なるほどと思いました。
lossyScaleの使いどころは?
なんかScaleはこれだけで終わる感じなので。
lossyScaleは実際のスケール、座標でいうと絶対座標のようなものが登録されているので、それを基準としてサイズの調整をすることができそう。
「親オブジェクトのスケールを変化させても子オブジェクトを変化させたくない場合」にあるような、親オブジェクトだけを拡大/縮小する、または子オブジェクトだけを、といったことに使えるようです。
いろいろなパーツを作っていく上では必要になってくることがありそうです。