マップチップをシンプルに
ドット絵をあれこれいじくり回してたけど、結局シンプルな形にしてしまいました。地味だけど仕方ない。そのうちマップチップを増やして、奥行きを表現したいです。
縦スクロール対応
今までは横スクロールしかしませんでしたが、マップエディタ導入を機にマップサイズを可変にし、縦にもスクロール出来るようにしました。横と違い、staticな変数を持って、ゆっくりスクロールするようにしてます。縦が激しいと酔う。
坂道に対応
坂道を上り降り出来るようになりました。方法は線分の交差判定を使ってます。キャラクタの足元を横一直線の線分とし、坂道の線分との重なりで当たり判定を取っています。この方法なら複雑な地形も簡単に作れるなぁ。実装はネット上にあったコードを参考に組んでます。
処理落ち(汗)
大した事してないはずなのに処理落ち(フレームスキップ)が起きてました。ちなみに50fpsだと大丈夫なのに、60fpsだと処理落ち。もしかしたら単にフレームレートの計算ミスの可能性もあるけど、何にしても原因を特定しなきゃなぁ。
引き続き坂道の処理を作ります。実はまだちょっと挙動がおかしい。
//----------------------------------------------------------------------------- // 交差判定 BOOL CField::CrossLine(POINT p1, POINT p2, POINT q1, POINT q2) { float A, B, C, D; BOOL ret=TRUE; A=(float)(p2.y-p1.y); B=(float)(p1.x-p2.x); C=-(A*p1.x+B*p1.y); D=(A*q1.x+B*q1.y+C)*(A*q2.x+B*q2.y+C); if (D>0) { ret=FALSE; } else { A=(float)(q2.y-q1.y); B=(float)(q1.x-q2.x); C=-(A*q1.x+B*q1.y); D=(A*p1.x+B*p1.y+C)*(A*p2.x+B*p2.y+C); if (D>0) { ret=FALSE; } } return ret; }