今日は、昨日できなかったことをまとめてやった。
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のヘルスバーに表示するようにしたい。ボスのヘルスバーも作らなくては!(こん)