Wie geht die Kolision on Funktion?

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von xXMichaelXx.

    Wie geht die Kolision on Funktion?

    Hi ich will ein Kleines Labyrint spiel machen aber wie mach ich es das die BictureBox1 nicht dur das Panel kommen kann.

    Ps: Bitte genaue Beschreibung!!

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „.:Kelgarn:.“ ()

    Das is mein Bis jetziger Quellcode

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
    3. If e.KeyCode = Keys.W Then
    4. PictureBox1.Top = PictureBox1.Top - 10
    5. End If
    6. If e.KeyCode = Keys.S Then
    7. PictureBox1.Top = PictureBox1.Top + 10
    8. End If
    9. If e.KeyCode = Keys.A Then
    10. PictureBox1.Left = PictureBox1.Left - 10
    11. End If
    12. If e.KeyCode = Keys.D Then
    13. PictureBox1.Left = PictureBox1.Left + 10
    14. End If
    15. End Sub
    16. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    17. End Sub
    18. End Class
    Hi,

    frag einfach in deinem KeyDown-Event mit einer der oben genannten Methoden ab, ob eine Kollision stattfinden würde, wenn du die Bewegung anhand der gedrückten Tasten ausführen würdest. Ergibt sich eine Kollision, führst du den Bewegungscode nicht aus, wenn nicht, dann schon. Alles klar?

    MfG
    Dabei ist zu beachten, wie du abfragen musst. Das heißt, wenn du abfragst, ob ein Pixel vor dir eine Mauer ist, das Ergebniss False ist und du um 10
    deine Figurbewegst, kann es nat. sein, dass in diesen 10 Pixeln nochmal eine Mauer liegt. D.h., du musst alle Positionen von 1 bis 10 durchgehen und überprüfen, ob sich dort ein Hinderniss befindet, darf sich das Objekt nur noch soweit bewegen, bis es an die Mauer stößt. Sowas löst man am besten mit Schleifen. Und noch etwas: Nactürlich geht auch die Funktion IntersectWith, aber so ein Spiel macht man gewöhnlicherweise mit GDI+ oder XNA und nicht mit PictureBoxen!
    MfG TheoTechnic