この記事内の計算に誤りがあることをご指摘いただきました。
正しい計算式などは 有り難いご意見に記載していただきました。 よろしければそちらをご覧ください。 ご迷惑をかけて申し訳ございません。 以下のトンチキな計算なども、黒歴史として残しておきます・・・ 笑いながら見てやってください・・・ プログラムでゲームを作成する上で、時にヒマラヤ山脈級の巨大なヤマとなり、 その人をプログラムの道から諦めさせてしまうものがある。 それは、物体と物体の『当たり判定』だ。 大概のゲームなら、四角と四角の当たり判定のプログラムが書ければ大丈夫。 その一つ上のレベルは丸と丸の当たり判定だと勝手に思い込んでいる。 ちょいと説明してみる・・・分かりにくいかもしれないが・・・ プレイヤーの座標 player_x=100; player_y=100; プレイヤーの当たり判定円サイズ player_size=50; 弾の座標 bullet_x=30; bullet_y=80; 弾の当たり判定円サイズ bullet_size=30; プレイヤーと弾の距離 (player_x-bullet_x)+(player_y-bullet_y)で、これの√(ルート) (100-30)+(100-80)=90 これのルートなので √90 プレイヤーと弾の当たり判定円サイズの合計 player_size+bullet_size 50+30=80 で、 80 > √90 ならば プレイヤーは弾に当たっている・・・これは当たってますね。 文字だけの説明は難しい。 PR |
プレイヤーと弾の距離の求め方ですが…
三平方の定理により 底辺^2 + 高さ^2 = 斜辺^2 つまり (100-30)^2 + (100-80)^2 のルートなので、プレイヤーと弾の距離は√5300 = 72.8 です。 弾が当たっているというのは変わりありませんが、√90 = 9.48 は流石に短すぎやしないかと(xの距離が70ある的な意味で) ……当たり判定って、難しいですよね。
【2011/09/30 23:01】| | Namu3 #55499089f1 [ 編集 ]
|
|
トラックバックURL
|