本連載について
- 本連載では、私が趣味で個人開発しているAndroidゲームの作成過程を記録していこうと思っています。
- 作るゲームは2Dの横スクロールアクションにしていこうと思っています。
- 前回の記事はこちら
本記事について
本記事では以下の内容を記載します。使用するUnityは2020.3.27f1です。
- 前回の記事で説明した方法で作ったステージに、操作するメインキャラクターの画像を配置する。
- メインキャラクターがちゃんと立てるようにする。
ステージの見た目
-
前回の記事で説明した方法で適当にお絵描きし、以下のようなステージにしました。
- オブジェクトとかの配置はスカスカです。後で調整する予定。
- 前回の記事だけではキャラクターが動き回れるスペースが足りないので、背景画像を継ぎ足して広くしました。スクショの左上が全体像、左下はメインカメラからの見た目になっています。
メインキャラクター画像の配置
とにもかくにも操作するキャラクターがいないと始まりません。ということで以下の手順でキャラクター画像を配置します。
- 前回の記事の流れのままTile Paletteを開きっぱなしにしていると、Gridが表示されたままになって邪魔なので、TilePaletteを閉じます。
- 以下の画像のように、Pixel Adventure 1の中のMain Charactersの中から好きなキャラクタ―の画像を選んで、Sceneにドラック&ドロップします。
- すると、以下のようにキャラクターの画像が追加されると思いますが、一体どこにいるんだ???ってぐらい小さいキャラが配置されます。これはこの画像のPixels Per Unitを正しく設定していないために起こる現象で、以下の手順で修正します。
重力と衝突の設定
さて、いよいよUnityの本領発揮とも言える物理演算関連の設定を施して、キャラクターをとりあえず地面に立たせられるようにしていきたいと思います。
-
まず、Playerを選択して以下のスクショのように「Add component」をクリック。Rigidbody 2D(今回は2Dなので必ず2Dを選択してください。)を選択する。
-
まず、地面に衝突を定義します。今回地面はTilemapで作成しているので、以下のように地面として使用しているTerrainをクリックし、Add ComponentからTilemap Collider 2Dを選択します。
-
すると、ちょっと見づらいですが以下のように、Sceneに配置したTileに、先程まではなかった蛍光緑の強調表示がされると思います。これが表示されていれば衝突として定義されています。
-
しかし、上記だとすべてのタイルごとに衝突が定義されていて、地面同士も接触判定がされるような状態になっています。このままでも動作はしますが、計算リソースを無駄に食うのと、バグりやすくなると思うので、以下の手順で衝突定義を統合します。
- Terrainタイルマップを選択し、Add ComponentからComposite Collider 2Dを選択し、追加します。
- そのあと、以下のようにTilemap Collider 2Dの方にある、「Used By Composite」のチェックボックスをONにすると、先程までタイルごとに定義されていた衝突が、いい感じにまとめられて以下のようになっていることが確認できると思います。
- 最後に、Tilemap Collider 2Dを定義すると必ずRigidbody 2Dが付いてくるのですが、デフォルトのままだとこのRigidbody 2Dにも重力が働き、キャラクターと一緒に地面も下に落ちて行ってしまいます。これを防ぐために、以下のようにRigidbody 2DのBody TypeをStaticにして下さい。
-
これで地面に衝突が定義できましたが、Player側に衝突が定義されていないので、このままだとUnityのPlayボタンを押しても、先程のGif animationと同様Playerは下まで落ちて行ってしまいます。以下の手順でPlayerにも衝突を定義します。
これでとりあえずキャラクターを地面に立たせることが出来ました。お疲れさまでした。
次回予告、その他
- 次回はこのキャラクターをとりあえずPC上で動かせるようにしていく方法について書こうと思います。
- 最初に作ったこのアプリよりだいぶ成長した感がありますね。。。