スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ランダムキラーの解説

…えーと、タイトルはこれでいいのかな?

ランダムキラーというのは本家のマリオで"特定の面に一定のタイミングでかつ、出現する高さが毎回異なるキラー"のことです。
確か本家だと表面の5-3、裏面の1-3や6-3とかに出現しましたよね。今回はそれを解説させていただこうかと思います。

Screenshot_2015-03-06-01-56-16.png

以前「敵キャラクターの紹介」にて紹介したキラー(青)は、このゲームではランダムな位置に出現する敵キャラとして紹介しました。

ランダムといってもところかまわず出現して良いわけではなく、ちゃんと画面内に出現し、かつ1ブロック分の高さである32*32に固定するようにします。

public TimerHandler キラー出現レート = new TimerHandler(
3, true, new ITimerCallback() {
public void onTimePassed(TimerHandler pTimerHandler) {
SoundPlay.seBulletBill.stop();
SoundPlay.seBulletBill.play();
// キラーの出現ポイント
int appPoint = 0;
int r = (int)(Math.random() * 11);
switch (r) {
case 0:
appPoint = 384; // 下から3マス
break;
case 1:
appPoint = 352; // 下から4マス
break;
case 2:
appPoint = 320; // 下から5マス
break;

// 省略…

case 10:
appPoint = 64; // 下から13マス
break;
}
bulletBills.enemyBulletBillBlue = getBaseActivity().getResourceUtil()
.getAnimatedSprite("enemy_04_bullet_bill_blue.png", 1, 2);
bulletBills.enemyBulletBillBlue.setTag(
BulletBills.TAG_ENEMY_04_BULLET_BILL_BLUE);
// 画面右外に追加。y座標(appPoint)はランダム
bulletBills.enemyBulletBillBlue.setPosition(getBaseActivity().getEngine()
.getCamera().getWidth() + bulletBills.enemyBulletBillBlue
.getWidth(), appPoint);
bulletBills.enemyBulletBillBlue.animate(ani並);
attachChild(bulletBills.enemyBulletBillBlue);
bulletBills.enemyBulletBillBlue.setZIndex(レイヤー04敵キャラ用);
sortChildren();
}
});


そういえば、久々のAndEngineですね。
「public TimerHandler キラー出現レート = new TimerHandler」はAndEngineが持つ「ハンドラークラス」を継承しています。
(ハンドラーは過去の記事で紹介したような気がしますが…まあ、せっかくなのでここで詳しく解説します。)

すぐ下の行にある「3」という数字は、このクラスが持つ1つ目の引数で、ここで「何秒後にキラーが出現するのかをチェック」しています。
今回は3秒を指定しているのでひとまずこのコードからは「ゲームがスタートして3秒後に画面右端からキラーが出現する」ということになりますね!

続いてすぐ右隣にある第2引数の「true」(トゥルー)。
これはこのハンドラーが「繰り返し呼び出されるかどうかをチェック」しています。
「true」に設定すると一度ハンドラーが呼び出された後も3秒後(正確には第一引数で指定した値。今回は3を指定したため。)にもう一度同じハンドラーが繰り返し呼び出され、逆に「false」にすると1回きりの呼び出しハンドラーとなります。

ランダムキラーは繰り返し呼び出さないと全く効果がないので、今回は「true」に設定しキラーが画面左端へ隠れたら再度呼び出されるようにします。
…実際動画を見てみないとわからないと思いますが、2秒ちょっとでキラーが画面左端へ隠れるので、ちょっと長めの3秒に設定して少し余裕を持たせているというわけです。(たぶん本家のタイミングもこれくらいじゃないかな…。)

以上がタイムハンドラーの仕組みです。

…ちなみに上記のハンドラーコードはサンプル(NinjaRan)で敵キャラが出現するときに使用されていたやつをキラー用に改良したものです。

Screenshot_2014-06-30-02-03-27 (2)

「NinjaRan」では一定のタイミングで敵キャラが出現するのを攻撃でやっつけたり、ジャンプでかわしたりしながらハイスコアを目指すエンドレスタイプのゲームで、敵キャラを出現させるのに上記のハンドラーコードが使われておりました。
サンプルでは「1秒おき」に出現していますが、これをキラーでやるとさすがにうっとうしいので、約3間秒に一回呼び出されるように書き換え、キラーが完全に画面左へ消えてから新たなキラーが出現するように調整しています。

…これはローカルネタなので分かる人だけでいいです^^; 失礼しました。

~オマケ~(第一引数を0.1fに設定してみた。すごい弾幕の嵐ですね(笑))

Screenshot_2015-05-21-01-56-32.png

現在コースを製作中…。
リリースまでまだ期間がありますが、もうしばらくお待ちくださいね。
スポンサーサイト

プロフィール

岡本 賢治

Author:岡本 賢治
 
☆☆☆☆☆☆☆☆☆☆☆☆
 
Android専用アクションゲーム
「スーパーけんじラン」好評配信中!
 
↓↓↓↓↓↓↓↓↓↓↓↓

 
・公式サイトはこちらから
http://okamotodo.jimdo.com/

最新トラックバック

アクセスカウンター

オンラインカウンター

現在の閲覧者数:

検索フォーム

ブロとも申請フォーム

QRコード

QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。