p200からの「ベルトコンベアのゲーム」(Atlas6.pde)についてプログラムを見てきましたが、今回はdraw()の中のdrawGame()の中のdrawUnits()を見てみます。

文字どおりユニットを描画するわけですが、forループでunitArrayの全てのunitについて、unit.draw()を実行しています。drawUnits()はただそれだけの関数です。

unit.draw()では、まずpushMatrix();として、(0,0)を原点とする座標軸をスタックしています。そして、translateで原点を(unit.x,unit.y)に移動しています。

「// 消すときは回転しながら消す演出をする」ということなので、if(lifeFrames > 0 && lifeFrames < 30) というのが「消すとき」の条件になっているようです。if文内は、演出となる回転処理ですね。

次に「// ユニット本体描画」。unit.typeの数値は、ユニットタイプの色を定めたunitColors[]という配列のインデックスに対応しているようです。fill()で本体の色の設定を最初にやります。枠の設定はいくつか場合分けされています。

if(lifeFrames >= 0) ならば「消している最中」を意味しているようです。stroke(255)で枠の色を白に指定。strokeWeight(5)で5pixelの太枠を指定。

lifeFrames < 0で、isMouseDragging()がtrueのとき、「マウス操作中」の処理をします。 灰色stroke(128)の太枠strokeWeight(5)。

lifeFrames < 0で、isMouseDragging()がfalseで、isStop()がtrueのとき、「停止」の処理をします。黒stroke(0)の細枠strokeWeight(2)。

それ以外の時は枠を表示しないnoStroke()。

そして、描画rect(0, 0, w, h)。ユニットの左上が原点になっていますから、位置の座標は(0,0)。

最後に「// タイプ番号描画」をして、座標を元に戻してpopMatrix()、終了。



《インデックス》

◆◆◆参考文献「遊んで作るスマホゲームプログラミング for Android
◆◆◆公文生ならゲームで遊ぶな!ゲームを作れ!
◆◆◆公文式小林教室◆山形県東根市◆◆◆