C言語(C++)プログラミング シューティングゲームで、当たり判定に影響を及ぼさずに弾の速さを変えたいのですが、どうすればよいでしょうか。

C言語(C++)プログラミング シューティングゲームで、当たり判定に影響を及ぼさずに弾の速さを変えたいのですが、どうすればよいでしょうか。 上から真下に1つの弾を撃つとします。 弾の座標をbullet.x,bullet.yとし、弾の速さをbullet.vyとします。 そして、bullet.y+=bullet.vy; と代入して、変化後の弾の座標を描画させます。 しかしこの方法の場合、bullet.vy=100のように大きな値にすると、弾のy座標は100ずつ足されますから、物体をすり抜けてしまいます。 すり抜けずに、弾の間隔や弾の速さを指定するにはどうすればよいでしょうか。

C言語関連999閲覧xmlns="http://www.w3.org/2000/svg">50

ベストアンサー

0

当たり判定を、 弾の移動前後の位置をつないで、長い物体として判定するのが簡単です。 例: (0,0)-(10,10)の弾が(0,100)-(10,110)に移動する場合、(0,0)-(10,110)の物体として当たり判定を行う。 弾が直線運動じゃないなら、 すこしづつ動かし判定、をループで移動分繰り返すといいでしょう。 例: for(i=0;i<bullet.vy;i++){ bullet.y+=1; ここで当たり判定をする }

ThanksImg質問者からのお礼コメント

ありがとうございました。

お礼日時:2012/2/24 12:51