AIプログラムとかUnityゲーム開発について

探索や学習などを活用したAI系ゲームを作りたいと思います。

クォータニオンってなんだ?

サンプルのC#コードを見ていて意味不明なのがクォータニオンですね

4次元のベクトルで、任意軸回転を行うやりかた。

3Dを始めた人はみなハマるんではないだろうか。

 

要するに、普通の高校数学の三次元のような角度はオイラー角と呼ばれていて、

たとえば、FPSなどで、敵が自分の方向を向く場合

>||

transform.LookAt(target);
transform.Translate( Vector3.forward * speed * Time.deltaTime);

||<

オイラー角で考えると、こう書くけど、

これだと、ジンバルロックというのが起きてうまくないらしい。

LookAtはtargetの方に向かせるメソッドで、

まず向かせて、speedで前進する。

クォータニオンを使うと、こう書く

>||

// ターゲット方向のベクトルを求める
Vector3 vec = target.position - transform.position;
// ターゲットの方向を向く
transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(new Vector3(vec.x, 0, vec.z)), rotMax);
transform.Translate(Vector3.forward * speed); // 正面方向に移動
↑移動ベクトルのY成分を0にすることで、縦に回転しないで追尾する?

||<

実際に動かして確認してみたほうがいいだろうけど(^^;)

 

 はてな表記でコード指定にしてるのにはて?