libro
www.tuyano.com
JavaScriptではじめるUnityプログラミング入門

ゲームオブジェクトを移動しよう! (5/5)

作成:2014-04-19 11:43
更新:2014-04-19 11:45

■Quaternionについて

transorm.rotationに設定されている「Quaternion」は、回転角度を扱うためのものです。回転も、やっぱりX, Y, Z軸の値で設定される……はずなのですが、このQuaternion4つの値が用意されています。

回転というのは3つの軸の値を設定する方法では必ずしも正しい方向を向けることができないケースがあるのです。このために、更にwという値を持つ、4つの値により向きを管理するQuaternionというオブジェクトが用意されています。

このQuaternionは、以下のように作成できます。
var 変数 = new Quaternion( x値 , y値 , z値 , w値 );
4つの値の組み合わせということでなんとなくイヤ~ンな感じがしたと想いますが、このQuaternionのx, y, zの値は、実はインスペクターのTransformにあるRotation」の値ではありません。なので、これと同じ感覚でQuaternionの値を操作しても思うように方向を設定することはできないでしょう。

なので、Unity初心者の間は、「Quaternionの存在は知らなかったことにする」ということにしましょう。回転は、Rotateメソッドを使うこと。以上。


■Quaternion.Eulerを使う

……で終わってしまっては話にならないので、とりあえず「インスペクターのX, Y, Zの値からQuaternionオブジェクトを作る」というやり方だけ覚えておきましょう。これは以下のように行います。
var 変数 = Quaternion.Euler( X軸 , Y軸 , Z軸 );
簡単な利用例を下にあげておきました。これなら、まぁ3つの軸の値をそれぞれ設定するだけなので、感覚的にはわかりやすいですね。

ただし、実際に下のスクリプトを動かしてみると、なんだか不思議な回転の仕方をすることに気がつくはずです。「3つの軸の向きを指定するだけでは思ったような方向にできない」ということの意味がなんとなくわかるでしょう。

位置は、3つの軸の値を同時に変更できますが、回転は「3方向に同時に回転する」ことはできません。まずX軸で回転し、次にY軸で回転し……というと、どうしても正しく方向を設定できない場合があるのです。

Quaternionはそれを解決するためのものだったのですね。でも、難しいので「なかったこと」にします。大丈夫です。Unity初心者はみんなそうしてますから。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

#pragma strict

var n:float = 0.0;
 
function Start () {
}
 
function Update () {
    var q = Quaternion.Euler(n, n, n);
    transform.rotation = q;
    n++;
}
※関連コンテンツ

「JavaScriptではじめるUnityプログラミング入門」に戻る