カタツムリ2007年10月01日

オブジェクト同士のあたり判定(その4)

さて、みなさんどうなりましたか?

ここから、ファイルをダウンロードできます。

私は、以下のようなアルゴリズムを考えてみました。

まず移動後の自分の座標と、相手の移動前の座標を比較します。

つまり静止している相手に対して、自分の次の動き(相手への当たり方?)を考えて見ました。

その場合、相手との距離において、2通り考えられます。

まず①、距離がない場合、自分が左にいて、右となりに相手が接触している場合です。

この場合、自分が一つ右に移動すると、相手と丁度マスが重なります。

data.pp(0).hit_f = 0 'hit flag clear
data.pp(0).pos_x = data.p_pos_x '移動したところに、相手(四角)がいた場合
data.pp(0).pos_y = data.p_pos_y

この場合は、重なることはできずに、反対方向へ移動させることになります。

次に②は、相手と丁度重なった状態から、右へ一つ移動した場合です。

この場合は、元の座標に相手がいることになりますので、こちらも当たりとなり、

反対方向に移動しますね。

data.pp(1).hit_f = 0 'hit flag clear
data.pp(1).pos_x = data.p_pos_x + (data.speed_x * -1) '移動した元の場所に、相手(四角)がいた場合
data.pp(1).pos_y = data.p_pos_y + (data.speed_y * -1)

移動後をシミレートして、ひとつ前の座標と比較するので、実は、今の座標です。

ただここでは、2つの座標を新たに生成してから、ループによって比較させて、プログラムの共通化を図っています。

まだ、他の方法もあると思いますので、みなさんも、いろいろ挑戦してみて下さい。

また、このプログラムにもバグはあります。

四角のオブジェクトをいろいろな方向に動かして下さい。

このバグを直せたら、もう一人前かも知れませんよ!


ツイッターはじめました~フォロー待ってま~す!!
↓↓↓下記の3つのバナーをクリックして下さい。ランキングUPにご協力をお願いします。↓↓↓

にほんブログ村 経営ブログへランキングUP!

ランキングUP!

banner2.gif 人気blogランキング!

投稿者 shiozumi : 23:07 | トラックバック (0)

このエントリーのトラックバックURL

http://blog.e-smile.ne.jp/cgi-bin/mt/mt-tb.cgi/73