いぬおさんのおもしろ数学実験室

おいしい紅茶でも飲みながら数学、物理、工学、プログラミング、そして読書を楽しみましょう

100日で50弾! Day 70/ Bullet35:プロペラショット

 100日チャレンジ『100日で50弾!』第35回、プロペラショットです。動画をどうぞ。

youtu.be

3DオブジェクトのQuad(propeller)を弾の子にし、プロペラの画像を貼ります。具体的には背景を透過にしたプロペラの画像を新しく作ったマテリアルにセットし、これをQuadにセットします。いらすとや様のオランダの風車のイラストの風車の部分を使わせてもらいました。回転の速さの計算のため、弾の生成時に乱数rndを決めておきます。弾を動かすときに弾の生成以来の時間を元に回転角を計算し、次の式でQuadに回転角を入れます。
--------------
float zrot = (弾生成以来の時間) * rnd;
Quaternion rot = Quaternion.Euler(0, 180, zrot);
propeller.transform.localRotation = rot;
--------------
これで、プロペラがローカルのz軸の周りを回ります。それとは別に、2行目の「180」はローカルのy軸周りに180°回すことを意味します。これをしないとQuadを裏から見ることになり、透明で何も見えません。Quadは画像を貼り付けると、片面からは見えますがもう片面からは見えないのです。ただ、今回は弾の動きを考えてQuadを裏から見られたときの対応はしていません。前回も同じくQuadを使っていますが、そのときはどちらから見られても大丈夫なように同じQuadを用意し(同じ画像を貼っておく)、裏表ひっくり返してピッタリ重ねています。

 

 年内はここまで。次回は1月2日です。いろいろあった1年で、勉強になりました。ただいま来年度勤める学校を探しています!