トップページ > 過去ログ > 記事閲覧
ブロックとの当たり判定
名前:ヨシタケ 日時: 2013/04/15 18:36

今私はブロック崩しを作っています。 しかし、どうもブロックにボールがあたったときブロックの動作がうまくいきません。無敵ブロックにボールがあたったときたまにボールがすり抜けてしまいます。これについては2つのブロックに同時にあたって判定されているのが問題だと思い、 if(HitBallandBlock(block1[i][j],pt,&needleflag) == TRUE || (HitBallandBlock(block1[i][j],pt,&needleflag) == TRUE && HitBallandBlock(block1[i-1][j],pt,&needleflag) == TRUE) || (HitBallandBlock(block1[i][j],pt,&needleflag) == TRUE && HitBallandBlock(block1[i+1][j],pt,&needleflag) == TRUE) || (HitBallandBlock(block1[i][j],pt,&needleflag) == TRUE && HitBallandBlock(block1[i][j-1],pt,&needleflag) == TRUE) || (HitBallandBlock(block1[i][j],pt,&needleflag) == TRUE && HitBallandBlock(block1[i][j+1],pt,&needleflag) == TRUE)){ } というようにしましたが、駄目でした。 下記のサイトにソースをアップしてあります。パスワードは「YT2013」です。 ttp://www1.axfc.net/uploader/so/2869965 ブロック全体の当たり判定の設定はblock.cppにボールがブロックにあたったときのボールの計算はball.cppのHitBallandBlock関数になります。 今は、ブロックの各4辺とボールが当たった時と ブロックの上の辺と左右の辺、下の辺と左右の辺が当たった時にボールの移動する向きを変えるようにしています。なにか別にいいやり方がある場合アドバイスいただけたらありがたく思います。 一応アップしたファイル内に問題点がわかりやすいよう動画を入れてあります。 (1)右上にある青いブロックにあたったときボールがおかした動きをする(上記の変更のせいだと思います。) (2)無敵ブロック(ねずみ色のブロック)にボールがあたったときボールがブロックをすり抜ける。

Page: 1 |

Re: ブロックとの当たり判定 ( No.1 )
名前:ヨシタケ 日時:2013/04/15 20:20

申し訳ございます。掲示板のルールをよく知らず、 別の場所で同じ質問をしていました。 「C言語何でも質問掲示板」 ttp://dixq.net/forum/viewtopic.php?f=3&t=12886#p103020 に同じ質問をしてあります。
Re: ブロックとの当たり判定 ( No.2 )
名前:管理人 日時:2013/04/30 00:16

C言語何でも質問掲示板の方でも挙がっていますが、すり抜け対策として 一回の移動量を少なくしてすり抜けが発生しないようにするのが簡単です // メインループ while() { int i; for( i = 0; i < 10; i++ ) { 当たり判定も伴う10分の1フレーム分だけ動かす処理 } 描画処理 ScreenFlip(); }

Page: 1 |