不定期開催の一分間Unity講座、主にUnityに初めて触れる方や、初めて間もない方向けのステップアップ講座です。
ファイブボックス公式Youtube「Unityマニア」の「1分間Unity講座」の記事の詳細説明になります。
ご興味があれば、こちらもご覧ください。
今回はオブジェクトのTransformコンポーネントの初期設定方法です。
Transformコンポーネントの Inspector に表示されているプロパティは、次の3項目になります。
- Positionプロパティ・・・オブジェクトの座標をx軸、y軸、z軸の3軸で管理
- Rotationプロパティ・・・オブジェクトの傾きを3軸で管理(内部では4軸を持つ)
- Scaleプロパティ・・・オブジェクトの大きさを3軸で管理
今回は、「1分間Unity講座 AssetStoreから素材を取得する方法」で取得した UnityChan の素材を使って説明します。
ご自身で試される際は、素材はなんでも結構ですよ。
オブジェクトの配置
取得した素材をアセットからヒエラルキーにドラッグ&ドロップ。
サンプルでは「UnityChan」のプレハブを使用しています。
なお、この素材には、不要なスクリプトファイルが複数ついているようなので、不要なスクリプトファイルのチェックを外しておきます。
スクリプトファイルの作成
アセット内で、右クリック、または左上の「̟+ボタン」を押して
Create => C#スクリプト で新たなスクリプトファイルを作成
任意の名前を指定します。
サンプルでは「PlayerController」と指定してみました。
プログラムの作成
作成したスクリプトファイルを立ち上げて、次のコードを記述します。
スクリプトファイルはダブルクリックで立ち上がります。
ポジション(座標)の指定
PlayerController.cs
void Start()
{
//座標を指定
transform.position = new Vector3(0, -1.0f, -5.0f);
}
座標はx,y,z の3軸持っているので、new Vector3(x,y,z) で値を代入します。
ローテーショ(向き)の指定
PlayerController.cs
void Start()
{
//向きを指定
transform.rotation = Quaternion.Euler(0, 180, 0);
}
Unityの向きはQuatanion角、つまり4軸で管理されています。
x,y,z の3軸で構成される Euler角をQuatanion角に変換するメソッドが Quaternion.Euler()になります。
Quaternion角は、回転を表現するための数学的な構造で、特に以下の点で便利です。
- ギムバルロックの回避:
- Euler角(ピッチ、ヨー、ロール)で回転を表現すると、ギムバルロックと呼ばれる問題が発生することがあります。これは、特定の角度で回転軸が揃ってしまい、自由な回転が失われる現象です。Quaternionを使用することでこの問題を回避できます。
- スムーズな補間:
- Quaternionを使用すると、回転の補間(例えば、スムーズな回転のアニメーション)が簡単に実現できます。
スケール(大きさ)の指定
PlayerController.cs
void Start()
{
//向きを指定
transform.localScale = Vector3.one * 1.5f;
}
position や rotation はそのまま指定しますが、scale の場合、localScale 、つまり親要素に対する相対的な大きさの指定となります。
今回のサンプルの様に親要素が無い場合、ワールド空間を基準としたスケールとなります。
Vector3.one とは new Vector3(1,1,1) と同じ意味になります。
つまり次の2つのコードは同じ意味を持ちます。
transform.localScale = Vector3.one * 1.5f;
transform.localScale = new Vector3(1.5f,1.5f,1.5f);
最後はスクリプトファイルを対象のオブジェクトにアタッチします。
ファイブボックスでは、Unityの個別指導のオンラインレッスンを行っています。
ご興味のある方は当サイト、オンラインレッスンから、無料体験授業へお問い合わせ下さい。