« [改造記]スプライトの登録 | トップページ | [改造記]スプライトの任意移動制御 »

[改造記]真っ直ぐ進むスプライト

敵や弾のように、随時登録するスプライトの場合、条件分岐でサブルーチンへ飛ぶ形で処理します。この前の項でも説明しましたが、es_setによる登録は一度行えば消える(消す)まで有効です。

;■ 自機弾発射
*weapon

es_new temp,501
if temp<504 {
es_set temp,mx+12,my,3
;↑自機弾スプライト設置(キャラクタ番号3)
es_type temp,4 ;自機弾type値(4)

es_adir temp,32,4000 ;移動方向指示
shottime=1 ;連射制御
}
return

まずes_newで未使用のスプライト番号を検索します。ここで指定する番号は前項で決めた表示の優先順位に従ってください。別に重ね合わせの順番なんか気にしないや~いという方は何も考えずに0でいいでしょう^^;

ただその場合「特定のキャラは画面上の表示数を制限する」といった作業が面倒になります。自機の弾なんかは画面上の表示数を決めておかないとゲーム性が崩 れます。上記スクリプトの場合、スプライト番号501~503は完全に自機弾専用になってます。こうすることで画面上に自機弾は3つ以上表示されないよう になってます。

設置してから後は移動を制御しない(ずっと直進する)キャラの場合、最初に一回だけes_adires_aimes_aposを行えば、あとはほったらかしでいいです。上記スクリプトの場合es_adirを使って画面上方向に直進するよう指示をしています。es_adirは下図のように下方向が0で、半時計回りに64段階の方向指定ができます。

es_adirの方向

つまりこの自機弾の場合32なので画面上方向に真っ直ぐ飛んでいくというわけです。これが例えば自機を狙う敵弾などの場合はこんな感じになります。

;■ 弾生成1
*tamaborn
es_new tama,0
if tama<500 {
es_set tama,ex+12,ey+12,4
;↑敵弾スプライト設置(キャラクタ番号4)
es_type tama,32 ;敵弾type値(32)
rnd dv,8 : dv+=level/2+2 ;弾速

es_aim tama,mmx,mmy,dv*100 ;移動方向
}
return

(mmx,mmy)は自機の座標です。たったこれだけの命令で狙い弾を撃たせることができます。めちゃめちゃ簡単でしょ?解剖記の敵弾の生成と移動のスクリプトと比較してみてください。はっきり言ってあの苦労はなんだったんだ?っていう感じです^^;

« [改造記]スプライトの登録 | トップページ | [改造記]スプライトの任意移動制御 »

3.改造記」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/67538/57445625

この記事へのトラックバック一覧です: [改造記]真っ直ぐ進むスプライト:

« [改造記]スプライトの登録 | トップページ | [改造記]スプライトの任意移動制御 »