原カバンは鞄のお店ではありません。

Unityを使ったゲーム制作のあれこれを綴っていきます。

【Unity】窓シェーダーを使ってみた

ゴール前が一番しんどい

どこかのブログに「ゲーム作りは80~90%出来上がってからが大変」みたいな記載があって、当初はそれを疑っていたのですが、いざ自身が制作する身になってみると本当にその通りらしく、3日間頭を抱えたバグの原因がスクリプトにたった一行足らなかっただけだったりして、仕様書も書かずに行き当たりばったりで作っている自分が悪いとはいえ、ゴールを目の前にして足踏み状態が続く苛立ちとか心の叫びを文字におこしたら結構すごいわ、とか、わけの分からない言葉が頭を巡っている日々が続いています。

 

窓シェーダー

そういえば以前「窓越しにオブジェクトを表示する」窓シェーダーを紹介したのですが、そのときは当該の記事をリンクするだけで実際のユースケースについては触れていませんでした。

 

styly.cc

窓シェーダーを使用すると「窓越しにオブジェクトを表示する = 窓越しに見ないとオブジェクトは表示されない」といった表現が可能になるのでビックリするような仕掛けを作ることができます。

 

使い方も簡単で「窓」オブジェクトと「窓の向こうに置く」オブジェクトのそれぞれに専用のシェーダーをアタッチするだけです。

 

実際のシェーダーのコードは上記のリンクを参照してください(コードの転記はしません)。

 

こんな感じの絵を作る

f:id:Karvan:20190205232731p:plain

 

「Dull Things No Life」ではタイトル画面でMoterBikeが登場するアニメで使用しています。MoterBikeが転送されて現れるようなイメージを表現したかったんです。

 

作り方は単純でMoterBikeに「窓の向こうに置く」用シェーダを適用して、「窓」側のオブジェクトの奥(カメラから見て)に配置
ただ、「窓」が一面だけでは立体感がでないので二面用意して、その上下にそれっぽいスプライトを配置しています。

 

f:id:Karvan:20190205232952p:plain

 

こんな感じ、ちなみに「窓」側のオブジェクトは見えない(表示されない)です。

で、後は「窓」側のオブジェクトのサイズをDoTweenを使って動かします。

 

f:id:Karvan:20190205233050g:plain

 

結構いい感じに出来たのではないでしょうか?

 

で、ここから宣伝

「Dull Things No Life」では主に柱やCUBEなどが自機であるMoterBikeの前に立ちふさがりますが、それ以外にもステージによっては特殊な動きで自機の行く手を阻む障害物が存在します。

 

これらの障害物はその動作を良く見れば回避方法は分かるのですが、初見では意外と厳しいかもしれません。MoterBikeも結構な速さで動いているし。
なのでレビューサイト等で「初見殺しじゃん、クソゲー」とか言われない為にも、その幾つかを回避方法とあわせて紹介したいと思います。

 

Missile

空中から自機に向かって飛んでくるのでスライディングでその下を潜り抜けて回避します。自機が移動しても追尾して真直ぐ飛んでくるのでかわすタイミングが難しい障害物です。

f:id:Karvan:20190205233418g:plain

 

どうしても難しいなら自機をローリングさせれば回避できます。

f:id:Karvan:20190205233454g:plain

 

Rain

天井から無数のBOXが降り注ぎます。近づくと安全地帯が表示されるのでそちらに進んで回避します。安全地帯にはBOXが降って来ません。

f:id:Karvan:20190205233609g:plain

 

Box

上空に向かってレーザーを発射します。一部のBOXからは発射されないので、その空いたところをジャンプして回避します。
動きを良く見るとレーザーを発射するBOXは事前に回転するので、回転しないBOXの位置へ自機を移動⇒ジャンプします。

f:id:Karvan:20190205233831g:plain

 

この他にもまだまだあるのですが、それは次回以降に紹介したいと思います。

 

 

◇プライバシーポリシー

●個人情報の利用目的

当ブログでは、メールでのお問い合わせ、メールマガジンへの登録などの際に、名前(ハンドルネーム)、メールアドレス等の個人情報をご登録いただく場合がございます。

これらの個人情報は質問に対する回答や必要な情報を電子メールなどをでご連絡する場合に利用させていただくものであり、個人情報をご提供いただく際の目的以外では利用いたしません。

●個人情報の第三者への開示

当サイトでは、個人情報は適切に管理し、以下に該当する場合を除いて第三者に開示することはありません。

・本人のご了解がある場合
・法令等への協力のため、開示が必要となる場合

個人情報の開示、訂正、追加、削除、利用停止
ご本人からの個人データの開示、訂正、追加、削除、利用停止のご希望の場合には、ご本人であることを確認させていただいた上、速やかに対応させていただきます。

アクセス解析ツールについて

当サイトでは、Googleによるアクセス解析ツール「Googleアナリティクス」を利用しています。

このGoogleアナリティクスはトラフィックデータの収集のためにCookieを使用しています。このトラフィックデータは匿名で収集されており、個人を特定するものではありません。
この機能はCookieを無効にすることで収集を拒否することが出来ますので、お使いのブラウザの設定をご確認ください。

●免責事項

当サイトからリンクやバナーなどによって他のサイトに移動された場合、移動先サイトで提供される情報、サービス等について一切の責任を負いません。

当サイトのコンテンツ・情報につきまして、可能な限り正確な情報を掲載するよう努めておりますが、誤情報が入り込んだり、情報が古くなっていることもございます。

当サイトに掲載された内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。

●プライバシーポリシーの変更について

当サイトは、個人情報に関して適用される日本の法令を遵守するとともに、本ポリシーの内容を適宜見直しその改善に努めます。

修正された最新のプライバシーポリシーは常に本ページにて開示されます。