SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

速習 Unity 2Dゲーム開発

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

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

  • X ポスト
  • このエントリーをはてなブックマークに追加

床の登録

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

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ウィンドウの内容を整理、プログラムの値を変えながらゲームの調整をしていく方法を紹介します。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
速習 Unity 2Dゲーム開発連載記事一覧

もっと読む

この記事の著者

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

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/8136 2014/11/27 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング