Unity勇者の冒険の書

Unityで学んだことや便利なものなど作ったら紹介します

【Unity勇者の奮闘記】2Dで敵の方向を向く

例の如く、2Dです。

画像は、下の画像の向きのままの画像を使ってます。

3Dで敵の方向を向くときはLookAtとか使えばいいと思います。

3Dは嫌いなので割愛。

 

f:id:LightGive:20150714195203p:plain

 

こんな感じで敵が周りにいるとします。

これは敵を向いて撃たないといけないですね…

まずは敵がマウスの位置に来る処理を作って、、、

 

var pos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
pos.z = 0.0f;
Teki.transform.position = pos;

 

f:id:LightGive:20150714195719g:plain

 

あとは敵の方向に向いてほしいですね!

 

ここで、Unityの特徴なのですが、

方法がいくつかあります。

とりあえず知ってる方法を載せます。

 

【方法1】

var vec = (Teki.transform.position - Jiki.transform.position).normalized;
var angle = (Mathf.Atan2(vec.y, vec.x) * Mathf.Rad2Deg) - 90.0f;
Jiki.transform.rotation = Quaternion.Euler(0.0f, 0.0f, angle);

 

【方法2】

var vec = (Teki.transform.position - Jiki.transform.position).normalized;

Jiki.transform.rotation = Quaternion.FromToRotation(Vector3.up, vec);

 

これで両方とも同じ動きをします。

f:id:LightGive:20150714200318g:plain

 

やったー('ω')ノ

Unityの回転関係は色々あって、

難しいので、勉強すべし!

では