| スプライトを使う準備 | ||||||||||
それではいよいよ後半部分の解説に入ります。hspdx.dllのスプライト機能です。 まず最初に、スプライトの機能を使うと何ができるのか?という事を整理しておきましょう。単純に描写速度を速くする目的のみでDirectXを用いるのであれば、ここまでの講座内容だけで充分です。新出の命令の半分も使ってないですしね。覚えることも少なくて済みます。 しかし、スプライトの機能を使うことで、次のようなことが容易になります。
さて、スプライトを使う場合最初にやらなければいけないのはキャラクタの登録です。使用する画像の大きさや当たり判定の範囲やアニメーションのパターンなどは最初に設定しておきます。
まずes_sizeで切り抜いてくる画像の大きさと、当たり判定の大きさを決めます。例えば50x50の大きさのキャラクタで、当たり判定の範囲は40x40にしたいのなら、第3パラメータに80(%)を指定します。当たり判定の範囲は下図のようになります。 スプライトを使う際に透過しない設定にすることはまずありえないので、第4パラメータには0を入れることになります。 そして次に、切り抜いてくる場所をes_patで指定します。第1パラメータがキャラクタ番号になります。es_sizeが同じ設定の画像を連続で切り抜いてくるのなら、上記のスクリプトのようにrepeat〜loopで一気に指定するとラクです。そうする為にも、最初にbufferへ読み込む画像は下図のようにつなげておくと便利です。 次に、自動でアニメーションさせる画像の場合の設定です。上記のスクリプトの場合、キャラクタ2は自動的にアニメーションさせるキャラクタです。このようにes_patの第4パラメータにアニメーションする早さを指定しておきます。これはes_syncで何回画面描写したら次のコマへ移るか?という指定になりますので、数を多くするとコマ送りのようにになってしまいます。30FPSくらいの描写速度だと、2フレームに1回くらいならあまり不自然にはなりません。 連続したアニメーションの場合、es_linkでキャラクタ番号の何番から何番をつなげるかを指定します。アニメーションを途中で止める場合(設置直後はアニメーションするが、最後のコマでアニメーションしなくなる)は、最後のコマのes_patの第4パラメータに0を指定します。0指定がなかったりes_linkでつなげるのを忘れると笑える現象が起こりますので注意しましょう。全然違うキャラでアニメしてくれます^^;
キャラクタの登録で最大のポイントになるのは、数が多くなると何番がどのキャラかわからなくなるということです。笑い事のようですが、真実です。上記のスクリプトのように、必ずコメントに「このキャラは何番から何番のキャラクタ番号」というのを書くことをお勧めします。私はこれで泣きました。キャラが多すぎて書いてても泣きました(笑)。
|