MYMYゲーム制作室

アラ古希姉妹のゲーム制作日記

ボスの動き、弾の発射、やりたかったことが全部実装できた!

ボスがキツネくんを狙って、岩ブレットを連射してくる!

今日は、昨日できなかったことをまとめてやった。

1. ボスがずっとキツネくんの方を向くようにする。

2.    ブレットがボスの発射口で生成されて、キツネくんのいる方に発射される。

 

悩んだところ

●ふたつのオブジェクト(Aはスクリプトを張り付けている自分。Bは別のオブジェクト)の位置関係を調べて、AがBの方を向くようにしたかったわけだが、そもそも別のオブジェクトの位置を取得する方法が、あやふやだったので、そのあたりから確認しなくてはいけなかった。((´;ω;`) 

GameObject.Find(”B”)とやるのか、、、と悩んだけど、スクリプトの最初のところに

    public Game Object B;

と書いておくだけでOK !だった。

あとからインスペクターのフィールドにヒエラルキーからBのオブジェクトを放り込むだけで事足りることが分かった(*^_^*)それができれば、あとはGetComponent<Rigidbody2D>()とか、B.transform.positionとか、欲しい情報をなんとか取得できることが分かった。

 

●ボスを回転させる方法。3Dの情報は多いように思ったが、2Dでスクリプトをどう書くのかがわからなくて悩んだ。でもそういえば、この前ブレットの発射では変なことになってしまったが、あの時、ボスはキツネ君のほうを向いて回転していたんだったな。

没にしたスクリプトから、一部をコピーしてきて張り付けてみた。

var vec = (player.transform.position - this.transform.position).normalized;

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

この二行でうまく回転するようになった。

ただし、360度を超えて回転すると、その瞬間に画像が一瞬変になるので、それの修正は必要。今後の課題。

参考サイト

LookAtを2Dで再現するには - デジタルフロッグ (hatenablog.jp)

 

●ブレットを飛ばす方法。昨日まではワールド座標で(-1, -0.3, 0)のように指定した角度で飛ばしていたが、それはテストのためで、本当はボスの顔の向いている方向(つまりキツネくんのいる方向)に飛ばしたかったので、そこんところを修正する必要があった。さっき、ボスの向きをキツネくんの方に向けることができたので、簡単かとおもいきや、これが意外に難しく、さっきはボスのrotationだったのを、弾の飛ぶ方向として指定する方法が分からなくなってしまった。

参考サイト

【Unity】2Dでクリックした方向に弾を飛ばす【サンプル】 | TECH PROjin (pjin.jp)

これを参考に、マウスの位置のかわりに、キツネくんの位置を当てはめることで解決!

 

昨日までの課題は全部解決したので、これからは、弾に当たったらキツネくんのヘルスが減るようにして、それをUIのヘルスバーに表示するようにしたい。ボスのヘルスバーも作らなくては!(こん)