私はSDL 2を初めて使用し、弾丸と宇宙船の間の衝突検出にしばらく悩まされてきました。
何が起こらなければならないかは理解していますが、何が何と衝突し、どのようにコードを配置するかについて混乱しています。衝突検出は機能せず、私が行った他のいくつかの試みでは、弾丸が画面の反対側にある場合でも、宇宙船の y 座標で消えてしまいました! 怠惰な foo チュートリアルに基づいています。
私のコード全体はここにあります: http://codepad.org/YaCavBvm
LazyFoo に基づく私の衝突検出:
//sides of sprite rectangles
int leftBullet, leftEnemy;
int rightBullet, rightEnemy;
int topBullet, topEnemy;
int bottomBullet, bottomEnemy;
//Calculate the sides of bullet
leftBullet = posBullet.x;
rightBullet = posBullet.x + BULLET_WIDTH;
topBullet = posBullet.y;
bottomBullet = posBullet.y + BULLET_HEIGHT;
//Calculate the sides of enemy
leftEnemy = posEnemy.x;
rightEnemy = posEnemy.x + SPRITE_WIDTH;
topEnemy = posEnemy.y;
bottomEnemy = posEnemy.y + SPRITE_HEIGHT;
for (int i=0; i<MAX_BULLETS; i++)
{
if (topBullet == bottomEnemy)
{
arrayofBullets[i].isActive = false;
}
}