Objektberührung

  • Hallo Leute :)
    Ich bin zurzeit an einem Spiel und bräuchte etwas Hilfe.Ich hatte schon einige Funktionen die herausfinden ob ein Objekt ein anderes berührt,aber diese waren einfach zu langsam.
    Kennt jemand von euch eine bzw. mehrere Funktionen dafür ? Sollte schnell (und) komfortabel sein,da es viele Objekte in einer Map gibt.

    Einmal editiert, zuletzt von nof@ker2 (28. Mai 2009 um 11:27)

  • Also ich denke es bleibt dir nur die möglichkeit die Positionen zu vergleichen! Die Positionen würde ich in Array speichern oder so, aber es währe bessen wenn du ein Script hättest

    mfg. Jam00

  • Probiers mal mit der Funktion:

    Spoiler anzeigen
    [autoit]

    Func _RectCollision($Rect1X1,$Rect1Y1,$Rect1X2,$Rect1Y2, $Rect2X1, $Rect2Y1, $Rect2X2, $Rect2Y2)
    ; Prog@ndy
    Local Const $tagRECT = "long;long;long;long"
    Local $1 = DllStructCreate($tagRECT)
    Local $2 = DllStructCreate($tagRECT)
    Local $3 = DllStructCreate($tagRECT)
    DllStructSetData($1,1,$Rect1X1)
    DllStructSetData($1,2,$Rect1Y1)
    DllStructSetData($1,3,$Rect1X2)
    DllStructSetData($1,4,$Rect1Y2)
    DllStructSetData($2,1,$Rect2X1)
    DllStructSetData($2,2,$Rect2Y1)
    DllStructSetData($2,3,$Rect2X2)
    DllStructSetData($2,4,$Rect2Y2)
    Local $r = DllCall("User32.dll", "int", "IntersectRect", "ptr", DllStructGetPtr($3), "ptr", DllStructGetPtr($1), "ptr", DllStructGetPtr($2))
    If @error Then Return SetError(1,0,0)
    Return $r[0]<>0
    EndFunc

    [/autoit]

    Ist für Rechtecke, sollte aber recht schnell sein.

  • danke Greek funktioniert :) Falls es nochmal Probleme gibt werde ich mich melden :D