デジタルフロッグ

Unityのアプリの開発をしながらいろいろと忘れないための備忘録でございます。

LookAtを2Dで再現するには

Quaternion FromToRotation(Vector3 fromDirection, Vector3 toDirection);

fromDirection から toDirection への回転を作成します。

通常、ワールド空間で Transform を回転させ、座標の 1 つ、例えば、y 座標をターゲットの方向 toDirection に向かせるために使用します。

 

LookAtを2Dで再現するには

まず最初に書いたものはUnity公式のリファレンスから引用したものになります。

Transformを回転させ、座標の1つをターゲットの方向に向かせるという事です。ちなみにLookAtはどうしてつかわないかというと。

f:id:karaagedigital:20160905183609g:plain

こんなふうになって2Dの見えちゃいけない部分が見えてしまいます。

 

今回使うのはこの2行のスクリプトです。

 

Vector3 diff = (Head.gameObject.transform.position - this.transform.position);

this.transform.rotation = Quaternion.FromToRotation (Vector3.up, diff);

 

//Vector3.upはVector3(0,1,0)と同じ意味とリファレンスに書いてます。

他にもstatic変数はあるのでこちらで確認してみて下さい。

docs.unity3d.com

diffは頭と球体のtransform.positionの差が格納されています。

Quaternion.FromToRotationは二つのポジションの差を自身の回転にするというものらしいです。

実際に動かしてみるとこんな感じです。

コンソールはdiffの値を出力しています。

f:id:karaagedigital:20160905202401g:plain

頭の頂点で追いかけるようにはなってくれました(笑)

この辺はまだちょっと自分には難しいかも…

f:id:karaagedigital:20160905202623g:plain

ちょっと頑張ってやってみましたが、なんだかちょっと反応が遅いですね…

こちらはいつもお世話になっているテラシュールブログさんから知識を拝借いたしました!

tsubakit1.hateblo.jp