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

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

2Dシューティングゲームで立体っぽいキャラクタを使う

2Dシューティングゲームでも、主人公が立体に見える方がいい場合もあります。今回はモデリングなど大変な作業はせず、地味な努力で一応立体っぽい雰囲気を出す話です。あまりうまく撮れていませんが動画をどうぞ。

www.youtube.com

ぬいぐるみを16方向から写真撮影します。背景は白(ぼくは大きなカレンダーの裏を使いました)、ぬいぐるみは同じくらいの大きさに映るよう気をつけます。こうして撮った16枚の写真から、背景が α値=0 のpngファイルを16個作ります。Windowsなら付属の3Dペイントでできます。背景に柄があったりするとこの時点で苦労します(きれいに背景が抜けない)。これをアセットに取り込みます。ここからはスクリプトでそれぞれの画像からスプライトを16個取り出し、キャラクタの向きに応じて適切なスプライトをキャラクタにコピーすればよいのです。キャラクタを回転して眺めると、大きすぎたり小さすぎたりして不自然なスプライトが分かります。がんばってサイズを調整すればOKです。32方向からの画像を使えばより滑らかになるでしょうが、今回は16で手を打ちました。これはこれでまあ面白い効果とも言えるのでヨシ。しかし意外に明るさが問題になりました。最初8方向で試してみたのですが、動きはギクシャクです。もっと滑らかにするために16方向に変更しました。撮影は2日に渡り、日中と夜中にだったため、撮った写真に写ったぬいぐるみの明るさがまるで違いました(太陽の光は明るい!!)。画像編集ソフトで明るさを調整することもできますが、それも大変に思えて結局16枚、撮り直しました。また大きさの調整もかなり大変でした。

アナログ過ぎる方法ですね。ま、いいでしょう! 目標が同じでも実現の方法は何通りもある。それがプログラミングです。