objs.add(obj);
以下略
このオブジェ設定関数のみ、blockPassingをfalseにしている。
壁を通過する幽霊みたいなオブジェにしてもいいのだが、
今回は敵オブジェは全て壁を貫通して移動できないようにした。
//----------------------------------------------------------
//ブロック衝突チェック
//----------------------------------------------------------
private void objBlockHitCheck(ObjectBase obj) {
//まず、ブロックが有効なものをピックしてその対応する番号だけblockNum配列に放り込む。
int blocksSize=gData.blocks.size();
//ブロックが一個以上あれば当たり判定チェックに入る。
if (blocksSize >= 1) {
//プレイヤーとブロックのチェックから
int pxy[]=obj.getxy(); //プレイヤーの座標とサイズを抜く。
for (int i=0; i<= blocksSize-1; i++) {
int bxy[]=gData.blocks.get(i).getxy();
int oxy[]=collision.block(pxy,bxy);
//重なっている分を強引に押し戻す。
if (oxy[2]!=0) obj.movexy(oxy[0], oxy[1]);
}
}
}
プレイヤーの衝突チェックは省略。
それをアレンジし、オブジェ専用の衝突チェックを作った。
共通した物に作り替えようと思ったが、10数行追加するだけなので別口で作った。
特筆して解説する部分はない。
今回はこれだけ。非常に簡単だが、一気に追加すると訳が分からなくなるので小分けに作った。
次回は戦闘場面の背景をダンジョン、草原とつかいわけるようにする。
敵シンボルに触れたら戦闘に入る様にする。
同時に、戦闘に負けたら拠点へ飛ばされる処理を追加する。
・トップページへ戻る