この講座はロックマン風2Dアクションゲームの作り方講座の第10回です。
前回まででザコ敵からギミックまで、ステージを構成するゲームシステムを一通り開発しました。
前回の記事:
まだボス敵は未実装ですが、ここまでの機能を活かして本格的なゲームステージを作成することが可能です。
あともう少しアクションゲームのステージ構築に必要な機能を整えつつ、ここでタイプの異なる8種のゲームステージの作成に挑戦してみましょう。作るステージの種類は以下の通り。
- はじめての森:ゲームの基本操作を習得する
- 高台の森:ジャンプや跳躍スキルを活用して進む
- 空中庭園:リフトギミックと浮遊する敵を多数配置
- 氷の雪原:つるつる滑る床を実現
- 大都会:電気スイッチギミックを使って先へ進む
- 水族館:水中レイヤーと浮力を使ったアクションを実現
- 砂漠:サソリが多数出現
- 星空と百獣の王:全ギミックと敵キャラを活用して仕上げ
個性豊かな8つのステージを構築しロックマン風2Dアクションゲームのステージを仕上げていきます。
水中ステージに必要な水中レイヤーをUnityで実装
他のステージを作成する前に水中ステージの制作にも対応できるよう追加機能を実装しておきます。
水中用のマップタイルはLayer0のパレット下部にありますが、これをそのままLayer0のTilemapに描きこんでも背景に水が存在しているのみです。
水のタイルのみを描きこむ新たなTilemapレイヤーを導入して水中の動作を実装していきましょう。
StageManager/Gridオブジェクト以下に新たなRectanglarのTilemapオブジェクトを追加します。名前はLayer_Waterとしました。
Layer0の時と同様にTransformのZ座標を少し0よりも大きくしておくとアクターと重なった時に綺麗に描画されます。今回はLayer_WaterのX,Y = 0, Z = 0.1にしておきます。
このレイヤーを対象にして水のタイルマップを描き込んでみましょう。[Window]タブ→[2D]→[Tile Palette]をクリックで開Active_TileMapをLayer_Waterにし、Palette_Layer0の水のタイルマップを配置します。今回は動作確認用なので適当な配置で大丈夫です。
続いてLayer1の時と同様にこのオブジェクトにコンポーネントを付与していきます。
TilemapCollider2D、Rigidbody2D、CompositeCollider2Dの3つが必要です。
TilemapCollider2DはUsed By Compositeをオンに、
Rigidbody2DはBody TypeをKinematicにします。
CompositeCollider2Dの設定はLayer1の時と異なります。
水タイルはあくまで背景として使用するのでIs Triggerはオンにします。
そしてGeometry TypeにPolygonsを指定してください。
このGeometryTypeは当たり判定の形状に関わる設定で、初期設定のOutlinesではオブジェクトの外周にしか当たり判定が存在しなくなります。
これをPolygonsに変える事でオブジェクト内部にも判定を持たせることができます。水タイルのある場所ならどこにいても水中判定にする必要があるためこの設定が必要になります。
水中判定処理の実装 キャラクターが水中を泳げるようになる
ActorController側に水中モードの処理を追加し、それを外部から切り替えられるようにします。
まとめ
横スクロール2Dアクションゲームのステージに必要な機能を一通り開発し、実際に本格的な8種類のステージを作成しました。
いよいよ次回からアクションゲームの花形であるボス戦を実装していきます。そのためにボスエネミーの作成から始めていきましょう。ボスは複雑な行動パターンを持ちますが、その実装方法を様々なアプローチで試していきます。
次の記事:
コメント