太鼓の達人風のゲーム(音ゲー)を分解して作ってみよう

ゲームのスクリプトを分解
Scratch星人
Scratch星人

「モンスト風のゲーム」「にゃんこ大戦争風のゲーム」に続く、第三弾は「太鼓の達人風のゲーム」を分解してみましょう。

スクラッチで音ゲーを作る際に大変なポイントと解決法にも触れますので、ぜひ最後まで頑張ってみてください。

太鼓の達人風のプロジェクト

今回も恒例のlogic_labさんのプロジェクトをお借りしてリミックスさせていただきます。

こちらから開いてリミックスしていきましょう。

太鼓の達人は、右から左にノーツが移動してきてタイミングよく叩くゲームですが、今回リミックスした作品は、上から降ってくる仕様になっています。

この記事を最後まで学ぶことで横仕様に変更できる知識が身につくと思いますので、ぜひ後からチャレンジしてみてください。

ゲーム中に流れてくるマークのことを「ノーツ」と呼ぶそうです。
この機会に覚えておくといいかもしれませんね( ・∇・)

分解のポイントは大きく分けて3つです。

  • 音楽に合わせてノーツの動きを設定する
  • 叩いた時に精度を判定する
  • 演出効果などを設定する

音楽に合わせたノーツの設定

おそらくこの作業が音ゲー作りにおいて一番大変だと思います。

ステージのコードを開き、設定済みのコードを上のように変更してみましょう。
音楽もスクラッチに標準で入っているDance Aroundを選んでみてください。

テンポとは

まずは、テンポについてお話しします。

音楽に合わせて手拍子をしてみてください。
1秒間に2回くらいのペースで手を叩くことになると思います。

このペース(テンポ)のことをBPMと言います。
BPMとは、1分間に何回手拍子をするペースかを表す数字のことです。

Dance Aroundは139に設定しました。

インターネット上にはBPMを測定するツールなどもありますが、今回は、手拍子とノーツが落ちてくるスピードを目で見ながら調整してみましょう。


このコードを利用してテンポの数字を決めていきます。

手拍子よりも落ちてくるスピードが速い場合は数字を下げ、遅い場合は数字を上げてみてください。

〜拍休むとは

まず、1拍とは手拍子1回分の長さです。
0.5拍とは手拍子1回分の半分の長さです。
0.25拍とは0.5拍のさらに半分の長さです。

少しややこしいですが、拍の長さが小さいほど、休む(待つ)時間が短いと言うことです。

ちなみに「1拍休む」と「0.5拍休むx2」は同じ意味になります。

が、しかし、上のコードをスクラッチで実行すると、落ちてくるノーツのスピードが左右で異なってしまいます。

おそらくブロックの処理に掛かる時間の差が、間隔の差になっているのかもしれませんが、この現象がスクラッチでの音ゲー作成を難しくしている理由のひとつです。

まずはあまり複雑な作りにはせず、1拍休むを利用して作っていくことをおすすめします。
慣れてきたら、0.5拍などを利用してみましょう。

その際のポイントを以下の画像で説明します。

繰り返しのブロックの中のコードをひとまとまりと考えます。
そして、その数字の合計が4になるように作っていくことで、大きなトラブルにになることはないと思います。
(上は、1 + 0.5 + 1 + 0.5 + 1 = 4)

ここまでの設定が完了したら、もうほとんど完成したと思って大丈夫です。
(そのくらい、音と合わせるのは大変です・・。)

ノーツを叩いた精度を判定

クローンされたときのブロックには下に移動する設定、ブロック定義ではタイミングに応じた演出を発生させる内容を定義しています。

肝心の判定については「左向き矢印キーが押されたとき」で設定しています。
幅の広い「通過ライン」と、狭い「判定ライン」のスプライトを用意し、判定に利用しています。

「もしy座標 – -150の絶対値 < 13なら」とすることで、判定ラインのほぼ真ん中で叩くことが出来たら、一番良いCOOLをゲットできるようにしています。

判定ラインに触れてはいるけど、真ん中でない場合はGOOD、早すぎたり遅すぎたりで判定ラインに触れていない場合はBADという演出の流れです。

ちなみに、絶対値とは、正の数のことを言います。
(例えば、-4の絶対値は4、-89.2の絶対値は89.2といった感じです)

よってこの判定ラインを縦にして、x座標で判定することで、太鼓の達人のような右から左のノーツの動きの判定が可能になります。

演出を設定

logic_labさんの作品では以下のふたつの演出を設定しています。

  • COOL・GOOD・BADの文字を表示
  • 叩いた瞬間の波紋のような演出

文字の演出

波紋の演出

どちらのコードもよく見ると、とてもシンプルでありながら、演出を発生させることの出来る的確な内容です。

ポイントは、ノーツのx座標とy座標を取得して、変数に入れることで、ノーツの位置に演出を発生させています。

まとめ

音ゲーの基本的なコードと、注意点について解説をしました。

記事の中にも書きましたが、Scratch星人はテンポを設定することにとても苦労しました。
(うまくいったと思ってもまたズレたようになります・・)

しかし、世の中には面白い音ゲーを作成しているスクラッチャーが大勢います。

ぜひ、その方達の作品も参考にしながら、オリジナルの音ゲーを作ってみてください♪( ´▽`)

コメント

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