前回まででリズムゲームとしては完成しましたが、紹介した曲だけでなく自分のお気に入りの音楽を流してゲームを楽しみたいと思うはずです。
しかし、流す音楽を変えるとその音楽に合ったタイミングでノートを生成しなければいけませんし、そのために1つ1つノートを発生させる時間を計算して事前にリストに登録しておかなければいけません。
Scratchのリストはcsvファイルの取り込みが可能なので、Excelなどの表計算ソフトを使えば簡単にリストを作ることができるかもしれませんが、テンポや拍などの最低限の音楽の知識は必要になります。これは誰でも簡単にできるわけではないと思います。
そこで今回は、だれでも簡単に楽曲データリストが作れるように、ある程度汎用性を持たせて楽曲データリストを自動生成することができるブロック定義を作りましたので、それについて紹介します。
音ゲーの作り方の第5回目(最終回)は『音ゲーで自分の好きな音楽のリズムに合わせてノートを自動生成する方法』について解説します。
完成品
この章の内容をご自身のScratch環境に反映すると、同じ動きを再現することができます。
完成した動き(最終形態)
前回の記事の内容と同じです。
ダウンロード(右クリックで名前を付けてリンク先を保存)して見ることができます。↓↓↓ ただし、サイズが100MB近くありますので通信環境にご注意ください。
使用したスプライトと背景
スプライトは「Dノート」「Fノート」「Jノート」「Kノート」「DFJKキー押下」「判定ライン」「ノート生成」「エフェクト1」「エフェクト2」「エフェクト3」「楽曲データ」の11個、それと「ステージ」です。
【D/F/J/Kノートのスプライト】
以前の記事を参照してください↓↓↓(※リンクをクリックすると対象の文章まで飛びます)
【Scratch 3.0】音楽 音ゲーの作り方①【ノートの生成とキーイベント】(Tips)
【DFJKキー押下のスプライト】
「DFJKキー押下」スプライトはプログラム専用なのでコスチュームはありません。
【判定ラインのスプライト】
以前の記事を参照してください↓↓↓(※リンクをクリックすると対象の文章まで飛びます)
【Scratch 3.0】音楽 音ゲーの作り方①【ノートの生成とキーイベント】(Tips)
【ノート生成のスプライト】
「ノート生成」スプライトはプログラム専用なのでコスチュームはありません。
【エフェクト1/2/3のスプライト】
前々回の記事を参照してください↓↓↓(※リンクをクリックすると対象の文章まで飛びます)
【Scratch 3.0】音楽 音ゲーの作り方②【3つのエフェクト(視覚効果)】(Tips)
【楽曲データのスプライト】
「楽曲データ」スプライトはプログラム専用なのでコスチュームはありません。
【ステージ】
以前の記事を参照してください↓↓↓(※リンクをクリックすると対象の文章まで飛びます)
【Scratch 3.0】音楽 音ゲーの作り方①【ノートの生成とキーイベント】(Tips)
使用した音源
キー押下時の効果音
以前の記事を参照してください↓↓↓(※リンクをクリックすると対象の文章まで飛びます)
【Scratch 3.0】音楽 音ゲーの作り方①【ノートの生成とキーイベント】(Tips)
ライセンスフリーのクラシック音源
今回使用している音源は『パッヘルベルのカノン』と『モーツァルトのトルコ行進曲』です。
以下のサイトよりmp3ファイルをダウンロードしてScratchアップロードして使っています。こちらのサイトの楽曲は、ライセンスフリーなので無料で許諾なし(商用可)で利用できます。
クラシック名曲サウンドライブラリー(http://andotowa.quu.cc/)
完成したスクリプト
完成したスクリプトの全体です。
これまで「音ゲー」シリーズの記事内容と変更がないスクリプトは記載していませんので、それぞれ過去の記事を参照してください。
【D/F/J/Kノートのスクリプト】
前回までの内容で完成しているので省略します。
【DFJKキー押下のスクリプト】
前回までの内容で完成しているので省略します。
【判定ラインのスクリプト】
前回までの内容で完成しているので省略します。
【ノート生成のスクリプト】
前回までの内容で完成しているので省略します。
【エフェクト1/2/3のスクリプト】
前回までの内容で完成しているので省略します。
【楽曲データのスクリプト】
- 曲名:すべてのスプライト用
- 今何拍目?:すべてのスプライト用
- BPM:すべてのスプライト用
- 曲全体の時間(秒):すべてのスプライト用
- 1拍の時間(秒):すべてのスプライト用
- ノート出現時間(秒):すべてのスプライト用
- 最初のノート:すべてのスプライト用
- ステップ:すべてのスプライト用
- 楽曲データ:すべてのスプライト用
【ステージのスクリプト】
前回までの内容で完成しているので省略します。
スクリプトの作り方
ここからはプログラムを作っていく中でポイントとなる部分を説明しますが、今回はスクリプトの紹介をメインとさせていただいて、細かい部分の説明までは行いません。
ポイント①:「楽曲自動作成」定義ブロックの仕様
「楽曲自動作成」定義ブロックは1曲につき1個使用します。引数は3つ必要です。
- 曲名…音楽の名前
- 曲全体の時間(秒)…曲の始めから終わりまでの時間(単位は秒)
- BPM…曲のテンポ(単位はbpm)
また、定義ブロックを作る際に「画面を再描画せずに実行する」にチェックを入れておいた方が良いです。こうするとリストに値を入れる動作を一瞬で行ってくれるようになります。
楽曲ごとにBPMと曲の長さ(秒)をセットする
演奏する曲ごとに曲の長さ(秒)とテンポ(bpm)を調べて「楽曲自動作成」定義ブロックの引数に数字を設定します。
複数の曲を作るには下の図のように「もし(曲名=?)なら」ブロックを作成する曲の数だけつなぎます。
なお、曲の長さとテンポの調べ方については前回の記事で説明していますのでこちらを参照してください。↓↓↓
【Scratch 3.0】音楽 音ゲーの作り方④【音楽のリズムに合わせる】(Tips)
ポイント②:「楽曲リストにデータを入れる」定義ブロックの仕様
「楽曲リストにデータを入れる」定義ブロックは1曲につき4個(ノートの種類の数)使用します。引数は6つ必要です。
- ノートの種類…ノートの種類「D・F・J・K」のいずれかを指定
- 何拍目から登場?…ノートを登場させるタイミング。1拍目から登場させる場合は「1」を入力
- 細かさ…4分音符なら「1」、8分音符なら「2」、2分音符なら「0.5」を入力。要するにノートを細かく刻むなら1より大きな数字を、1より小さな数字はその逆
- 何個飛ばし?…ノートをスキップさせる間隔
- 最後ノート出現させない時間(秒)…曲の終わりから何秒前でノートの生成を止めるかを指定する。曲が終わっているのにノートが生成されないため。たとえば「5」を入力すると曲が終わる5秒前にノートの生成が止まる
- 何拍目から速くする?…指定した拍数からノートの生成頻度を1.5倍に変更する。曲の途中で難易度を上げるため。たとえば「20」を入力すると20拍目から変わる。未入力の場合は変わらない。
ポイント①と同様に定義ブロックを作る際に「画面を再描画せずに実行する」にチェックを入れておきます。
生成するノートごとに値をセットする
DFJKそれぞれのノートごとに別々の値を設定することができます。
どの値が適切なのかは楽曲や個人のセンスによって様々なので、まずは適当な値を入れてゲームをスタートさせてみることをおすすめします。そうして何度か値を変えながら一番しっくりくる値を探し当ててください。
ノートを自動生成するスクリプトの説明は以上です。
失敗しやすいポイント
失敗しやすいポイントはありません。
応用編
今回応用編は特にありません。
まとめ
今回紹介した定義ブロックは一応どんな曲でも対応できるように作りました。この定義ブロックをカスタマイズしてもらえれば、オリジナルのノート自動生成器が作れますし、もっとトリッキーで面白い音ゲーも作れるようになるはずですので是非チャレンジしてみてください。
今回で音ゲーのシリーズはおしまいになります。
どうでしたか?上手く再現できたでしょうか?
他にも役に立つTips(ティップス)記事をたくさん書いてますので、ぜひ見てみてください。(記事のタイトルに「Tips」と書いていたり「Tips」タグを貼ってあります)