先日プログラミング教室で小学一年生の男の子から質問をされました。
同じトラブルで悩んでいる子のために、その内容を記事にします。
音ブロックのトラブル~その1~
一つ目の質問は音楽を鳴らしたいのに、バグったような音が出るという内容でした。
実際にその子が作ったブロックがこちらです。
一見すると、問題は無さそうに見えます。
・・・が、しかしです。
再生してみて下さい!
射撃訓練でもしているかのような音が出てしまいます(*´Д`)
これはNGですね。。。
ブロックをこのように直してみて下さい。
どうでしょうか?
普通に音楽が流れ、曲が終わるとまた初めから流れて、それを繰り返します。
どういうことが起こっているのかを説明します。
ふたつの違いは「終わるまで」が付いているかいないかだけです。
付いている方は、その音楽を最後まで演奏してくれます。
(今回選んだ「Dance Energetic」は8秒の曲です)
付いていない方は曲の途中(一瞬)で初めに戻り、それをずっと繰り返すので、連射音のようになってしまうのです。
音ブロックのトラブル~その2~
トラブル1を解決したことで、音楽が流れるようになりましたので、
ゲームのBGMとして使うことにしました。
次に「GAMECLEAR」「GAMEOVER」いずれかをきっかけに、別の音を鳴らすように設定することにしました。
(この記事では例として、「上」「下」向き矢印キーが押されたとき、というブロックでその状況を再現します)
「すべての音を止める」を使っているのには訳があります。
上下矢印キーが押され、音が鳴るときには、流れているBGMを停止しその音だけを鳴らすように設定したかったのです。
しかし、上記のスクリプトを動かしてみるとどうでしょう?
音は鳴りますが、BGMは一瞬止まって、また初めから再生されてしまいます。
これを解決したい、と言うのが二つ目の質問です。
実はこの問題に関しては、Scratch星人もちゃんとした答えは出せず、何とか制限付きで凌いだという状況なので、いい方法が分かったという人はコメントなどで教えてもらえると嬉しいです(^▽^;)
何とか凌いだスクリプトがこちらです。
「ずっと」ブロックを外すことで、上・下矢印が押されるとBGMは止まるようになりました。
しかし、BGMが8秒と短いのでそれ以上の時間ゲームが続くような場合には、BGM無しの寂しい状態になってしまいます。。。
どなたか、もっといい方法を教えて下さい・・・( ;∀;)
~追記~
上記の問題は、アベ先生(阿部和広先生)のおかげで解決し、音ブロックでBGMと効果音を切り替える方法の記事に纏めましたので、そちらもお読みください(*^-^*)
まとめ
実際にあった音ブロックのトラブルについて書いてみました。
ゲームにはBGMや効果音があった方が、断然面白く感じます。
癖のある「音ブロック」ですが、ぜひ使ってみて下さい(^^♪
コメント
音ブロックのトラブル~その2~について
🚩が押された時ブロックの下の音カテゴリのブロックを、制御カテゴリの○○まで繰り返すブロックにはめ込み、○○を演算カテゴリの○○または○○ブロックと調べるカテゴリの○○キーが押されたブロックを組み合わせればうまくいくと思います
なるほど!制御と演算の組み合わせですね。
ありがとうございます。