マップチップをシンプルに
ドット絵をあれこれいじくり回してたけど、結局シンプルな形にしてしまいました。地味だけど仕方ない。そのうちマップチップを増やして、奥行きを表現したいです。
縦スクロール対応
今までは横スクロールしかしませんでしたが、マップエディタ導入を機にマップサイズを可変にし、縦にもスクロール出来るようにしました。横と違い、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;
}
