> aber meiner compiled das irgendwie nicht, hmm...
öh... das sind auch reine prozeduren, ohne hauptprogramm...
> Wie sähe das ganze denn mit spritecollision() aus, ich glaube is doch etwas kürzer oder?
nur der befehl selber. natürlich kannst du das verwenden, aber später könnte sich das als unpraktisch erweisen.
> Ich möchte nämlich nichts in meinen code kopieren, von dem ich im endeffekt nix versteh`
sehr löblich
aber wie gesagt, ich erklärs gerne nochmal ausführlich.
können wir auch gerne in diesem thread machen, da bisher keiner an ihm interesse gezeigt hat.
für einen kollisionscheck, der einem SpriteCollision() entspricht, brauchst du nur die routine für die einfache box-kollision:
StdColl(x1,y1,a1,b1,x2,y2,a2,b2)
die Standard-Collision, funktioniert genauso wie SpriteCollision(), nur dass hier keine SpriteNummer angegeben wird, sondern Höhe und Breite des Objekts.
dadurch spart sie funktionsaufrufe, und ist außerdem auch für mittels DirectDraw gezeichnete Objekte verwendbar (z.b. Box() )
ich nenn die Proc mal anders...
Code: Alles auswählen
Procedure KG_SpriteCollision(x1,y1,a1,b1,x2,y2,a2,b2)
Coll = #False
If x1 < x2
dx = x2 - (x1 + a1)
Else
dx = x1 - (x2 + a2)
EndIf
If y1 < y2
dy = y2 - (y1 + b1)
Else
dy = y1 - (y2 + b2)
EndIf
If dx < 0 And dy < 0
Coll = #True
EndIf
ProcedureReturn Coll
EndProcedure
das kannst du (fast) genauso verwenden, wie den Befehl SpriteCollision.
PS:
...du hast editiert...
ja, von SpritePixelCollision rate ich grundsätzlich ab,
weil es für die meisten problemstellung absolut unnötiger aufwand ist,
jedes einzelne pixel von beiden sprites zu überprüfen.
man kann durch variation der koordinaten-überprüfung für
jede problemstellung den passenden check erstellen.