「Project」→「Create」の「Render Texture」を選択する。「New Render Texture」が作成されるので、名前を「SkeletonRenderTexture」としておく(図7)。
図7で作成した「SkeletonRenderTexture」を選択して、「Inspector」を表示させ、「Size」に1024×1024と指定する(図8)。デフォルトの256×256では、「Cube」に投影される画像の画質が悪くなる。そこで1024×1024と指定すると画質が向上する。ここは重要なので設定を忘れずに行ってほしい。
図7で作成した、「SkeletonRenderTexture」を「Hierarchy」内の「Cube」の上にドラッグ&ドロップする(図9)。
「Main Camera」以外にもう一つカメラを追加する。「Hierarchy」の「Create」→「Camera」と選択し、追加した「Camera」を選択して、「Inspector」から、「Camera」の「Target Texture」に、右横にある「○に・」のアイコンをクリックする。表示される「Select RenderTexture」の「Assets」タブから「SkeletonRenderTexture」を指定する(図10)。
「Main Camera」は正面から「Skeleton」と「Cube」をとらえるように調整する。動画1のように「トランスフォームツール」を使って調整する。これはコツをつかまないとなかなか難しいが、「Camera Preview」を見ながら調整してほしい。
今度は「Camera」の位置を調整する。「Camera」は「Skeleton」を正面からとらえるように調整する。「Camera Preview」を見ながら行ってほしい。動画2になる。
動画2を見ると分かるが、「Camera」の位置を調整していくと、「Cube」に「Skeleton」が映り込んでいるのが分かるだろう。この「Skeleton」が「Cube」の真ん中辺りに収まるように「Camera」の位置を調整する。
「Hierarchy」から「skeleton」を選択し、「Inspector」の「Animation」を見ると、「idle」が指定されている、右横の「○に・」のアイコンをクリックして、「dance」を選択する(図11)。
このままだと、ダンスが一通り終わった後、Skeletonはダンスを止めてしまう。これでは都合が悪いので、永遠にダンスを繰り返すようにスクリプトを記述する。
「Hierarchy」から「skeleton」を選択し、「Add Component」から「New Script」を選択する。「Name」に「SkeletonDance」と指定し、「Language」に「Java Script」を指定して、「Create and Add」ボタンをクリックする。
「Inspector」に「Skeleton Dance」が追加されるので、「Script」の「SkeletonDance」をダブルクリックして「MonoDevelop」を起動し、リスト1のコードを記述する。
function Update () { GetComponent(Animation).Play("dance"); }
Update関数内に記述する。Playメソッドで「dance」のアニメーションを実行する。
Unity 4.6では、リスト2の記述でよかったが、Unity 5からは、リスト1のような記述に変わった。
animation.Play("dance")
このままではCubeに映る画像が暗いので、画面を明るくしてみよう。
その前に、「Plane」に「Texture」を適用させておこう。「Project」→「Assets」→「Ground textures pack」→「Dry ground」内にある「diffuse.tga」を「Plane」上にドラッグ&ドロップする(図12)。
では、次に「Hierarchy」の「Create」→「Light」→「Spotlight」を追加する。追加した「Spotlight」を「skeleton」の真上に持ってくる。「Inspector」の「Spot Angle」に「28」を、「Intensity」に「8」を指定する。「Spotlight」の位置は「Scene」と「Game」画面を切り替えながら設定する(図13)。
次に、「Directional Light」の位置を調整する。図12を見ると「Cube」の影が手前に伸びている。ということは太陽の光は後ろから差していることになる。これだと「Cube」に映る映像が暗くなるので、太陽を「Cube」の手前から当たるように調整する。動画3のように調整する。
「Directional Light(太陽)」の向きを変えると、「Cube」が明るくなっていくのが分かるだろう。
これで、Render Textureを使ったサンプルは完成だが、空の風景がさみしいので、空の風景を設定しておこう。連載第1回の「UnityでWebカメラの画像をリアルタイムで複数テクスチャとして表示する&Kinectセンサーと連動させる」を参照してほしい。
今回はカメラが二つあるので、まずは「Main Camera」を選択しメニューの「Component」→「Rendering」→「Skybox」と選択する。すると、「Inspector」内に「Custom Skybox」の項目が追加される。「None(Material)」と書いてある場所に、「Project」の「Skyboxes」フォルダー内の、「Fixed Now」ボタンできれいにしておいた「.mat」画像をドラッグ&ドロップする。筆者は「DawnDusk Skybox.mat」を指定した。
同様な手順を「Camera」に対しても行っておく。要は二つのカメラにSkyboxの設定をすることになるのだ。
では、実行してみよう。動画4のようになるはずだ。
Copyright © ITmedia, Inc. All Rights Reserved.