プレイ日記
Ar ka10aru
当たり判定で、BGにあたったら音が鳴るようにしたんですが… これだと大量に音がなってしまいます。どうすればいいか教えてください!
3そうだね
プレイ済み
返信[1]
親投稿
MU(kみう miukohaku
ごめん… わかんないわ…汗 共感だけで、すんません汗
0そうだね
未プレイ
返信[2]
親投稿
ほしけん Hosiken
こんな感じでどうでしょうか? ATARI=0 ' 当たったらBEEP 23のかわりに1を入れる ~当たり判定のプログラム~ IF ATARI THEN  IF ATATTERU==0 THEN BEEP 23  ATATTERU=1 ELSE  ATATTERU=0 ENDIF
0そうだね
プレイ済み
返信[3]
親投稿
ほしけん Hosiken
説明も書いておきますね。 上のプログラムだと、 当たっていた(ATARIが1の)場合、最初は音を鳴らし、ATATTERUに1を入れます。以降は、当たらなくなって(ATARIが0のまま)、そのときにATATTERUを0に戻すまで、連続して音を鳴らしません。
0そうだね
プレイ済み
返信[4]
親投稿
Ar ka10aru
ほしけんさん!ありがとうございます!…こちらも教えていただけませんか? マリオメーカーもどきにてブロックを置くプログラムです。ここの緑文字のところでブロックを置きます。ここも音が重なってしまいます…よろしくお願いします…
0そうだね
プレイ済み
返信[5]
親投稿
ほしけん Hosiken
物体を置くとき、「これから置く物体」と「上書きされる物体」が同じ物体でなければ BEEP 9 を鳴らす、というIFの判定が必要だと思います。 しかし、この画面に見えてる範囲では、どの変数をどう使えばいいかはよくわかりませんでした。
0そうだね
プレイ済み
返信[6]
親投稿
Ar ka10aru
そうですか…わざわざありがとうございました…
0そうだね
プレイ済み
返信[7]
親投稿
Ar ka10aru
あっ、このプログラムはMGウッディーさんの[ゆうしゃのぼうけん]と同じですのでそちらを見ていただければわかると思います。
0そうだね
プレイ済み
返信[8]
親投稿
ほしけん Hosiken
あっ、これもしかして、これゆうしゃの冒険の改造でしょうか? 私の方でゆうしゃの冒険のプログラム見たら分かりそうでしょうか。
0そうだね
プレイ済み
返信[9]
親投稿
ほしけん Hosiken
書き込みかぶった! ちょっと見てみますね。
0そうだね
プレイ済み
返信[10]
親投稿
ほしけん Hosiken
パーツを比べるのは大変だったので、こんな感じにしてみました。
0そうだね
プレイ済み
返信[11]
親投稿
Ar ka10aru
ほしけんさん、すごい今更感ありますがすいません。質問です。最初の教えてもらった当たり判定の音を鳴らすプログラムをうつしたんですが、音が鳴りませんでした。原因を教えてください
0そうだね
プレイ済み
返信[12]
親投稿
ほしけん Hosiken
はい、最初の回答はこの画面部分を全部Akkun-630さんが書いたと思っていたので、ちゃんと書いてませんでした。 > ATARI=0 ' 当たったらBEEP 23のかわりに1を入れる ここの意味を詳しく書くと、 ・ラベル「@ATARI」に来た直後くらいに「ATARI=0」と書いて、当たり判定をする前に、変数「ATARI」に「0」を入れて初期化ください。 ・BEEP 23 と書かれていた場所を全て「ATARI=1」と書いて、音を鳴らす代わりに、「ATARI=1」と書いて変数「ATARI」に「1」を入れてください。 ・ラベル「@ATARI」と変数「ATARI」の名前がたまたま同じになってしまいましたが、ラベルと変数は別物なので関係ないです。 > ~当たり判定のプログラム~ これは、もともとからある当たり判定のプログラムを、間に挟んでください、という意味です。続く
0そうだね
プレイ済み
返信[13]
親投稿
ほしけん Hosiken
> IF ATARI THEN(以下略) の意味 ・変数 ATARI が 0 以外のとき【つまり、音を鳴らしたいとき】は、THEN ~ ELSE の間が実行されます。 ・変数 ATARI が 0 のとき【つまり、何も当たっていないとき】は、ELSE ~ ENDIF の間が実行されます。 ただし、当たりっぱなしの時に音が鳴り続けない仕掛けを入れます。 ・当たっていて、変数 ATTATERU が 0 のとき → 音を鳴らして、変数 ATTATERU を 1 にします。 ・当たっていて、変数 ATTATERU が 1 のとき → 当たりっぱなしなので、音を鳴らしません。 ・当たっていないとき → 変数 ATTATERU に 0 を入れるまで、また当たったときに音が鳴るように鳴ります。
0そうだね
プレイ済み
返信[14]
親投稿
ほしけん Hosiken
なので、 ・109行目に ATARI=0 と書くとうまく動きません。100行目(IFの前の行)に移動します。 ・いくつかあるはずの BEEP 23 を ATARI=1 に書き換えます。 IF ~ ENDIF は対になっていて、間の部分は特定条件のときしか実行されないので、注意してください。 ゆうしゃの冒険のプログラムは、頭にスペースを入れて、どこからどこまでが対になってるか、わかるようにしています。それをヒントにして、IF ATARI THEN ~ の部分は、ほかの IF ~ ENDIF の中に入ってしまわないようにします。
0そうだね
プレイ済み
返信[15]
親投稿
Ar ka10aru
あっ、念のため言っておきますが、このプログラムはゆうしゃのぼうけんの改造ではありませんよ。
0そうだね
プレイ済み
返信[16]
親投稿
ほしけん Hosiken
確かに! でもさっき書いた説明はだいたい通用しますので安心して読んでください。
0そうだね
プレイ済み