Tonyu System 1 - wiki


←前次→チュートリアルWikiトップ

チュートリアル - 実践編 - シューティングゲーム (5/11)

自機を破壊する

敵と自機がぶつかったら、自機が死ぬ

敵を作りましたが、このままでは弾があたっても、自機がぶつかっても何もおきません。
まず、敵が自機にあたると自機が破壊されるようにしましょう

敵オブジェクトをダブルクリックして、次の行を追加します

extends SpriteChar;
while (y<$screenHeight) {
  y=y+2;
  if (crashTo($MyChar)) $MyChar.die();
  update();
}

まずifの条件部から見ていきましょう

if (crashTo($MyChar)) ...

crashToは、この敵が自機($MyChar)に当たっているかという判定を行います。 当たっている場合はif文の後ろが実行されます。
なお、自機の名前は、自機をクリックし、オブジェクトインスペクタで確認できます。

mycharname.png

ぶつかった場合の処理は次のようになります

... $MyChar.die();

これによって自機が死にます。

xx.die();は、xxで表されるオブジェクトを殺す命令で、殺されたオブジェクトはただちに処理が止まり、画面上からいなくなります。

それでは実行してみましょう。敵が自機にふれると、自機が消えてしまいました。

爆発パターンを作る

しかし、いきなり消えるのはあっけないので、爆発するアニメーションをつけてみましょう。

新規オブジェクトを作成します。

mkbomb.png

キャラクタパターンを、爆発パターンの一番先頭のパターンにします。

mkbombp.png

ダブルクリックして、動作を次のように書きます

extends SpriteChar;
wait(5);
p=p+1;
wait(5);
p=p+1;
wait(5);
p=p+1;
wait(5);

新しくwait(5);という命令が出てきました。これはupdate();に似ています。

書式

wait(待機フレーム数);

これを行うことにより待機フレーム(コマ)数で指定しただけオブジェクトの動作が止まります。
ここでは5フレーム(5コマ)待機します。

その後、変数pの値を1増やしています。変数pは、このオブジェクトのキャラクタパターンを表します。
つまり、pを1増やすことにより、キャラクタパターンが次のように変化していきます

bpats.png

実行してみると、爆発しているようなアニメーションを見ることができます。

爆発パターンを出現させる

爆発パターンを、自機が死んだときに発生させるようにしましょう。
自機オブジェクトをダブルクリックして、次のように変更します

extends SpriteChar;

function onDie() {
  appear(new Bomb($MyChar.x , $MyChar.y ,$pat_Sample+4));
}

while(1) {
  if (getkey(39)>0 && x<$screenWidth ) x=x+3;
  if (getkey(37)>0 && x>0) x=x-3;
  if (getkey(32)==1) appear(new Tama(x,y,$pat_Sample+1));
  update();
}

敵を出現させるで出てきたメソッドを使いました。
しかし、先ほどと違ってこの onDieというメソッドはプログラム中から呼ばれていません。

実はこの onDieという名前をつけたメソッドは特別な意味を持ち、そのオブジェクトが死んだときに行わせる処理を記述できます。
実際には、敵のオブジェクトが$MyChar.die(); を呼んだときに、自動的にこの onDieメソッドが呼ばれます。

onDieメソッドの中では、次の処理によって爆発オブジェクトを出現させています。

 appear(new Bomb($MyChar.x , $MyChar.y ,$pat_Sample+4));

appearの使い方をもう一度復習しておきましょう

  • Bombは、出現させたいオブジェクトのクラスです。
  • $MyChar.x , $MyChar.y は、オブジェクトの出現する座標です。
  • $pat_Sample+4は、オブジェクトのキャラクタパターンを指定します。ここではbomp.pngです。

$MyChar.xは、「$MyCharx」と解釈できます。
このように、オブジェクトに続いてドット(.)と変数名書くと、そのオブジェクトが持っている変数を参照することができます。
ここでは、自機のいる場所に爆発を出現させるのにこの参照を用いています。


←前次→チュートリアルWikiトップ