床の登録
画面の調整が終わりました。それでは、本日の本題の床の追加をしていきましょう。床は正方形の画像を横に並べることで自由にサイズを調整できるようにします。
Projectに画像を追加する
本記事のassets.zipを解凍した中にある「floor.png」をProjectウィンドウのImages以下にドロップします。
![floor.pngをProjectに追加する](http://cz-cdn.shoeisha.jp/static/images/article/8136/8136_10.gif)
ProjectからfloorをHierarchyウィンドウに配置する
追加したfloorをHierarchyウィンドウにドロップします。Sceneウィンドウにドロップしても同じ結果が得られます。
![floorをHierarchyウィンドウに配置](http://cz-cdn.shoeisha.jp/static/images/article/8136/8136_11.gif)
HierarchyウィンドウからProjectウィンドウに戻す
Hierarchyウィンドウに追加したfloorを今度は逆にProjectウィンドウにドロップします。
すると、以下ののように画像として追加したfloorとは別のアイコンのfloorが追加されます。これがprefab(プレハブ)です。
![prefab化したfloor](http://cz-cdn.shoeisha.jp/static/images/article/8136/8136_12.gif)
同じ名前のfloorが2つ存在すると混乱するので、ProjectウィンドウにPrefabsというフォルダを追加してprefab化したfloorをドロップします。
![prefab化したfloorをPrefabsフォルダに移動](http://cz-cdn.shoeisha.jp/static/images/article/8136/8136_13.gif)
prefabにComponentを追加する
このままではキャラクターは床として配置したfloorをすり抜けてしまいます。
以前に、地面をキャラクターがすり抜けてしまう対応として地面のGameObjectにComponentを追加したことを思い出してください(第2回)。
prefab化していない場合、画面に配置した床のGameObjectすべてにComponentを追加する必要がありますが、prefab化した場合、オリジナルとなるfloorにComponentを追加することで画面に配置するすべてのコピーにそれを適応することができます。
Prefabsフォルダに移動したfloorをクリックします。Inspectorウィンドウから「Add Component」-「Physics 2D」-「Box Collider 2D」とクリックして「Box Collider 2D」Componentを追加します。
![prefabにComponentを追加](http://cz-cdn.shoeisha.jp/static/images/article/8136/8136_14.gif)
Box Collider 2DのSizeの値をGameObjectと合うように調整します。今回はX、Yの値を2.5に変更します。
![Box Collider 2Dのサイズを調整](http://cz-cdn.shoeisha.jp/static/images/article/8136/8136_15.gif)
画面に配置
prefab化したfloorを画面(Sceneウィンドウ)に並べて、下画像のように画面に配置してみましょう。それぞれのfloorをクリックすると、InspectorウィンドウでBox Collider 2Dコンポーネントが追加されていることが確認できます。
![Sceneウィンドウにfloorを追加](http://cz-cdn.shoeisha.jp/static/images/article/8136/8136_16.gif)
床の位置や高さは自由に配置して構いませんが、横に並べた床はInspectorウィンドウのTransformのPosisionのYを同じ値にして、それぞれの高さがぴったり合うようにします。
![Inspectorウィンドウから床の高さをそろえる](http://cz-cdn.shoeisha.jp/static/images/article/8136/8136_17.gif)
プログラムの調整
床の位置が高すぎると、キャラクターのジャンプが届かず床に乗れません。プログラムのジャンプ処理の値を調整してキャラクターが床の上に乗れるようにしましょう。
GameManager.csのUpdateメソッドの以下の部分を修正します。
// スペースキーでジャンプ // ジャンプ中はスペースキーが押されてもさらに上昇しない if (Input.GetKeyDown("space") && this._charactorScript.isJumping == false) { this._moveCharactor(Vector2.up * 400f); }
400の部分を600に変更します。
// スペースキーでジャンプ // ジャンプ中はスペースキーが押されてもさらに上昇しない if (Input.GetKeyDown("space") && this._charactorScript.isJumping == false) { this._moveCharactor(Vector2.up * 600f); }
これでキャラクターが床の上に乗るようになりました。
![キャラクターが床に乗れるようになった](http://cz-cdn.shoeisha.jp/static/images/article/8136/8136_18.gif)
まとめ
今回はカメラを調整することで画面の表示を変更する方法。プレハブの利用方法を学びました。
キャラクターがジャンプして床に乗れるようにはなりましたが、今回の完成サンプルを動かしてみると、いろいろと動作として気になる部分が見られるようになってきました。「床との接しかたによってキャラクターが回転して転ぶ」「ジャンプの判定がおかしい」などです。
次回は、これらの動作を調整しながら、Projectウィンドウの内容を整理、プログラムの値を変えながらゲームの調整をしていく方法を紹介します。