Hallo,
ich habe eine (etwas naive) Frage: Wie funktioniert die Kollisionsabfrage bei Polyvector? Wie genau kann ich die abfragen?
LG
W.
[Google Translate]
Polyvectors haben keine Kollisionsabfrage Methode.
Andere Leute haben polyvectors für die Geschwindigkeit Leistungen verwendet, während mit Standard-Sprite-Kollision Prüfungen für die Kollisionen.
Das heißt, Sie müssen auch über den Gegenwert geladen Sprites.
Ein POLYCOLLIDE Befehl wäre schön!
Aber da Polys nicht gezwungen sind, ein Rechteck, könnte die Mathematik ziemlich lahm.
Vielleicht eine besondere POLYCOLLIDE dass ein Rechteck übernimmt Poly Paar?
[Original English]
Polyvectors don't have a collision detection method.
Other people have used polyvectors for the speed benefits, while using standard sprite collision checks for the collisions.
That means you also need to have the equivalent sprites loaded.
A POLYCOLLIDE command would be nice!
But since polys aren't forced to be a rectangle, the math could get pretty slow.
Maybe a special POLYCOLLIDE that assumes a rectangle poly pair?
Sounds bad! Than I will use Sprites for the gfx! thx!!!
SchranzOr --> entschuldige den Doppelpost!
Andere Frage: Da ich meine Strategie ändern muß, würde ich gerne 1 Sprite laden, mehrfach am Bildschirm darstellen und jedes Sprite als eigenes Kollisionsobjekt nutzen. Geht das irgendwie???
Wenn du die mit Polyvector arbeitest, wirst du ja sehr wahrscheinlich die Koordinaten für die Ecken haben. Da du, laut eigenen Aussagen das ganze auch mit Sprites lösen kannst, wirst du nur convexe Polygone haben. Dann kannst du testen ob ein Punkt in dem Polygon ist. Testet man also alle Ecken des einen, ob sie in dem anderen sind und umgekehrt, hat man einen Hittest. Also in etwa so
// returns true if x,y in polygon x1,y1;x2,y2...
IF ((y - y1) * (x2 - x1)) - ((x - x1) * (y2 - y1)) <= 0 THEN RETURN FALSE
IF ((y - y2) * (x3 - x2)) - ((x - x2) * (y3 - y2)) <= 0 THEN RETURN FALSE
IF ((y - y3) * (x4 - x3)) - ((x - x3) * (y4 - y3)) <= 0 THEN RETURN FALSE
IF ((y - y4) * (x1 - x4)) - ((x - x4) * (y1 - y4)) <= 0 THEN RETURN FALSE
RETURN TRUE
Wenn die Eckkoordinaten sowiso vorberechnet werden, ist die Geschwindigkeit annehmbar.
Hey, das ist eine super Lösung! Soweit habe ich nun selbst nicht gedacht! :)
Danke sehr! Damit wäre das Problem voraussichtlich gelöst! Mache mich daheim sofort an die Arteit! :booze: