チュートリアル5(当たり判定) - Flash(ActionScript)でゲーム作成入門
目次
- Flash(ActionScript)でゲーム作成入門
- チュートリアル1(自機移動)
- チュートリアル2(弾発射)
- チュートリアル3(タイトル画面)
- チュートリアル4(敵移動)
- チュートリアル5(当たり判定)
- チュートリアル6(スコア)
- おまけ
当たり判定
弾が敵に当たったときに敵がやられ、自機が敵に当たったときに自機がやられるようにし、ゲームらしくします。敵インスタンスに当たり判定の ActionScript を割り当てる
フレーム2の敵インスタンスをクリックして、以下の太字の部分の ActionScript を追加してください。
onClipEvent(enterFrame) {
_x -= speed;
if (_x < 0) {
_rotation = 0;
_x = Stage.width;
_y = Math.random() * Stage.height;
speed++;
}
if (_rotation == 0) {
if (hitTest(_root.tama_mc) && _root.tama_mc._visible) {
_rotation = 90;
_root.tama_mc._visible = false;
} else if (hitTest(_root.jiki_mc)) {
_root.gotoAndPlay(1);
}
}
}
このままではタイトル画面に戻ったときにマウスが消えたままになるので、フレーム1をクリックしてフレームアクションに以下の黒字の部分の ActionScript を追加してください。
Mouse.show();
stop();
ムービーの実行
ムービープレビューを実行してみてください。弾が敵に当たると敵が倒れ、自機が敵に当たるとタイトル画面に戻ります。.fla ファイルダウンロード
プログラムの説明
_rotation = 0;
_rotation はムービークリップの回転角度です。敵がやられたときに倒れるので、再度登場したときに元に戻すようにしています。
if (_rotation == 0) {
回転角が 0、つまり敵が倒れていないときだけ当たり判定を行います。
if (hitTest(_root.tama_mc) && _root.tama_mc._visible) {
_rotation = 90;
_root.tama_mc._visible = false;
ムービークリップの hitTest は、他のインスタンスとの衝突判定を行い、当たっていれば true、いなければ false を返すメソッドです。敵と弾が当たっていて、なおかつ弾が画面上に出ていたなら、敵が弾に当たったと判定します。角度を 90 度にして敵を倒し、弾を消します。
} else if (hitTest(_root.jiki_mc)) {
_root.gotoAndPlay(1);
}
敵と自機が当たっていれば、タイムラインを1に戻します。つまりタイトル画面に戻るわけです。フレーム3あたりにゲームオーバー画面を作ってそこへ飛ばすのも良いでしょう。