このWikiは古くなりました:新しいWikiへ移動


//@pnavi
[[←前>敵を出現させる]] [[次→>敵を破壊する]]  [[トップ>シューティングゲームの作成]]

**自機を破壊する [#n30910e1]
***敵と自機がぶつかったら、自機が死ぬ [#q9e605db]

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

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

//prog


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


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

//progfrac 
 if (crashTo($myChar)) ...


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

&ref(mycharname.png);

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

//progfrac 
  ...  $myChar.die();


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

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

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

***爆発パターンを作る [#j4650ff0]

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

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

&ref(mkbomb.png);

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

&ref(mkbombp.png);

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

//prog


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


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

//plainForm
書式:
  wait(待機フレーム数);
 

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

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

&ref(bpats.png);

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

***爆発パターンを出現させる [#ffd919e4]

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

//prog


 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メソッドの中では、次の処理によって爆発オブジェクトを出現させています。

//progfrac 
  appear(new Bomb($myChar.x , $myChar.y ,$pat_Sample+4));


-[[appear]]の使い方をもう一度復習しておきましょう
--''Bomb''は、出現させたいオブジェクトのクラスです。
--''$myChar.x'' , ''$myChar.y''  は、オブジェクトの出現する座標です。
-- ''$pat_Sample+4''は、オブジェクトのキャラクタパターンを指定します。ここでは&ref(bomp.png);です。
--''$myChar.x''は、「$myChar''の''x」と解釈できます。このように、オブジェクトに続いてドット(.)と変数名書くと、そのオブジェクトが持っている変数を参照することができます。ここでは、自機のいる場所に爆発を出現させるのにこの参照を用いています。

//@pnavi
[[←前>敵を出現させる]] [[次→>敵を破壊する]]  [[トップ>シューティングゲームの作成]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS