私はポンのゲームを作ろうとしています。画面にすべてを描画し、壁のボールをバウンドさせ、パドルがマップ内にのみあることを確認しました. 私が抱えている問題の1つは、衝突検出です。私が使用しているアルゴリズムは、ボール (実際には正方形) がパドルの端からぶら下がっていない状態でパドルの真ん中に当たる場合にうまく機能します。ボールがパドルの角に当たったり、ボールの一部がパドルからぶら下がったりすると、ボールはパドルにグリッチし、跳ね返りません。これが私のアルゴリズムです...
bool CheckCollision(float Ax,float Ay,float Aw,float Ah,float Bx,float By,
float Bw,float Bh) {
if(Ax>Bx+Bw) {
return(false);
}else if(Ax+Aw<Bx) {
return(false);
}else if(Ay>By+Bh) {
return(false);
}else if(Ay+Ah<By) {
return(false);
}
return(true);
}
A と B は異なるオブジェクトを表し、x、y、w、および h は、その特定のオブジェクトの x pos、y pos、幅、および高さを表します。受信側では...
if(CheckCollision(ball->x,ball->y,ball->width,ball->height,paddle->x,paddle->y,
paddle->width,paddle->height)) {
ball->vellx = -ball->vellx;
}
これは、ボールがパドルの真ん中に当たった場合、前述のように機能します。
もしあなたがこれを理解しているなら(私は言葉が上手ではないことを知っているので)、ボールがパドルにグリッチしないようにする方法はありますか?そうでない場合、使用できる別のアルゴリズムはありますか? これは 2D のみであることに注意してください。
これは何が起こっているかのスクリーンショットです
http://gyazo.com/920d529217864cca6480a91b217c9b61
ご覧のとおり、ボールの側面には衝突がなく、ポイントだけです。
これが役立つことを願っています