細胞を出現させて、ショットとの当たり判定を行って、拡大して爆発させる(消す)ところまでできたので、次は、アイデアの核となる、細胞の吸着処理を作る。
アイデアとかたいそうなことを書いたけど、プロトタイプで作った某キューブラッシュと同じ。
細胞が1段階でも膨らんだら、画面の端に来た時に、吸着する。(止まる)
吸着した後は、ショットが当たっても膨張も破壊もできなくする。
そして、別の吸着済みの細胞と接触したら、そこに吸着する。
この処理を簡単に実装するために、細胞の状態によって、3つのタイプ番号を割り当てるようにした。
未膨張の細胞:4
膨張した細胞:8
吸着した細胞:16
ショットとの当たり判定は、es_checkを、4+8+16のタイプ番号とで行い、衝突していたスプライトのタイプ番号に応じて、処理内容を分岐させた。
こんな感じ。
ショットのスプライトを消す
if タイプ番号=4
細胞を膨張する処理
タイプ番号を8に変更
if タイプ番号=8
if 細胞の膨張が最大だったら
爆発の処理
else
細胞膨張の処理
(タイプ16は、当たっても膨らませないので、ショットのスプライトを消すだけ)
吸着する処理は、膨張した細胞となる、タイプ番号8のスプライトを総当たりでes_findで探して、各スプライトの座標が画面の端の座標になっているかで判定した。
タイプ番号8のスプライトをes_findで探したときに、合わせてes_checkで、吸着した細胞のタイプ番号16との当たり判定もチェックした。
これで、吸着する処理を行うための、前処理ができた。
実際に吸着させるとはどうすればいいか。
まずは、タイプ番号を吸着した細胞を表す16に変更する。次は移動を止めなくてはならない。
判定した地点で止まって、表示させ続けることなのだが、細胞はes_adirで動かしているので、解除すればいいのだが、方法がわからず。
es_aposで、X,Yともに移動量を0にすれば、その場に止まったので良しにしたw*1
あとはキャラパターンの変更。
スプライトを自動的にアニメーションするようにes_patanimで、パターン定義したのだが、吸着した後もアニメしてしまうと目が痛いw
なので、アニメーションも止めたいが、これまた方法がわからない。
結局、アニメしない細胞のスプライトパターンも、es_patで定義しておき、es_chrで、パターン番号を差し替えた。
これで、細胞同士の吸着処理もできた。
n=200 repeat es_find n,8,n ;タイプ8(1段階でも膨張した細胞)を対象にする if n=-1 : break es_check cellco,n,16 ;吸着済みの細胞との当たり判定 es_getpos n,cx,cy,0 ;端に到達するか、他の細胞に接触したら吸着 if cx<=0 or cy<=0 or cx>=800 or cy>=600 or cellco>0 { es_type n,16 ;吸着したらタイプ16にする es_apos n,0,0 ;細胞の動きを止める es_chr n,100 ;細胞のスプライトパターンをアニメしないものに変更 } n+ loop