ではでは、ここでは派生アイワナによくあるギミックの一つ、スイッチを作ってみましょう!
今回は例としてスイッチを押すとブロックが壊れて道が開く、という一連の動きを
作っていきたいと思います。
※ここではオブジェクトのイベントについてや変数について理解しているという人前提に書いています。
まだ理解できていない人は、イベント一覧 や 変数編 を先に読むことを推奨します。
とりあえずスイッチのスプライトは各自で描いてください。
あと回るアニメーションのブロックも各自用意してください。
これはスプライトの編集に書いてあるRotation sequence
のアニメーションツールを使えば簡単にできます。
ではでは、スプライトを作ったので、
早速スイッチのオブジェクトを作ってみましょう!
まず新しくスイッチとなるオブジェクトを作ります。
とりあえずCreateイベントにこう書きましょう。
image_speed = 0
これを書いておかないとアニメーションが再生されてしまい、押したり押さなかったりの
画像が交互に再生されてしまいます。
おまけにもひとつflag = 0と変数を定義しときます。
さて、一旦ここでスイッチのオブジェクトを閉じて、
次に壊れるブロックのオブジェクトを作っていきましょう!
まずオブジェクトを新しく作り、Spriteは回るアニメーションのブロックを選択、
solidにチェックを付け、Pranetにblockを選択します。
こんな感じ ↓
オブジェクトの名前はてけとーでいいです。
そして、Createイベントを追加、初めからアニメーションが再生されないように
image_speed = 0
を書きます。
次にalarm[0]イベントを追加、こう書きます。
direction = choose(45,135)//右上か左上に飛ばす
speed = 5//ここの値は適当でいいです
gravity_direction = 270//だんだん下へ落ちていくようにする
gravity = 0.2//ここも値は適当でいいと思います
solid = 0//ブロック判定を無くす
image_speed = 1//回るアニメーションを再生する
このタイミングでsolidをなくす理由は、ブロックが動いた時にキッド君がぶつかってしまうと
動きが止まってしまい、致命的なバグが起こるからです。
なのでこのコードは特に重要になります!
さて、壊れるブロックのオブジェクトは完成したのでスイッチのオブジェクトに戻りましょう。
いよいよ今回の山場です!
弾が当たった時の設定をしていきたいと思います。
弾とのCollisionイベントを追加。
そこにこう書きます。
if(flag = 0){
image_index = 1//画像を押してる状態に変更
with(block_kowareru)alarm[0] = 1//壊れるブロックのalarm[0]イベントを発動させる
sound_play(sndbreak)//壊れた時の効果音を設定、好きな音でいいです
onter.instance_destroy()//弾がぶつかった時に弾を削除する
flag = 1//flagの変数を1にする
}
※説明
ここでは普通にif文や変数を使わないで処理を書いてしまうと、弾が当たるたびに何回も処理が実行されてしまい、
重くなる原因になります! ・・・なので変数とif文という便利な組み合わせを使っちゃいます。
まずCreateイベントでflagの変数を0と定義しています。
次に弾とのCollisionイベントでflagの変数を使い、if文で
もしflagが0の時処理を実行すると入れましたね、
ここでこのif文の中にflagの変数を1にする処理を入れているので、
見事に一回処理を実行すると次からは実行できないというコードを組むことができちゃうんです!
・・・ここで説明したif文と変数の組み合わせはよく使う場面があって非常に便利なので、
ここを読んでいる皆さんにはぜひ覚えてもらいたいです。
もっと詳しく知りたい方はこの2つを読むことを推奨します → ifについて 変数編
さて、説明も済んだので、あとはスイッチと壊れるブロックをroomに配置すれば完成です!
お疲れ様でしたー こうやって凝ったギミックを置いていくとプレイヤーも楽しめますし、
自分の製作の世界がさらに広がっていくと思います。
皆さんもぜひぜひ凝ったギミックを試行錯誤して作ってみてください!
次回:ギミック編 02? お楽しみに! ※執筆時期未定
最新コメント