Unityでは2Dのエディターを使用してスーパーマリオの様な横スクロールアクションを作成する事ができます。

以前、Unityのタイルマップ機能を使って2D横スクロールアクション用のマップを作成しましたが(今回もおさらいはします)、今回はそのマップ上にプレイヤーキャラクターを配置して、マップ上に着地(重力と当たり判定の付与)をさせる所までを作ってみます。

リーベルリーベル

プレイヤーとなるキャラクターを配置できるとそれだけでテンションが上がります!
ゲームを作っている!という実感が湧いてきます。

Unityで2Dプレイヤーキャラクターを配置する事前準備

プレイヤーキャラクターを配置するためには、簡単ではありますが準備が必要になります。まずはその準備を行いましょう。

キャラクター素材の準備

キャラクター素材は以下のUnityアセットを使います。
※マップを作成した時と同じアセットになります。

マップの準備

プレイヤーキャラクターを配置して操作するためには、キャラクターが動き回るためのマップが必要になります。冒頭でもお伝えしている通り、マップについては以前作成したものをそのまま活用したいと思います。

マップの当たり判定

マップを準備したら、タイルマップ用の当たり判定「Tilemap Collider 2D」も付与しておく必要があります。当たり判定を付与しないと、キャラクターに重力を与えた時に、マップをすり抜けてしまうのです。
「Tilemap Collider 2D」については、上記のタイルマップの作り方の記事でも紹介しています。

3Dでプリミティブのオブジェクトや、アセットを使用した場合は、デフォルトでコライダーが設定されている事もあるのですが、2Dの場合は基本的に自分でコライダーを設定する事になると思います。

タイルマップのInspectorウィンドウを開いて「Tilemap Collider 2D」を追加しましょう。

■「Tilemap Collider 2D」を追加

Unityで2Dプレイヤーキャラクターを配置する

ではプレイヤーキャラクターを配置してみましょう。

アセットを取り込む

用意しているアセットをHierarchyウィンドウにドロップします。

この時、用意されているスプライトを全て選択した状態でドロップする様にして下さい。

■スプライト全てを選択してHierarchyウィンドウにドロップ

ドロップをするとアニメーション名を決める様に促されると思います。ここでファイルを保存しておけば、キャラクターのアニメーションファイルが作成されます。

いくつかの画像をまとめて取り込む事で、勝手にアニメーション化をしてくれるという訳です。便利!

実行してみる

さて、プレイヤーのアニメーションもできたので、実際の実行結果も見てみましょう。

■実行結果

ん?プレイヤー小さっ!

こちらの画像はこれでも拡大しているのでプレイヤーが見えますが、実際はすごく小さいアニメーション画像になっているはずです。画面下に生えている草の大きさと比較するとすごく小さくなっています。

タイルマップを作成した時と同じで画像の「Pixels Per Unit」を最適化しなければなりません。アセット画像を一つクリックして「Pixels Per Unit」を確認しましょう。

以下の様に「32×32」となっているはずです。

■アセット画像を一つクリック

アセット(4画像)を全て選択した状態でInspectorウィンドウを開いて「Pixels Per Unit」を「32」に変更しましょう。変更したら「Apply」ボタンを押すのを忘れずに!

■「Pixels Per Unit」を「32」に変更

再度実行してみる

再度実行してみると、以下の様に適切な大きさでプレイヤーが配置された事が分かります。アニメーション形式なので動いていますね^^

■実行結果

Hierarchy (ヒエラルキー) ウィンドウにスプライトをドラッグしただけで、自動でアニメーションを実装してくれるってすごくないですか?

細かいアニメーションをつける場合は手動で設定が必要になるのですが、今回は一旦これで大丈夫です。

Unityで2Dプレイヤーキャラクターへの重力と当たり判定の付与

上記の実行画面を見てみるとプレイヤーが画面の中心で動き続けているだけです。実際は地面に着地してほしいですよね。

3Dの場合は大抵のオブジェクトを配置したら自動で重力と当たり判定とが付与されるのですが、2Dの場合は現状手動で付与する必要があります。

以下の2つのコンポーネントをプレイヤーのオブジェクトに付与しましょう。

  • Rigidbody 2D(重力を付与するコンポーネント)
  • Box Collider 2D(当たり判定を付与するコンポーネント)

■Rigidbody 2D

■Box Collider 2D

2つのコンポーネントを付与した状態で再度実行をすると以下の様に、地面に着地します。

■重力と当たり判定を付与後の実行画面

無事にキャラクターを配置して地面に着地させる事ができました。

※重力や当たり判定については細かい設定が必要になりますが、それは別の記事でご紹介します。

まとめ

今回は2D横スクロールアクションゲームのプレイヤーキャラクターを配置する方法と地面へ設置する方法ついて紹介をしました。

流れをざっとおさらいします。

おおまかな流れ

  • キャラクター素材(アセット)の準備をする
  • キャラクターの配置をする
    ※自動でアニメーションされる
  • 必要に応じて「Pixels Per Unit」等の調整を行う
  • キャラクターに重力と当たり判定を付与する

プレイヤーキャラクターを配置すると、それだけでもゲームっぽくなります。

ここからどんどんゲームの世界を作っていきましょう!