Ob eine Kollision ein Power-Up gewährt oder zum Game Over führt, Sie müssen in der Lage sein, sie zu erkennen. Hier erfahren Sie, wie Sie dies mit der Arcade-Bibliothek von Python tun.
Kollisionen sind ein grundlegender Aspekt des Gameplays in vielen Genres von Videospielen. Sie fügen den Spielen eine Ebene der Herausforderung und Aufregung hinzu, bei der die Spieler Hindernisse überwinden, Feinden ausweichen und Belohnungen sammeln müssen.
Die Implementierung von Kollisionserkennung und -behandlung in Ihren Spielen ist entscheidend für die Erstellung realistischer und dynamischer Spielmechaniken, die die Spieler beschäftigen und unterhalten. Sie können Kollisionen mit der Arcade-Bibliothek leicht erkennen, indem Sie die integrierten Funktionen verwenden.
Erstellen eines einfachen Spiels
Bevor Sie beginnen, vergewissern Sie sich, dass Sie dies getan haben pip auf Ihrem Gerät installiert. Verwenden Sie diesen Befehl, um die Arcade-Bibliothek zu installieren:
Pip Arcade installieren
Erstellen Sie danach ein Spiel, in dem sich der Spieler nach links und rechts bewegen kann, um eine Kollision mit einem feindlichen Rechteck zu vermeiden. Sie können die eingebaute Zeichenfunktion für Sprites verwenden.
Sie finden das komplette Code in diesem GitHub-Repo.
Hier ist der Code für das Spiel:
importieren Arkade
SCREEN_WIDTH = 640
SCREEN_HEIGHT = 480
MOVEMENT_SPEED = 5KlasseMein Spiel(Arkade. Fenster):
def__drin__(Selbst, Breite, Höhe):
super().__init__(Breite, Höhe, "Mein Spiel")
arcade.set_background_color (arcade.color. WEISS)
self.player = Spielhalle. SpriteSolidColor(50, 50, arcade.color. BLAU)
self.player.center_x = SCREEN_WIDTH // 3
self.player.center_y = 50
self.enemy = Spielhalle. SpriteSolidColor(50, 50, arcade.color. ROT)
self.enemy.center_x = SCREEN_WIDTH // 2
self.enemy.center_y = 50defon_draw(selbst):
arcade.start_render()
self.player.draw()
self.enemy.draw()defon_key_press(Selbst, Schlüssel, Modifikatoren):
Wenn Schlüssel == arcade.Schlüssel. LINKS:
self.player.center_x -= MOVEMENT_SPEED
elf Schlüssel == arcade.Schlüssel. RECHTS:
self.player.center_x += MOVEMENT_SPEEDdefaktualisieren(selbst, delta_time):
Wenn arcade.check_for_collision (self.player, self.enemy):
drucken("Spiel ist aus")defhauptsächlich():
Spiel = Mein Spiel (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()
Wenn __name__ == "__hauptsächlich__":
hauptsächlich()
Kollisionserkennungsfunktionen von Arcade
Die Arcade-Bibliothek bietet eine einfache Möglichkeit, Kollisionen zwischen Sprites zu erkennen. Der check_for_collision Die Funktion nimmt zwei Sprites als Argumente und gibt einen booleschen Wert zurück, der angibt, ob die Sprites kollidiert sind. Sie können diese Funktion verwenden, um Kollisionen zwischen dem Spieler und feindlichen Sprites in Ihrem Spiel zu erkennen.
Sie können die ändern aktualisieren Methode, um nach Kollisionen zwischen dem Spieler und feindlichen Sprites zu suchen. Wenn die Bibliothek eine Kollision erkennt, können Sie drucken Spiel ist aus zur Konsole.
Hier ist der aktualisierte Code:
defaktualisieren(selbst, delta_time):
Wenn arcade.check_for_collision (self.player, self.enemy):
drucken("Spiel ist aus")
anders:
self.player.update()
Mit dieser Änderung erkennt Ihr Spiel Kollisionen und druckt Spiel ist aus Text, wenn der Spieler mit dem Feind kollidiert.
Hinzufügen weiterer Funktionen
Um Ihr Spiel ansprechender zu gestalten, können Sie zusätzliche Funktionen wie Punkte, Power-Ups und mehrere Feinde hinzufügen.
Sie können beispielsweise eine Liste mit Feinden erstellen und das Spiel aktualisieren, um nach jeder Kollision neue Feinde an zufälligen Positionen zu spawnen. Du kannst Spieler bewegen links und rechts, um dem Feind auszuweichen und einen Punkt zu erzielen. Hier ist ein Beispiel dafür, wie Sie diese Funktionen implementieren können:
importieren willkürlich
KlasseMein Spiel(Arkade. Fenster):
def__drin__(Selbst, Breite, Höhe):
super().__init__(Breite, Höhe, "Mein Spiel")
arcade.set_background_color (arcade.color. WEISS)
self.player = Spielhalle. SpriteSolidColor(50, 50, arcade.color. BLAU)
self.player.center_x = SCREEN_WIDTH // 2
self.player.center_y = 50
self.enemies = Spielhalle. SpriteListe()
self.score = 0
für ich In Bereich(3):
Feind = Spielhalle. SpriteSolidColor(50, 50, arcade.color. ROT)
feind.center_x = random.randint (0, BILDSCHIRMBREITE)
feind.center_y = random.randint (SCREEN_HEIGHT // 2, SCREEN_HEIGHT)
self.enemies.append (Feind)defon_draw(selbst):
arcade.start_render()
self.player.draw()
self.enemies.draw()
arcade.draw_text (f"Punktzahl: {self.score}", 10, SCREEN_HEIGHT - 30, arcade.color. SCHWARZ, 16)
defaktualisieren(selbst, delta_time):
Wenn arcade.check_for_collision_with_list (self.player, self.enemies):
drucken("Spiel ist aus")
arcade.close_window()
anders:
self.player.update()
für Feind In Selbst.Feinde:
feind.center_y -= MOVEMENT_SPEED / 2
Wenn feind.center_y < 0:
feind.center_x = random.randint (0, BILDSCHIRMBREITE)
feind.center_y = random.randint (SCREEN_HEIGHT // 2, SCREEN_HEIGHT)
self.score += 1
Mit diesen Änderungen hat Ihr Spiel jetzt mehrere Feinde, die an zufälligen Positionen spawnen und sich nach unten bewegen. Der Spieler erhält einen Punkt für jeden erfolgreich vermiedenen Feind, und das Spiel endet, wenn der Spieler mit einem Feind kollidiert.
Verbessern Sie die Benutzerinteraktion mit Kollisionen
Indem Sie Ihren Spielen Kollisionserkennungs- und Handhabungsfunktionen hinzufügen, können Sie immersivere und herausforderndere Spielerlebnisse für Spieler schaffen. Von einfachen Vermeidungs- und Sammelspielen bis hin zu komplexeren Plattformspielen und Shootern spielen Kollisionen eine entscheidende Rolle bei der Schaffung ansprechender und zufriedenstellender Spielmechaniken.
Wenn Sie also ansprechendere und immersivere Spiele erstellen möchten, die die Spieler immer wieder zurückkommen lassen, sollten Sie in Erwägung ziehen, Kollisionserkennungsfunktionen in Ihre Spielmechanik zu integrieren.