ジャンプゲームの制作2
前回に引き続きジャンプゲームの制作です。
トラップの制作
トラップに当たったらゲームオーバー、即リトライという仕様。
Alarm0にリスタートを設定しておいて、後でこれを呼び出すことにします。
プレイヤーとの衝突イベントにコードを書いていきます。
with(other) { effect_create_below(ef_firework, x, y, 2, c_fuchsia); instance_destroy(); audio_play_sound(snd_damage, 10, false); alarm[0] = room_speed;
コードの内容は、エフェクトを出しながらプレイヤーのオブジェクトを消去してサウンドを鳴らす。 そしてアラーム0をルームスピード(1秒後)に設定。1秒後に先程のアラーム(リスタート)が発動する。
動く床の制作
一定周期で左右に移動する床で、上にプレイヤーが乗ることが出来る。
床と同じような衝突処理にしたいのでParentに床を設定。
CreateとStepイベントのコードを書いていきます。
maxLeft = xstart - 64; maxRight = xstart + 64; m_hsp = 1;
左右の折り返し位置をスタート地点から2ブロック分に設定
///移動 //プレイヤーと水平方向に衝突した時は押し出す if place_meeting(x+m_hsp, y, obj_player) { while(!place_meeting(x+sign(m_hsp), y, obj_player)) x += sign(m_hsp); obj_player.x += m_hsp; } x += m_hsp; if (x < maxLeft) { x = maxLeft; m_hsp = -m_hsp; } if (x > maxRight) { x = maxRight; m_hsp = -m_hsp; } //上にプレイヤーが乗っている時にプレイヤーを移動させる if place_meeting(x, y-1, obj_player) && bbox_top >= obj_player.bbox_bottom { obj_player.m_hsp = m_hsp; }
プレイヤーを押し出す処理が少し複雑になってしまった。
なお、プレイヤーがブロックに押されながら壁にぶつかると、そのままめり込んで身動きがとれなくなってしまうことが発覚。
そのため壁からは1ブロック分空けて配置するようにします(笑)
ボーナスアイテムの制作
取らなくてもクリアは可能だが、取るとボーナスが貰える宝石。
プレイヤーとの衝突イベントにコードを書いていきます。
effect_create_below(ef_flare, x, y, 2, c_green);
instance_destroy();
audio_play_sound(snd_getjewel, 10, false);
とりあえずは衝突したら自信を消去してサウンドを鳴らすだけ。
ここまで作ってテストプレイ。ゴールはまだ飾りです。
次回は数ステージ作って完成まで行きたいと思います。