くまちゃんのiOS/Androidゲームプログラミング

マイペースでゲームつくってます。

ゲームプログラミングのはなし25

【ゲームプログラミングのはなし25】
さて。

当たり判定で難しいのは、「背景」との当たり判定です。

前2回の記事は、どちらもキャラクター同士の当たり判定でした。それぞれの大きさがある程度決まっているので、ある意味ラクなんです。

でも、スーパーマリオのブロックや、ドラクエの山地のように、背景マップとして描かれるモノとの当たり判定はどうするのでしょうか?

キャラクターと同じようにする、というのも一つの方法です。ただ、やろうとすればわかるんですが、メンドクサイことこの上ないです。

私が採用している方法は、背景やマップを描くときに、必ず配列を使っている(ブロックや山、草原などを1単位として)ので、キャラクターの座標をその背景の1単位(例えば32ピクセル)で割り算して、その配列に「今から動こうとしている先はブロックか?」と照会をかけ、そうであれば、動かさない、という方法です。

この場合、「実際に画面の絵を動かす前に」、当たり判定を動かして判定するのがミソです。

ある意味、数学的には写像や縮尺のプログラミングになるので、効率のいいアルゴリズムは他にももっとたくさんあると思います。私もここはまだ自分では納得いってないんですよね; (続く)
f:id:tadakazu1972:20140819084827j:plain