kollisionsabfrage

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Kouki.

    kollisionsabfrage

    hallo,
    ich schreibe grade ein kleines spiel, dabei kann ich eine picbox mit den pfeiltasten steuern,
    wenn diese picturebox jetzt gegen eine andere picbox trifft, soll etwas passiern.
    Das klappt auch schon, nur habe ich nicht nur eine andere picbox sondern viele,
    und ich will das etwas passiert egal gegen welche picbox die erste picbox trifft.
    hier erst mal mein code:

    VB.NET-Quellcode

    1. If PictureBox1.Bounds.IntersectsWith(picbox2.Bounds) Then picbox2.Bounds = New Rectangle(X:=mPos.Next(1, 800), Y:=mPos.Next(1, 800), Height:=600, Width:=450)





    ich hoffe das hat jemand verstanden^^

    MfG Karim

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „karimaerox“ ()

    Hey Karim,
    ich bin grad nicht zu Hause und schreibe mit dem Handy.
    Deshalb kann leider nicht testen, ob der Code auch funktioniert.

    VB.NET-Quellcode

    1. Dim IsCollision As Boolean = False
    2. For Each Ctrl As Control In Me.Controls
    3. If TypeOf(Ctrl) Is PictureBox Then
    4. IsCollision = If(PictureBoxPlayer.Bounds.IntersectsWith(DirectCast(Ctrl, PictureBox).Bounds), True, IsCollision)
    5. End If
    6. Next
    7. If IsCollision Then
    8. ' Kollision
    9. End If

    MfG,
    -haiyyu
    ja ich habe ja auch schon eine kollisionsabfrage nur muss man da ja jede picturebox einzeln angeben
    aber das kann ich ja nicht da ich immer unterschiedlich viele picboxen habe.
    also müsste es einen code geben, dass wenn eine andere picbox gegen die zu steuernde picbox trifft was passiert.

    MfG Karim
    @haiyyu deinen code habe ich eben garnicht gesehen ^^
    der klappt auch ganz gut nur weiß ich ja nicht gegen welche picturebox die pictureboxplayer
    getroffen ist
    bei einer kollision soll die getroffene picbox aber ihre position ändern.
    dafür habe ich diesen code:

    VB.NET-Quellcode

    1. If PictureBox1.Bounds.IntersectsWith(picbox2.Bounds) Then picbox2.Bounds = New Rectangle(X:=mPos.Next(1, 800), Y:=mPos.Next(1, 800), Height:=35, Width:=35)


    aber wenn ich den namen der picbox ja nicht kenne bringt mir der code auch nichts.
    also kann mir vilt. einer sagen wie ich die getroffene picbox herausfinden kann?

    MfG Karim

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „karimaerox“ ()

    Hey Karim,
    das geht ganz einfach.

    VB.NET-Quellcode

    1. Dim IsCollision As Boolean = False
    2. Dim PicBox As PictureBox
    3. For Each Ctrl As Control In Me.Controls
    4. If TypeOf(Ctrl) Is PictureBox Then
    5. If PictureBoxPlayer.Bounds.IntersectsWith(DirectCast(Ctrl, PictureBox).Bounds)
    6. IsCollision = True
    7. PicBox = DirectCast(Ctrl, PictureBox)
    8. End If
    9. End If
    10. Next
    11. If IsCollision Then
    12. ' Kollision
    13. ' Beispiel:
    14. MessageBox.Show("Die PictureBox mit dem Namen " & PicBox.Name & " wurde getroffen.")
    15. End If

    MfG,
    -haiyyu