ゴール前が一番しんどい
どこかのブログに「ゲーム作りは80~90%出来上がってからが大変」みたいな記載があって、当初はそれを疑っていたのですが、いざ自身が制作する身になってみると本当にその通りらしく、3日間頭を抱えたバグの原因がスクリプトにたった一行足らなかっただけだったりして、仕様書も書かずに行き当たりばったりで作っている自分が悪いとはいえ、ゴールを目の前にして足踏み状態が続く苛立ちとか心の叫びを文字におこしたら結構すごいわ、とか、わけの分からない言葉が頭を巡っている日々が続いています。
窓シェーダー
そういえば以前「窓越しにオブジェクトを表示する」窓シェーダーを紹介したのですが、そのときは当該の記事をリンクするだけで実際のユースケースについては触れていませんでした。
窓シェーダーを使用すると「窓越しにオブジェクトを表示する = 窓越しに見ないとオブジェクトは表示されない」といった表現が可能になるのでビックリするような仕掛けを作ることができます。
使い方も簡単で「窓」オブジェクトと「窓の向こうに置く」オブジェクトのそれぞれに専用のシェーダーをアタッチするだけです。
実際のシェーダーのコードは上記のリンクを参照してください(コードの転記はしません)。
こんな感じの絵を作る
「Dull Things No Life」ではタイトル画面でMoterBikeが登場するアニメで使用しています。MoterBikeが転送されて現れるようなイメージを表現したかったんです。
作り方は単純でMoterBikeに「窓の向こうに置く」用シェーダを適用して、「窓」側のオブジェクトの奥(カメラから見て)に配置
ただ、「窓」が一面だけでは立体感がでないので二面用意して、その上下にそれっぽいスプライトを配置しています。
こんな感じ、ちなみに「窓」側のオブジェクトは見えない(表示されない)です。
で、後は「窓」側のオブジェクトのサイズをDoTweenを使って動かします。
結構いい感じに出来たのではないでしょうか?
で、ここから宣伝
「Dull Things No Life」では主に柱やCUBEなどが自機であるMoterBikeの前に立ちふさがりますが、それ以外にもステージによっては特殊な動きで自機の行く手を阻む障害物が存在します。
これらの障害物はその動作を良く見れば回避方法は分かるのですが、初見では意外と厳しいかもしれません。MoterBikeも結構な速さで動いているし。
なのでレビューサイト等で「初見殺しじゃん、クソゲー」とか言われない為にも、その幾つかを回避方法とあわせて紹介したいと思います。
Missile
空中から自機に向かって飛んでくるのでスライディングでその下を潜り抜けて回避します。自機が移動しても追尾して真直ぐ飛んでくるのでかわすタイミングが難しい障害物です。
どうしても難しいなら自機をローリングさせれば回避できます。
Rain
天井から無数のBOXが降り注ぎます。近づくと安全地帯が表示されるのでそちらに進んで回避します。安全地帯にはBOXが降って来ません。
Box
上空に向かってレーザーを発射します。一部のBOXからは発射されないので、その空いたところをジャンプして回避します。
動きを良く見るとレーザーを発射するBOXは事前に回転するので、回転しないBOXの位置へ自機を移動⇒ジャンプします。
この他にもまだまだあるのですが、それは次回以降に紹介したいと思います。