Gravitationsprobleme!!!

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von enIking1998.

    Gravitationsprobleme!!!

    Hallo liebes Forum.
    Habe ein kleines Problem...

    Und zwar, habe ich, um es komfortabel und "professionell" handzuhaben, ein Stack und ein Array von Rectangles,

    VB.NET-Quellcode

    1. Dim stack_of_gravitation As New Stack(Of Rectangle)
    2. Dim gravitate As Boolean
    3. Private Sub AddGravitationObjects()
    4. Platform(0) = New Rectangle(1000, 650, 120, 30)
    5. Platform(1) = New Rectangle(1200, 600, 120, 30)
    6. Platform(2) = New Rectangle(900, 400, 120, 30)
    7. Platform(3) = New Rectangle(650, 350, 120, 30)
    8. Platform(4) = New Rectangle(300, 300, 120, 30)
    9. Platform(5) = New Rectangle(12, 260, 120, 30)
    10. Dim recs = New Rectangle() {Platform(0), Platform(1), Platform(2), Platform(3), Platform(4), Platform(5)}
    11. For index = 0 To recs.GetUpperBound(0)
    12. stack_of_gravitation.Push(recs(index))
    13. Next
    14. added = True
    15. End Sub


    Soweit so gut!
    Nun überprüfe ich durch die .IntersectWith-Methode, ob eine Kollision zwischen Spieler und Rectangle stattfindet,

    VB.NET-Quellcode

    1. For Each gravitation As Rectangle In stack_of_gravitation
    2. If RecBottomOfPlayer.IntersectsWith(gravitation) Then
    3. gravitate = True
    4. Else
    5. gravitate = False
    6. End If
    7. Next


    Das funktioniert nicht...
    Spricht, der Spieler kann durchhüpfen, ausnahme bei Einem...
    Der erste Rectangle wirkt, die anderen 5, tuen nicht das was sie sollen...

    Hoffe auf Antworten...

    EDIT: Ich hab statt ein Boolean zurückzugeben, eine MessageBox ausgegeben.
    Und jedes mal, ist eine Kollision stattgefunden, prompt eine MessageBox auf...

    Beim Boolean ist es auch so, nur dass beim Rest des Rectangles, dieses nicht verwertet wird...
    Scheint mir nach einem Bug...
    Hoffe auf Antworten...

    Mfg.eniking1998

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

    Hi
    wenn du's auf False setzt, ist die Kollision nat. wieder zurückgesetzt. Breche einfach per Exit For ab bei einer Kollision und setze dort gravitate-->collided o.ä. auf True. Was es mit dem Stack auf sich hat, weiß ich allerdings nicht. Insg. ist mir die Benennung etwas unbequem.
    Variablen innerhalb von Typen sollten mit Private, Public, Protected, Protected Friend oder Friend deklariert werden, nicht aber mit Dim. Dim ist für Methodenrümpfe.

    Gruß
    ~blaze~