CodeZine(コードジン)

特集ページ一覧

速習 Unity 2Dゲーム開発
~第7回 プレハブによる床の追加

速習 Unity 2Dゲーム開発 第7回

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2014/11/27 14:00
目次

床の登録

 画面の調整が終わりました。それでは、本日の本題の床の追加をしていきましょう。床は正方形の画像を横に並べることで自由にサイズを調整できるようにします。

Projectに画像を追加する

 本記事のassets.zipを解凍した中にある「floor.png」をProjectウィンドウのImages以下にドロップします。

floor.pngをProjectに追加する
floor.pngをProjectに追加する

ProjectからfloorをHierarchyウィンドウに配置する

 追加したfloorをHierarchyウィンドウにドロップします。Sceneウィンドウにドロップしても同じ結果が得られます。

floorをHierarchyウィンドウに配置
floorをHierarchyウィンドウに配置

HierarchyウィンドウからProjectウィンドウに戻す

 Hierarchyウィンドウに追加したfloorを今度は逆にProjectウィンドウにドロップします。

 すると、以下ののように画像として追加したfloorとは別のアイコンのfloorが追加されます。これがprefab(プレハブ)です。

prefab化したfloor
prefab化したfloor

 同じ名前のfloorが2つ存在すると混乱するので、ProjectウィンドウにPrefabsというフォルダを追加してprefab化したfloorをドロップします。

prefab化したfloorをPrefabsフォルダに移動
prefab化したfloorをPrefabsフォルダに移動

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を追加
prefabにComponentを追加

 Box Collider 2DのSizeの値をGameObjectと合うように調整します。今回はX、Yの値を2.5に変更します。

Box Collider 2Dのサイズを調整
Box Collider 2Dのサイズを調整

画面に配置

 prefab化したfloorを画面(Sceneウィンドウ)に並べて、下画像のように画面に配置してみましょう。それぞれのfloorをクリックすると、InspectorウィンドウでBox Collider 2Dコンポーネントが追加されていることが確認できます。

Sceneウィンドウにfloorを追加
Sceneウィンドウにfloorを追加

 床の位置や高さは自由に配置して構いませんが、横に並べた床はInspectorウィンドウのTransformのPosisionのYを同じ値にして、それぞれの高さがぴったり合うようにします。

Inspectorウィンドウから床の高さをそろえる
Inspectorウィンドウから床の高さをそろえる

プログラムの調整

 床の位置が高すぎると、キャラクターのジャンプが届かず床に乗れません。プログラムのジャンプ処理の値を調整してキャラクターが床の上に乗れるようにしましょう。

 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);
}

 これでキャラクターが床の上に乗るようになりました。

キャラクターが床に乗れるようになった
キャラクターが床に乗れるようになった

まとめ

 今回はカメラを調整することで画面の表示を変更する方法。プレハブの利用方法を学びました。

 キャラクターがジャンプして床に乗れるようにはなりましたが、今回の完成サンプルを動かしてみると、いろいろと動作として気になる部分が見られるようになってきました。「床との接しかたによってキャラクターが回転して転ぶ」「ジャンプの判定がおかしい」などです。

 次回は、これらの動作を調整しながら、Projectウィンドウの内容を整理、プログラムの値を変えながらゲームの調整をしていく方法を紹介します。



  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:速習 Unity 2Dゲーム開発

もっと読む

著者プロフィール

  • 西村 誠(ニシムラ マコト)

     Microsoft MVP Windows Platform Development。  Flash、PHPの開発経験もあり国産ECサイト構築フレームワーク「EC-CUBE」の公式エバンジェリストでもある。  ブログ:眠るシーラカンスと水底のプログラマー  著書:基礎から学ぶ Windows...

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5