[ミニゲーム製作日記]TempleRunっぽいランニングゲーム

GirigiriRunning ミニゲーム

今回はタイトル通り、よくあるエンドレスラン風のミニゲームを作ってみました。また製作期間は5日間ほどです。

完成したもの

以下の埋め込みリンクからプレイできます。(タイトルUIのレイアウトが雑なのは許してください…)

また今回のプロジェクトデータは以下のリンクから参照できます。

kanizabuza/GirigiriRunning_Zekki
学校に遅刻しないよう走って向かうゲームです。 - kanizabuza/GirigiriRunning_Zekki

実装内容

プレイヤーの横移動(未完成)

プレイヤーの横移動(端の場合はそれ以上移動しない)パターンごとに、SideMove内の条件分岐で処理を分けています。

またSideMoveをコルーチンで実装し、Lerpを用いることで横移動での位置補間を行おうとしました(コーディング途中で何故か補間されなくってしまったため挫折中です…)。

プレイヤーの走るタイル(床部分)とゴールの自動生成

Startメソッドで、実行時にtileQuantityの値分のタイルを生成しています。このとき生成するタイルの種類は、予めインスペクタ側で設定しておいたtileKindListからランダムに選択する仕様です。またタイル生成時は、生成したタイルをGameObject型のtileListに毎度加え、タイルを消す処理の際にこのリストを用いています。

AddListメソッドではプレイヤーの進みに応じてタイルを生成する処理(前述の方法と同様)を行っています。また処理軽減の都合上、タイルが一定数生成された際に、先ほどのtileListを用いてタイルオブジェクトを消去するDeleteTileメソッドを呼びます。

生成するタイルの総数はインスペクタ側でtotalTileQuantityとして設定可能で、totalTileQuantity以上生成された場合に、ゴールを生成するAddGoalメソッドを呼んでいます。

アイテムや障害物の自動生成

RandomGenerateObjectメソッドが呼ばれるごとに、予めインスペクタ側で生成するオブジェクトが設定されたItemListからランダムにオブジェクトを生成します。この際に、引数を参照してオブジェクトの座標を指定します(タイル生成時に必ずこのメソッドが呼ばれることを利用して、タイルの座標を取得しています)。

アイテムや障害物に接触した場合の処理

単純な仕組みですが、Colliderで当たり判定を行い、オブジェクトの名前・タグから条件分岐を行っています。StartCoroutineで呼ばれるメソッドは、一定時間後にプレイヤーを元の状態に戻す処理を割り当てています。

また集中線エフェクトは以下の記事を参考にしました。

制限時間の実装

以下の記事を参考に実装しました。

使用したアセット及び素材

アニメーション

3Dモデル

SkyBox

UI

  • Text Mesh Pro

以下の記事を参考にして、TextMeshProに日本語フォントを導入しました。

BGM&SE

訳あって久々の更新になってしまいました。これからも緩いペースですが、ちょっとずつでも記事を挙げていければと思います。どうぞよろしくお願いします。

コメント

タイトルとURLをコピーしました