前 次 トップ |
ゲームオーバーをつける。
ゲームオーバーをつけてみましょう。ゲームオーバーの前に爆発したときなどの効果音も付け加えて見ましょう。
効果音をつける
まず、爆発したときの効果音が無いのはちょっと寂しいです。爆発したときの効果音を付けてみましょう。
このFileからbomb.wavとshoot.wavを先ほどと同じ手順で「BGM・効果音」から追加してみましょう。
Enemy.tonyu |
---|
extends SpriteChar; function onDie() { appear(new Bomb(x , y ,$pat_Sample+4)); } function atariHantei() { for (t in $chars) { if ( t is Tama && crashTo(t) ) { life=life-1; if(life<=0) { die(); $score=$score+mark; $mplayer.play($se_bomb,0,60); } t.die(); } } if (crashTo($myChar)) $myChar.die(); } |
myChar.tonyu |
---|
extends SpriteChar; function onDie() { appear(new Bomb($myChar.x , $myChar.y ,$pat_Sample+4)); } function atariHantei() { for (t in $chars) { if ( t is Item && crashTo(t) ) { if(t.p==22) if(a.get(0)>=11) a.set(0,a.get(0)-1); if(t.p==17) if(a.get(1)<=3) a.set(1,a.get(1)+1); t.die(); } } } a=new Array(); a.add(20); a.add(1); while(1) { i++; if (getkey(39)>0 && x<$screenWidth-20 ) x=x+3; if (getkey(37)>0 && x>20) x=x-3; if (getkey(32)>1 && i>a.get(0)) { $mplayer.play($se_shoot,0,80); for(ii=1;ii<=a.get(1);ii++) appear(new Tama((x-5*(a.get(1)-1-2*(ii-1))),y,$pat_Sample+1)); i=0; } atariHantei(); update(); } |
Bombクラスに直接効果音を鳴らさせることは推奨されません。なぜならば、画面外に敵が出たときにもdie()関数が呼ばれてしまうため、敵をやっつけてもいないのに効果音がなってしまうからです。
また、同様にTamaクラスに$se_shootを置くことも推奨されません。myCharが2つ以上弾を出す時があります。
ゲームオーバー画面をつける
まず、myCharがいなくなった場合に、敵が出てこないようにしましょう。
UFO.tonyu |
---|
extends SpriteChar; function appearEnemy() { if (rnd( 400 )==0) appear(new Item(rnd(530)+15,y,22)); if (rnd( 1600 )==0) appear(new Item(rnd(530)+15,y,17)); if (rnd( 50 )==0) appear(new skyBlue(x,y,$pat_Sample+2)); if (rnd( 100 )==0 && $score>100) appear(new Yellow(x,y,$pat_Sample+8)); if (rnd( 200 )==0 && $score>200) appear(new Red(x,y,$pat_Sample+11)); if (rnd( 800 )==0 && $score>300) appear(new Green(x,y+20,$pat_Sample+19)); if (rnd( 1600 )==0 && $score>400) appear(new Blue(x,y+20,$pat_Sample+22)); } vx=2; while(1) { if(! $myChar.isDead()) { x=x+vx; if(x>$screenWidth - 40 || x<40) vx=-vx; appearEnemy(); } update(); } |
以前のソースに変更も加えて見やす訂正も加えました。$mychar.isDead()の時には動作は止まり敵も出現しなくなります。つまり、myCharが死んでいる場合には、敵は出現してこなくなります。
次に、画面を暗くして、Game Overという文字を出させましょう。
Text.tonyu |
---|
extends TextChar; $bgcolor=11816980; $score=0; $se_shootingsample1.play(); i=255; while(1) { text="Score:"+$score; if($myChar.isDead()) { if(i>0) i--; if(i==250) for(t in $chars) if(t is Enemy) t.die(); |
画面は青色からだんだん暗くなり、文字は黒からだんだんと白色に変わってゆきます。
変数iが250の時にEnemyクラスを継承する全てのオブジェクトのdie関数を呼び、変数iが200の時にBlueをxは中心、yはUFOの場所に呼び出しました。
また、変数iが1の時にUFOが消えるようにしてみました。
これで、最後はスコアとGameOverの文字と手を振るBlueが残されるはずです。
次に、ゲームオーバー時の音楽を加えて見ましょう。
myChar.tonyu |
---|
extends SpriteChar; function onDie() { appear(new Bomb($myChar.x , $myChar.y ,$pat_Sample+4)); $mplayer.stop(); $mplayer.play($se_shootingsample_gameover,0,80); } function atariHantei() { for (t in $chars) { if ( t is Item && crashTo(t) ) { if(t.p==22) if(a.get(0)>=11) a.set(0,a.get(0)-1); if(t.p==17) if(a.get(1)<=3) a.set(1,a.get(1)+1); t.die(); } } } a=new Array(); a.add(20); a.add(1); while(1) { i++; if (getkey(39)>0 && x<$screenWidth-20 ) x=x+3; if (getkey(37)>0 && x>20) x=x-3; if (getkey(32)>1 && i>a.get(0)) { $mplayer.play($se_shoot,0,80); for(ii=1;ii<=a.get(1);ii++) appear(new Tama((x-5*(a.get(1)-1-2*(ii-1))),y,$pat_Sample+1)); i=0; } atariHantei(); update(); } |
音楽は念のため、一度止めてからゲームオーバーの音楽を鳴らせるようにしておきました。
これで、ゲームオーバーの画面も完成です。
次は、いよいよボスを作ってみましょう。
前 次 トップ |