【Unity】「糸通しゲーム」を作る その5 レベルデザイン 編

【Unityの練習ゲーム作り 第一弾!】

ガラケーアプリでもヒットした、昔ながらの「糸通しゲーム」をUnityで作っています。

その1 大まかな設計を考えました
その2 糸と針の動作を実装しました
その3 当たり判定を追加しました
その4 スコアカウントとメイン画面,ゲームオーバー画面をつけました

今回は ゲームを面白くするレベルデザインを考えてみます。

難易度調整

難易度調整にはいくつか方法が考えられます。

  • 糸の操作性を悪くする
  • 針の隙間を小さくする
  • 針の速さを上げる

操作性は、プレイヤーに不快感を与えないギリギリのところに設定する必要があります。かと言って簡単過ぎると、単純なゲームな分 作業的になってしまいます。

実際に自分で試して、最適な値に設定します。

針の種類を増やす

1.幅の小さい針

幅の小さい針をクリアした際には 得られるスコアをアップし、単に難易度を上げるだけにはしないようにします。

2.透明になる針

アニメーションを使用し、透明になる針を作りました。最高難易度の針とします。

・・・

「通常針」,「幅の小さい針」,「透明になる針」をランダムに出現させるようにします。以下のコードでは、3種は等確率に出現します。

難度の高い針には、高スコアを与えます。今回はそれぞれの針に、タグを付けて実装することにしました。タグの種類によって ThreadeHari()の引数変えて、スコアを変化させます。

GameManagerのThreadeHari()も書きかえ、引数の値をスコアにプラスします。

こんな感じになりました。(注:更新スコアは上のコードと異なっています。)

針の出現確率を変える

上のコードでは3種の針の出現確率は同じでしたが、後半になるほど高難度の針が出現しやすくなるようにします。

スコアによって針の出現確率を変えます。スコアと出現確率の相関は以下のようにしました。

  • ~10 :(通常,幅小,透明)=(80, 20,   0[%])
  • ~20 :(通常,幅小,透明)=(60, 20, 20[%])
  • ~40 :(通常,幅小,透明)=(40, 40, 20[%])
  • ~70 :(通常,幅小,透明)=(20, 40, 40[%])
  • ~100:(通常,幅小,透明)=(  0, 60, 40[%])
  • 100~:(通常,幅小,透明)=(  0, 40, 60[%])

最初 配列 scoreArrayには、(1,0,0,0,0)が入っています。スコアが増えると配列中の0が、1, 2に更新されていきます。(39~49行目)

そして51,52行目で、配列の中からランダムに1要素を選択し、出現する針を変えています。

イメージはこんな感じ。

BGMをつける

その3で、ミスで爆発SEをつけたときと同じ要領で、針通過ごとにSEを付けていきます。クリアして爽快感を与えるSEが良いですね。

ゲーム全体にもBGMを付けます。Main Cameraにアタッチ!

完成!!

できました!Unity roomで公開しています(画像リンク)。是非一度遊んでみてくださいね。

所感

「糸通し」で使用したコードは、ほぼ参考書内容を改変して作りました。

本を読んてコードを写経しただけでは、全く身になっていませんね。簡単のものでも自分で作ってみることで、自身の技術になることを痛感しました。

その3の「衝突時にエフェクト」と、今回の「後半になるほど難度が上がる」は自分で考えて実装してみました(探せばどこかにはありそうですけど…)。作っていく内に なんとなく「こうすれば できそうかな」というのが、思い浮かんできます。

私のやり方は最良の方法ではないでしょう。

しかし、やりたいこと ⇨ Unityで実現するにはどうするか を考える

Unityに限らず、プログラムを学ぶ上で この蓄積が大事なんだと思います。

・・・

それでは、ここまでお付き合い頂きありがとうございました。

次は、モ◯ストっぽいゲームを作ってみようと考えています。乞うご期待(?)