GLBasic forum

Main forum => Bug Reports => Topic started by: WPShadow on 2009-Jul-15

Title: FOREACH & X_COLLISION
Post by: WPShadow on 2009-Jul-15
Hi!

X_COLLISION funktioniert super, da? hei?t, bis man es mit FOREACH verbindet.

Sobald beides zusammen arbeiten soll, reagiert X_COLLISION erst auf das letzte Objekt das erstellt wurde!

In meinem 3D - Test, den ich gemacht habe verh?lt es sich folgenderma?en:

- auf den 1. Schuss wird gar nicht reagiert
- auf Sch?sse dazwischen wird reagiert
- auf den letzten Schuss wird widerum nicht reagiert

Bei meinem Alpha - Test von LR reagiert es genauso, wobei hier nur auf den letzten der Sch?sse reagiert wird, wenn ich FOREACH nutze.

Ich habe mal so nebenbei ein kleines Beispiel gemacht, das es ziemlich anschaulich darstellt!

Gru?

W.

PS.: Das Beispiel ist frei nach Schranz0r's Schusstest mit Types kopiert!

[attachment deleted by admin]
Title: Re: FOREACH & X_COLLISION
Post by: WPShadow on 2009-Jul-15
UPDATE:

Nachdem ich das Ganze jetzt ausgiebig getestet habe, ergibt sich der selbe Fehler sowohl mit FOREACH, als auch mit FOR/NEXT und BOUNDS.

Weiters ist mir in meinem Projekt aufgefallen, da? rein optisch X_COLLISION (und auch AABB) eine R?ckmeldung des Treffers liefern, jedoch keinen Wert zur?ck geben!

"col" bleibt 0 bis zum letzten Objekt, das einschl?gt! Das widerum wird korrekt zur?ck geliefert!
Title: Re: FOREACH & X_COLLISION
Post by: Kitty Hello on 2009-Jul-15
Du musst X_MOVEMENT _VOR_ X_COLLISION machen. Sonst wei? GLBasic ja nicht _wo_ das Objekt ist.
Title: Re: FOREACH & X_COLLISION
Post by: WPShadow on 2009-Jul-15
Habe ich gerade, macht keinen Unterschied! "col" gibt mir keine Reaktion zur?ck, bis der letzte Schuss trifft!
Title: Re: FOREACH & X_COLLISION
Post by: Schranz0r on 2009-Jul-15
bei mir gehts...
Title: Re: FOREACH & X_COLLISION
Post by: WPShadow on 2009-Jul-15
Mach mal einen einzelnen Schuss!
Title: Re: FOREACH & X_COLLISION
Post by: Schranz0r on 2009-Jul-15
Jo, das Ding wird rot wenns durchfliegt
Title: Re: FOREACH & X_COLLISION
Post by: WPShadow on 2009-Jul-15
Das ja, liefert aber keinen Wert zur?ck!!!
Title: Re: FOREACH & X_COLLISION
Post by: Kitty Hello on 2009-Jul-15
Geht
Code (glbasic) Select

// --------------------------------- //
// Project: Foreach Test
// Start: Wednesday, July 15, 2009
// IDE Version: 6.248


TYPE shot
x
ENDTYPE

LOCAL mx, my, b1, b2

LOCAL newshot AS shot

LOCAL shots[] AS shot

X_LOADOBJ "wurfel.ddd", 0




WHILE TRUE

X_MAKE3D 1, 1000, 45

X_CAMERA 1000, 50, 0, 0, 0, 0

MOUSESTATE mx, my, b1, b2


X_DRAWOBJ 0, 0


IF b1 = 1  AND timer < GETTIMERALL()
newshot.x = 0    //--|

DIMPUSH shots[], newshot // Werte der Positionen übergeben
timer = GETTIMERALL()+500 //Timer höher setzen und verzögerung einfügen!
ENDIF


col=0
FOREACH Check IN shots[] // eine Variable durchdüsen lassen (aktualisieren)
INC Check.x, 10                       //schuss um 2 nach oben versetzen
IF Check.x > 1000 THEN DELETE Check  //wenn schuss y < 0 dann löschen

X_MOVEMENT Check.x, 0, 0
X_DRAWOBJ 0, 0
INC col , X_COLLISION(0, 0, 100, 500, 0, 0)
NEXT

X_MAKE2D

PRINT "Shots: "+BOUNDS(shots[], 0), 0,0
PRINT "Col: "+col, 0,20





SHOWSCREEN

WEND

qed.
Title: Re: FOREACH & X_COLLISION
Post by: WPShadow on 2009-Jul-15
Ok, mit INC teste ich mal! Gebe dann morgen bescheid, ob es so geht!

UPDATE:

Teste noch, aber scheinbar scheint alles zu funktionieren!