| 前 次 トップ |
ゲームオーバーをつける。
ゲームオーバーをつけてみましょう。ゲームオーバーの前に爆発したときなどの効果音も付け加えて見ましょう。
効果音をつける
まず、爆発したときの効果音が無いのはちょっと寂しいです。爆発したときの効果音を付けてみましょう。
この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();
}
|
音楽は念のため、一度止めてからゲームオーバーの音楽を鳴らせるようにしておきました。
これで、ゲームオーバーの画面も完成です。
次は、いよいよボスを作ってみましょう。
| 前 次 トップ |