Picturebox auf Pfad bewegen???

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Picturebox auf Pfad bewegen???

    Tach,

    ich bin grad an nem spiel und wollte, dass meine Picturebox "person" eine bestimmte route abfährt.

    ich habe schon alle Punkte die sie ablaufen soll:


    VB.NET-Quellcode

    1. Dim leftUp As New Point(48, 48)
    2. Dim leftMiddle As New Point(48, 295)
    3. Dim leftDown As New Point(48, 590)
    4. Dim middleUp As New Point(440, 48)
    5. Dim middleMiddle As New Point(483, 290)
    6. Dim middleDown As New Point(438, 586)
    7. Dim rightUp As New Point(800, 48)
    8. Dim rightMiddle As New Point(800, 295)
    9. Dim rightDown As New Point(800, 586)


    so
    ich möchte, dass die PictureBox alle Punkte abläuft, sich während des laufens aber in einer sekunde um 5 pixel bewegt.
    habt ihr eine idee wie ich das lösen kann??

    lg LsFan :)
    Vor allem solltest du die Punkte als Array speichern, denn nur so kannst du den jeweils nächsten bestimmen.

    Edit: und hier hab ich mal ne Funktion aus meinem TowerDefense kopiert, die für die Bewegung der Gegner zuständig ist, das ist nämlich das selbe Problem.

    VB.NET-Quellcode

    1. Friend Function GetPoints(speed As Double) As PointF()
    2. Dim steps = Convert.ToInt32(length / speed)
    3. If steps > 0 Then
    4. Dim p(steps) As PointF
    5. p(0) = p1
    6. p(steps) = p2
    7. Dim sX = (P2.X - P1.X) / steps
    8. Dim sY = (P2.Y - P1.Y) / steps
    9. For i = 1 To steps - 1
    10. p(i) = New PointF(P1.X + i * sX, P1.Y + i * sY)
    11. Next
    12. Return p
    13. End If
    14. Return Nothing
    15. End Function

    P1 und P2 sind Anfangs- und Endpunkt, speed die Anzahl Pixel, die pro Tick zurückgelegt werden sollen und length die Länge des Weges (Abstand zwischen P1 und P2). Du bekommst ein PointArray raus, das alle Punkte enthält, die du nacheinander abfahren musst.

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

    @LsFan: Pack die Punkte in eine List(Of Point), setz Dir den Startindex, und in die Timer-Tick-Prozedur schreibst Du

    VB.NET-Quellcode

    1. PictureBox1.Location = MyList(index)
    2. index +=1
    3. If index >= MyList.Length Then
    4. index = 0
    5. End If
    Feddich.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!