意外な結果
去年から出勤で歩く距離を増やしたり、食後に軽い運動をしたりと、色々頑張っていたのに健康診断に行ってみると体重もウエストも去年より増加していた皆さんこんにちは。食べる量が増えた記憶はないんですが、振り返ってみると週一ペースでポテチ食ってた。以後禁止します。
さて、Voodooのランゲームコンテストが終わったと思ったら、次は講談社のゲームクリエイターラボの応募が締め切り間近となっています。
こちらは必ずしもプロトタイプのリリースが必要なわけでなくて企画書のみでも応募可能です。
ゲームクリエイターラボのメンバーに選ばれると、少なくとも2年間は制作支援(制作資金、作業スペース提供、宣伝広告等)が受けられるようなので、私のような名もない開発者には有難い企画ですね。まぁ相当な数の応募があるでしょうが。
影を表示する
以前までは開発のターゲットをスマホゲームにしていたので、負荷の大きい"影"については極力表示しない方向で制作を進めていました。
しかし、先日のVoodooランゲームコンテスト用のゲームでは、ジャンプしながら移動するという仕様上、プレイヤーがジャンプ中の自機の位置を見失ってしまう恐れがあったため、地面に自機の影が落ちるようにしました。
で、やっぱり影があったほうがゲーム画面が映えるなぁ、と思ったわけです。
とは言えリアルタイムに影を表示するのはスマホでは高負荷には変わりないので、できるだけ軽く実装できる方法はないのか探っていました。
影シェーダー
上記はGitHubで公開されているシェーダーで、3Dモデルを影のように表示する事ができるシェーダーです。
「影のように表示する」とはどういう事かというと、Directional LightからY座標0の位置にオブジェクトを投影させて描く、という意味です。
つまりこのシェーダーを適用したオブジェクトはY座標0の平面に投影図として表示されることになります。
ザックリとした説明図
このため使い方としては、影を表示させいオブジェクトと全く同じオブジェクトを子オブジェクトとして配置して、そのオブジェクトにこのシェーダー(Custom/PlanarShadow)を適用します。
上の動画では恐竜のオブジェクトに影用の恐竜オブジェクトが子オブジェクトとして配置されています。
この影は通常の影のように地面に描かれているわけでなく、単にオブジェクトを投影図として表示しているだけなので負荷を低く抑えることができます。
ただ、投影するY座標はシェーダーのプロパティによって変更可能ですが、あくまで平面に対する投影図となる事は注意が必要です。
ただし、影を反映させる平面オブジェクトは必要ないため、地面の下が透けてみるような絵を簡単に作ることができます。
こんな感じのやつ、これをベースイメージとしてゲームクリエイターラボ向けの企画書を一つ作ろうかと思っています。