前回タイルマップの作り方を学び、ステージの地形を作れるようになりました。しかしまだ主役のユニティちゃんが不在なので寂しい感じです。
そこでここからはプレイヤーキャラクターであるユニティちゃんを作り、動かせるように設定を行ったりスクリプトを書いたりしていきましょう。まずはユニティちゃんのゲームオブジェクトを作るところから始めます。
2Dアクションゲーム用キャラクターのゲームオブジェクトの作り方
では早速ですが、2Dアクションゲーム用のキャラクターオブジェクトを作っていきます。手順は次の通りです。
- ゲームオブジェクトを作る
- 必要なコンポーネントをアタッチする
- 接地判定用オブジェクトを作り、子として設定する
ゲームオブジェクトの作成
まず、手始めにゲームオブジェクトを作成します。ヒエラルキーで右クリックしてからのゲームオブジェクトを作り、次のように設定しましょう。
- 名前:Player
- タグ:Player
- レイヤー:Player
必要なコンポーネントのアタッチ
そうしたら、次はキャラクターに必要なコンポーネントをアタッチしていきます。次のコンポーネントをアタッチしてください。
- スプライトレンダラー
- アニメーター
- 2Dボックスコライダー
- 2Dサークルコライダー
- 2Dリジッドボディ
アタッチできたら、スプライトレンダラーにユニティちゃんの適当なスプライトを設定して、コライダーやリジッドボディを下の図のように設定してください。
ここまでできていれば、コライダー(緑の線)が下の画像のように表示されるはずです。
接地判定用オブジェクトの作成
最後に接地判定用オブジェクトを作り、プレイヤーキャラの子に設定します。「Player」オブジェクトを右クリックして空の子オブジェクトを作り、下の図のように設定してください。
そうしたら、これを2個複製して「GroundCheck_L」「GroundCheck_R」も作り、X座標を下の画像のようになるように調整しましょう。
ところで、こうして作ってみると「なぜこの接地判定用オブジェクトが必要なんだろう?」と思う方もいるかと思います。
接地判定用オブジェクトを作る理由は簡単で、より正確な接地判定ができるようにするためです。もしかしたら「コライダーだけでもいいんじゃないの?」と思うかもしれませんが、それだとコライダーの側面に何か触った時も「接地した」と判定してしまうので、壁に触れただけで何度もジャンプできるようになってしまいます。そこで、そのようなことを防ぐために接地判定用オブジェクトを用意しておくというわけです。
そしてもう少し詳しく言うと、実は接地判定オブジェクトを3つ用意したことにもちゃんと理由があります。それは、もし1個だけだと下の図のような状況で「接地した」と判定することができないということです。
これはとても重要なことなのでぜひ覚えておいてください。
さて、これでユニティちゃんのゲームオブジェクトを用意することができました。
ちなみに今回はユニティちゃんだけ作りましたが、この作り方は2Dアクションゲームのキャラクター全般に使うことができます。例えば敵キャラを増やしたい、といったときにも同じような作り方で対応できますので覚えておいてください。