ゲームに広告を入れます。Ad-Virtuaです。動画をどうぞ。
虹色の長方形のところに広告の動画が配信されます。スマホゲームによくあるバナー広告などに比べ、導入は遙かに楽でした。自分のゲーム3本に入れています。
その長方形の部分は広告のための3Dオブジェクトです。Unityのプログラミングで出てくるQuadやパーティクルなどはゲームオブジェクト(GameObject)を持ちます。同じようにこの長方形にもゲームオブジェクトがあり、位置や向きをゲームオブジェクトを用いてコントロールできます。空間内のこの位置にこういう向きで置く、などとできるわけです。3Dの建物の窓のところに広告を配置するとか。面白いと思います。
今回、カメラは動画のように上下左右に移動させています。広告は3Dオブジェクトですからカメラが動けば広告も動いてしまうはずですが、動画ではスクリーン上で固定された位置に見えています。このように、カメラを動かしてもオブジェクトは決まった位置に映す方法を2つ、紹介しましょう。
●方法1
最も簡単なのは広告のオブジェクトをカメラの子にすることです。その上で広告が適切な位置に見えるよう、インスペクタで広告の座標を調整すればよいだけです。
●方法2
関数、Camera.main.ScreenToWorldPoint(vec) を使います。どういう関数なのか、ブログの記事にしてあります。
ここでも簡単に説明しておきましょう。例えば、
Vector3 vec = new(Screen.width / 2, Screen.height, 200);//①
Vector3 w = Camera.main.ScreenToWorldPoint(vec);//②
とし、このwを広告の座標にすると、次の写真のようにスクリーンの上部に広告の下半分が表示されます。
「Ad-Virtua」と書いてあるのが広告(下半分)です。①のScreen.width 、Screen.height はそれぞれスクリーンの幅、高さです。スクリーン座標は左下が(0, 0)、右上が(Screen.width - 1, Screen.height - 1)です。①のx成分、y成分でスクリーン上の位置を表します。広告(のちょうど真ん中)をスクリーン座標(Screen.width / 2, Screen.height)の位置に映す、ということです。z成分の200は座標ではありません。カメラが向いている先、距離200のところにある平面上に広告を置く、ということです(①のvecはx、y成分とz成分は意味が違う)。実験すると分かりますが、カメラのrotationを変化させ、少し上を向かせたりすると当然景色は変わりますが広告の映り方は上の写真と同じです。スクリーン上部に広告の下半分が映るのです。この関数はとにかくカメラの向いている先、距離200の位置にある平面上の点vecで、スクリーン座標が(Screen.width / 2, Screen.height)であるようなものを計算してくれるのです。200でなく400にするともちろんより小さく映ります。
説明のためにこういう映し方にしました。実際には広告は全部見えるよう、調整します。
製作中のゲームは大変な部分は終わりました。あとはバランス調整(プレイヤー側が強すぎたりゲーム側が強すぎたりしないようにする)、遊び方を書いたり、公開の手続きをしたり、……です。ここまでいろいろありました。苦労したけど勉強になった!!