ミライノ記録

楽しく学べるアプリの紹介、モバイルアプリ開発記録等

Unityでホーミングレーザーやってみた 後編

さて、前回はレーザーを撃てたので、今回はこれをホーミングさせます。

先にホーミングな動画を御覧ください。

 


ホーミングレーザー作ってみたテスト

 

自機に見立てた青い三角が左右に移動したときに、レーザーが曲がって襲ってくるという動画でございます。

古い方法ですと、x1 - x2 / d・・・というような計算でやっていたのですが、さすがUnity様は簡単にできます。

 

 

まず、弾自体を前に進ませるという事で、スプライトをTranslateで移動させます。(座標変更での移動ではダメです)以下はY軸だけを変更しているので、上下に直線移動します。(speed は float で 3f とか)

 

f:id:jeffry1461:20170219183452p:plain

 

これに、回転運動を追加すれば追っていくようになります。それにはターゲットとなるゲームオブジェクト(今回の場合は自機)が必要となりますので、TARGETに指定してください。そして以下のコードを呼び出します。

 

f:id:jeffry1461:20170219184941p:plain

 

TARGET(自機)とthis(レーザー)の距離を計算し、それに合わせてthis(レーザー)を回転させるという事をしています。前進と回転を別個にした方が扱いやすいです。

この回転をUpdateから呼べばホーミングし、呼ぶのをやめれば直進で進む事になります。レーザー出現後の2〜3秒間の間は前進と回転を両方行い、その後は前進だけとすると、自機からレーザーがそれるのでプレイヤーが「よーし回避できた!」となって面白いかなと。そうしないと回避不能な気がします・・・。

 

このコードの弱点はレーザーが曲がる角度の限度を決めていないという事です。180度でも曲がってしまいます。本気を出すのでしたら、レーザーが曲がる角度の限度を時間がたつにつれて小さくするという手法をとると、ホーミング性能がすこしづつ甘くなるという事も表現できるかと思います。

 

ちなみに、弾が生成されたタイミングで1回だけ回転を行うようにすれば、狙った場所に向かって一直線にすすむ弾となります。(デモ動画でのオレンジの弾はそうしております)

 

 

f:id:jeffry1461:20170219185422p:plain

はい、Unityによるホーミングレーザー(的な表現)ができました。他にもやり方はあるでしょうけれども、これは2Dレーザーのシンプル版と思っていただければと思います。

 

 

ホーミングレーザーなんていう表現は自分には無理だからせめてホーミングミサイルを作ってみようというところから始まりました。しかし回転で追尾するものにトレイルをつけたらそれっぽくなりそう?? と思い調べてみた次第です。