前回、Unityでビルボードを実現、という話を書きました。
www.omoshiro-suugaku.com
調べると、オブジェクトには、それを構成する点が4点しかない、本当の平面みたいなものがあるようです。3DオブジェクトのQuadというやつです。実験してみました。これに絵を貼り付けて表示してもビルボードになりました。
赤がx軸、緑がy軸、青がz軸です。Quadは(Planeとは違って)生成時に立ち上がった状態になります。写真はQuadのこちら側、つまり画面側に貼り付くようです。下の図は写真を貼り付けたところです。
そしてLookAt()は、オブジェクト生成時のz軸の向き(つまり今回の話では写真の裏側、犬の見えない側)が目標を向く仕様だそうです。要するに、単純にLookAt()を使うと写真の裏側が目標を向いてしまい、何も見えなくなってしまうのです。なのでLookAt()の後、ローカルのy軸を中心に180°、回転させなければなりません。コードは以下の通りです。
GameObject inuo2 = GameObject.FindWithTag("Inuo2"); GameObject target = GameObject.FindWithTag("target"); inuo2.transform.LookAt(target.transform); // ローカルのz軸中心に180度回転するQuaternionを作成 var rot2 = Quaternion.AngleAxis(180f, inuo2.transform.up); inuo2.transform.rotation = rot2 * inuo2.transform.rotation;// Quaternionを使って回転させる
結果の画像は次の通り。
これでやればいいかな……。犬の写真の面が目標の球の方を向いています。敵の発射するたくさんの弾なんかはこれで十分な気がします。
Unityの本をまた買いました。3冊目です。
まだザッと眺めたくらいですが、3冊の中ではこれが一番難しいと思います。実際に遊べそうなゲームを4個作っており、参考になりそうな情報がたくさん載っています。ある程度読んだらレビューします。最初に買った2冊は順に、次の通りです。内容も、買った順も正解でした。1冊目だけでも一応、ゲームを書けるようになるでしょう。2冊目で知識を整理し、より高度なことを勉強できます。この辺までで、あとはうまく組み合わせればいいゲームができると思います。ネットの情報を役立てる知識も身につきます。3冊目は、2冊目までで書いていないこともたくさん載っていそうで、さらに質を高くできると思います。
ぼくは3冊目は実際にはコードを入力して実験して……とはやらないと思います。もう一刻も早く自分のゲームを書きたくて仕方ないので。