【Unityで学ぶC#プログラミング⑧】transformを利用した移動・回転・スケール変更

プログラミング初心者向けのUnityで学ぶC#講座。

初心者にもわかりやすく、なるべく専門的な用語をなくして簡単に説明します。

今回は「Transformを利用して移動・回転・スケール変更をする方法」についてです。

この記事を読み終えると、

transformとは

transformを利用した移動・回転・スケール変更

についてわかるようになります。

ゲーム開発中にオブジェクトの位置や角度、スケールを変更したくなる場合は多くあります。

transformを理解出来れば、あらゆる場面で役に立つでしょう。

それではさっそく始めましょう。

transformとは

transformはシーンで扱うすべてのゲームオブジェクトが持っている値です。

オブジェクトの位置情報を表すものであり、インスペクターでその値が確認できます。


こちらの””ゲームオブジェクトはシーンのX座標、Y座標、Z座標の位置にあることがわかります。

これらの位置情報にはVector3 Vector2を使ってアクセスすることが可能です。

Vector3 Vector2とはUnityが提供するベクトルのデータ型で、X、Yの要素からなる2次元ベクトル、X、Ý、Zの要素からなる3次元ベクトルがあります。

4つの要素からなる4次元ベクトルもありますが、あまり使わないので今のところは覚えなくて大丈夫です。

それでは実際にtransformにアクセスしてみましょう。
transformの情報を表示したいオブジェクトに下記のスクリプトをアタッチします。

スクリプトでは位置情と角度、スケールの値をそれぞれVector3の変数に格納して、コンソールで表示しています。

オブジェクトのtransformと同じ値がコンソールに表示されました。

オブジェクトの移動

transform.positionを利用する方法

一つ目のオブジェクトの移動方法はtransform.positionを使った方法です。

Update関数でpositionの値に数値を加え続けます。

下記のサンプルスクリプトを見てみましょう。1フレームごとにXの値に0.2を加え続けています。

スクリプトをアタッチした”GameObject”の子オブジェクトには3Dオブジェクトのcubeを追加しました。

transform.position.xの値を直接編集できないので注意が必要です。 一度Vector3の変数に代入してからでないとtransform.position の値は編集できません。

オブジェクトが動いているのが確認できました。

transform.translateを利用する方法

もう一つの方法がtransform.translateを使った方法です。
オブジェクトがX軸やÝ軸に沿って指定された距離を移動させる関数です。

下記のスクリプトではX軸に沿ってオブジェクトが変数”speed”の距離だけ毎秒進みます。

speedにTime.deltaTimeを掛けることによって、秒単位での移動を可能にしています。

オブジェクトが移動しているのが確認できました。

オブジェクトの回転

transform.Rotateを利用する方法

transform.Rotateを使った簡単なオブジェクトの回転方法です。
指定した軸を中心に回転します。

下記は1フレームごとに3度回転するスクリプトです。

x軸を中心にオブジェクトが回転しているのが確認できました。

オブジェクトのスケール変更

transform.localscaleを利用する方法

移動の一番最初に紹介したtransform.positionを利用した方法とほぼ同じです。

Vector3の変数を宣言し、transform.localScaleに代入します。こちらもtransform.localScaleは直接代入できないので、注意が必要です。

毎秒あたりXの値が0.5拡大しています。


以上、transformを利用した基本的な移動、回転スケール変更の方法でした。また、オブジェクトの移動方法はtransformを使った方法以外にもたくさんあります。 場合によっては適さない時もあるので、その時は臨機応変に対応しましょう。

またべつの機会にブログで他の移動方法や回転、スケール変更も紹介します。

今回の所はこれで終わりです。 最後まで読んでいただきありがとうございました。

おすすめ記事【現役Unityエンジニアが厳選】Unityを学ぶのにおすすめのプログラミングスクール2選

Follow me!