おはようございます。おーみんです。
現在Unityでゲームを作っています。
今回の記事では、「自動で相手の方向を向く」もしくは「自動で相手が自分の方向を向く」関数を紹介していこうと思います。
僕が作っているゲームを例に解説しようと思うんですが、まずこちらの動画を見てみましょう。(ツイート内容はあまり気にしないでくださいw)
Enemies became to attack me.
— 超おーみん2@Unity民族 (@Ooooooomin_365) 2019年3月11日
but, "only" attack me.
Next, I"ll make the angle and frequency of the missile.#gamedev #unity #unity3d #IndieGameDev pic.twitter.com/NMqvkm0Gg9
これは敵機(前から出てくる多数の青い飛行機)との一定距離を下回ると敵機からミサイルが飛んでくることになっています。
しかし・・・何か不自然ですよねw
そう、ミサイルが横向きに飛んできているんです(;^_^A
要はミサイルの初期の向き(前を向く)は設定しているんですが、それ以外の設定をしていないため、動画のようにミサイルは前を向いたままで固定されてしまっているのです。
そこでミサイルを自分へ向かせるべく、色々と調べてみるとこんな便利な関数がありました。それはこちら。
transform.LookAt()
()の中に向かせたい物体の位置を書き込みます。
今回の場合だと、transform.LookAt(myplane.transform.position); を敵機のミサイルの動きを書いているスクリプトに追加します(myplaneというのは僕が操作している戦闘機のオブジェクト名です)。
すると以下のような感じになります。
Today, I have a little progress.
— 超おーみん2@Unity民族 (@Ooooooomin_365) 2019年3月12日
the angle of missiles look at me.
And I make my Lockon system deal with enemy's missile.#unity #unity3d #gamedev #indiegamedev pic.twitter.com/eYmFTJgMa1
敵機からのミサイルが自分の方向を向いて飛んでくるのが分かるかと思います。
逆に自分のミサイルを相手の方向へ向かせたいときは、transform.LookAt(相手の位置)を自分の戦闘機のミサイルに設定してみてください。
もし何か分からないこと等がありましたらコメントかTwitterへ質問くださいませ~。
では!
※他にも色々なUnityの記事を書いていますのでぜひ。
【ホーミングミサイル】
【Unity】ホーミングミサイルの作り方。 - おーみんだよ。
【追いかけてくる敵】