Unity勇者の冒険の書

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

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

こんにちは。

今回は、Unityの2Dで「敵の方向を向く」処理をC#で実装していきたいと思います。 

自機の画像はスプライトで表示しています。
真ん中のが自機で、右上のがですね。
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の回転関係は色々あって、難しいので、とにかく勉強すべし!

では。('_')