2016-07-03 9 views
1

Also im Grunde sind lead_x und lead_y Koordinaten eines Dinges, und so sind MineX und MineY.Pygame Missile Coll

if lead_x > XMine and lead_x < XMine + MineThickness: 
    if lead_x + block_size > XMine and lead_x + block_size < XMine + MineThickness: 
     if lead_y > YMine and lead_y < YMine + MineThickness: 
      gameOver = True 

Grundsätzlich wollte ich eine Hitze suchende Rakete Art der Sache zu schaffen. Das obige Stück Code soll Kollision behandeln.

Allerdings ist die Kollision wirklich unruhig. Manchmal fängt es es und manchmal nicht.

Hier ist das Stück Code darüber, verwendet, um das Objekt wirken als suche Rakete zu machen:

gameDisplay.blit(mine, (XMine, YMine)) 
if lead_x > XMine: 
     XMine += 5 
if lead_x < XMine: 
     XMine -= 5 
if lead_y > YMine: 
     YMine += 5 
if lead_y < YMine: 
     YMine -= 5 

(BLOCK_SIZE stellt die Größe des Ziels des Raketen- und MineThickness ist die Größe des Geschosses Sprite. Auch das war alles in Pygame gemacht.)

Auch ich weiß, der Suchcode ist ein aber dumm, aber ich wollte einfach nicht zu kompliziert damit werden. Wenn Sie irgendwelche Vorschläge haben, werde ich froh sein, sie zu integrieren :)

Vielen Dank!

Antwort

0

Pygame bietet eine Vielzahl von Funktionen, um das zu erreichen, was Sie manuell tun möchten. Wenn Sie Ihre Spielobjekte mit Sprites erstellen, können Sie nur Sprite.colliderect für die Kollision zweier rechteckiger Sprites verwenden.

Wenn Sie es tun wollen manuell können Sie die Axis-Aligned Bounding Box Methode verwenden:

if (lead_x < XMine + MineThickness && lead_x + block_size > XMine): 
    // x-axis constraints are met 

    if (lead_y < YMine + MineThickness && block_size + lead_y > YMine): 
     // y-axis constraints are met 

     gameOver = True 

Diese Antwort geht davon aus, dass beide Sprites quadratisch sind.