« [改造記]スプライトを使う準備 | トップページ | [改造記]真っ直ぐ進むスプライト »

[改造記]スプライトの登録

es_sizeとes_patで登録したキャラクターは、es_setで 登録することで初めてスプライトとしての機能を果たします。一旦es_setで登録したスプライトは、自分で削除(es_killまたは es_clear)するか、移動してスプライト有効範囲(es_areaで設定)をはみ出すまで有効となります。それゆえes_setはキャラの生成時の みに使用し、後は他の命令で制御する形になります。毎フレームes_setで登録しなおす必要は全く無いので注意しましょう。

;■ スタート前準備
;~中略~

es_window 0,0,640,480 ;スプライト描写範囲設定
es_area -50,-50,640,480 ;スプライト有効範囲設定
es_cls ;一旦画面消去
es_sync ;消去した画面の描写
wait 100 ;最初だけ若干ウェイトをかまします

es_set 300,295,300,5 ;自機スプライト登録
es_type 300,1 ;自機Type値設定(1)

;■ メインルーチン
*main
es_cls 0,0,0 ;画面クリア
;~中略~・・・もろもろの処理

es_draw ;スプライト描写
;~中略~・・・スプライトより手前に描写したいものがある場合はここで処理
await 0
es_sync 32 ;画面描写とウェイト
goto *main

メインルーチンに入る前に、スプライトを描写する範囲と有効範囲を設定しておきます。これらは一度設定すれば以後はずっと有効になるため、前準備(メイン ルーチンなど永久ループに入る前)の段階で一度やれば二度とやる必要がありません。もちろんゲーム中に変更する必要がある場合は別ですが^^;

まずes_windowで スプライトを描写する範囲を決めます。例えば縦スクロールシューティングなどで、画面の縦横比を変えたい場合はここで設定します。あくまでこれはスプライ トの描写範囲の設定なので、es_copyなどを使えばこの範囲の外側にも描写はできます。例えばステータスウィンドウ(得点とかシールド残量などを表 示)のように、そこにスプライトが描写されると困るような範囲がある場合は使うといいでしょう。画面いっぱいに描写してもかまわないのであれば、設定する 必要はありません。

次にes_areaでスプライトの有 効範囲を決めます。これも前準備の段階で一度行えばオッケーです。es_windowを行うと、その範囲+上下左右128ピクセルが自動的にスプライトの 有効範囲に設定されます。なので、スプライト有効範囲を変更したい場合は必ずes_windowの後に行いましょう。このes_areaで指定された範囲 から外にスプライトがはみ出すと、そのスプライトは自動的に削除されます。スプライトの座標はその画像の左上になるので、見かけ上不合理が生じないように するには上記スクリプトのように、スプライト有効範囲を画面上側と左側に若干大きめにとる必要があります。下図を参考にしてみて下さい。

es_windowとes_areaの関係

シューティングゲームで言う自機のように最初から画面に現れてるキャラクターをスプライト登録する場合は、上記のスクリプトのようにメインルーチンに入る前に設置を行います。es_typeに関しては、当たり判定の部分で説明するのでここでは割愛させていただきます。

スプライトの重ね合わせはスプライト番号によって決まります。番号が若い方が手前に表示さ れるのです。例えばシューティングゲームで言うと、敵の弾が爆風などの後ろで描写されてると隠れて見えず、非常にプレイヤーにストレスがかかります(そう いうゲーム性だったらいいでしょうけど^^;)。なので、敵の弾は必ず自機のストライプ番号より少ない番号を選ぶようにしなければなりません。重ね合わせ の優先順位があるのならば、使用するスプライト番号の範囲を自分で決めておきましょう。例えばこんな感じです。

  1. 敵弾・・・0-500の範囲
  2. 自機・・・501
  3. 自機弾・・・502-510
  4. 爆風・・・511-550
  5. 敵機・・・551-650

スプライトの登録の際はこの優先順位がポイントとなります。自分の作るゲーム性に合わせていろいろ考えてみましょう。es_iniで初期化を行う際に、か なり多めにスプライト数を設定しておいて、使う範囲をわかりやすい番号で区切っておくというのも一つの手です。そうすれば、作ってる最中で最大数などを変 更したい場合にラクです。

そして、メインルーチン(永久ループになる部分)では、es_syncより前にes_drawを 行い、スプライトの描写をしましょう。これを忘れてるとスプライトだけが表示されないので「?」ってなことになります(私はサンプルv3.0を作ってる時 にやらかしました^^;)。スプライトより手前に描写したいものがある場合は、es_drawとes_syncの間で処理しましょう。例えばメッセージと か数字とか。そういった、スプライトに隠れては困るものはes_syncの直前に描写処理を行えばいいのです。

« [改造記]スプライトを使う準備 | トップページ | [改造記]真っ直ぐ進むスプライト »

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

コメント

コメントを書く

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

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

トラックバック

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

この記事へのトラックバック一覧です: [改造記]スプライトの登録:

« [改造記]スプライトを使う準備 | トップページ | [改造記]真っ直ぐ進むスプライト »