2017-08-15 2 views
0

Ich versuche ein sehr, sehr einfaches Pongspiel zu machen und brauche Hilfe bei Objektkollisionen. Wenn ich den folgenden Code starte und das Programm starte, bewegt sich der Ball über den Bildschirm, aber wenn er auf das Paddel trifft, beginnt er nach links zu gehen, solange er das Paddel berührt, geht dann aber wieder nach rechts und bleibt stecken in einer Schleife. Dies ist wahrscheinlich ein ziemlich grundlegendes Problem, aber einige Hilfe wäre dankbar, danke.Wie kann ich eine Variable ändern, wenn zwei Objekte kollidieren?

Dim direction As Integer = 0 

    If ball.Bounds.IntersectsWith(paddle1.Bounds) Then 
     direction = 1 
    End If 

    If ball.Bounds.IntersectsWith(paddle2.Bounds) Then 
     direction = 2 
    End If 

    If direction = 2 Then 
     ball.Left += 15 
    End If 

    If direction = 1 Then 
     ball.Left -= 15 
    End If 
End Sub 
+0

Es gibt eine wirklich lustige [Kodierung Herausforderung] (https://www.youtube.com/watch?v=IIrC5Qcb2G4) von Daniel Shiffman über die Programmierung eines Pong-Beispiels. Es ist in Java mit Processing, aber es macht Spaß zu sehen und Sie lernen eine Menge über Dinge wie Collusion Detecting: – FunThomas

Antwort

0

Hinzufügen eines zusätzlichen Flag (sagen wir, canBounce), die Aktualisierung geändert wird die Richtung/steuert, ob erlaubt, und setzen ihn auf einmal false Kreuzung erfasst wird.

Als nächstes, wenn die Kreuzungsprüfung fehlschlägt, können Sie wieder canBounce = true setzen.

Nur die Richtung ändern, wenn die Kreuzung erkannt wird undcanBounce == true.

Auf diese Weise wird die Richtung nicht jeden Frame ändern, in dem dieser Code ausgeführt wird, sondern nur im ersten Frame des Schnittpunkts, bis es nicht mehr passiert (d. H. Der Ball wurde aus dem sich kreuzenden Paddel verschoben).

0

Als ich es herausgefunden hatte, hatte ich im Timer "direction" erklärt, also ging es ständig nach rechts.

Verwandte Themen