mir ist eine abweichung bei dem befehl BOXCOLL aufgefallen, die function stimmt nicht mit der beschreibung überein:
" Überprüft, ob sich 2 Rechtecke überlappen... "
allerdings gibt der befehl auch TRUE zurück wenn sie die Rechteckte nur berühren.
start:
IF BOXCOLL( 0,0, 16, 16, 16, 16, 16, 16)
PRINT "collide!", 100, 100
ENDIF
SHOWSCREEN
GOTO start
ich wollte ein objeckt an einer "wand" entlang gleiten lassen was damit allerdings nichtböglich ist! :-( der workaround für mich ist es eines der objecte als "x +1, y+2, 14, 14 " zu deklrarieren anstatt "x, y, 16, 16"!
bug oder muss das so sein?
kein Bug , funktioniert normal! :
WHILE TRUE
MOUSESTATE mx, my, ba, bb
DRAWRECT 100,100,16,16, RGB(0x80, 0xff, 0x00)
DRAWRECT mx,my,16,16, RGB(0xff, 0x00, 0x00)
IF BOXCOLL( mx, my, 16, 16, 100, 100, 16, 16)
PRINT "!!! COLLISION !!!", 100, 150
ENDIF
SHOWSCREEN
WEND
END
hmm,
es haben beide Recht :nana:
im Prinzip sagst du bei Boxcoll, wieviele weitere Pixel er kontrollieren soll (d.h. wenn du 10 Pixel kontrollieren willst, gibst du hier eine 9 ein!) -> siehe untere Beispiele: wenn du 0,0 sagst, kontrolliert er es Pixelgenau (d.h. er kontrolliert das eine Pixel)
Hier Pixelgenau (nur auf 100/100 meldet das Teil Kolision)
(Mann sieht, ich gebe der Boxcoll 0,0 Pixel mit)
WHILE TRUE
MOUSESTATE mx, my, ba, bb
DRAWRECT 100,100,1,1, RGB(0x80, 0xff, 0x00)
DRAWRECT mx,my,1,1, RGB(0xff, 0x00, 0x00)
PRINT mx+" "+my,100,170
IF BOXCOLL( mx, my, 0, 0, 100, 100, 0, 0)
PRINT "!!! COLLISION !!!", 100, 150
ENDIF
SHOWSCREEN
WEND
END
Wenn ich beim mx-Boxcoll 1,1 Pixel mitgebe, checkt er die mx-Koordinaten + 1 Pixel nach rechts und unten (dadurch entstehen deine Kontakte (also letztendlich 2 Pixel)
WHILE TRUE
MOUSESTATE mx, my, ba, bb
DRAWRECT 100,100,1,1, RGB(0x80, 0xff, 0x00)
DRAWRECT mx,my,1,1, RGB(0xff, 0x00, 0x00)
PRINT mx+" "+my,100,170
IF BOXCOLL( mx, my, 1, 1, 100, 100, 0, 0)
PRINT "!!! COLLISION !!!", 100, 150
ENDIF
SHOWSCREEN
WEND
END
Wenn ich statt beim mx, beim 100/100-Rechteck bei Boxcoll 1,1 eingebe, checkt er zusaetzlich zu dem Rechteck noch 1 Pixel (rechts/unten) mit (also letzendlich 2 Pixel)
WHILE TRUE
MOUSESTATE mx, my, ba, bb
DRAWRECT 100,100,1,1, RGB(0x80, 0xff, 0x00)
DRAWRECT mx,my,1,1, RGB(0xff, 0x00, 0x00)
PRINT mx+" "+my,100,170
IF BOXCOLL( mx, my, 0, 0, 100, 100, 1, 1)
PRINT "!!! COLLISION !!!", 100, 150
ENDIF
SHOWSCREEN
WEND
END
IF BOXCOLL( 0,0, 16, 16, 16, 16, 16, 16)
PRINT "collide!", 100, 100
SHOWSCREEN
END
ENDIF
BUG! Gaaaahhhh!
Ist aber schon immer so :D
Ich mach mal'n Update für V6, OK?
spitze... daaaaaaaaaaaanke... wann kommst das update? morgen??? :'(
muss noch überlegen, weil ich einen anderen Compiler für WIZ verwende. Ich neige fast dazu zu sagen: "Mach Dir solange eine Wrapper-Funktion".
Sorry, aber ich hab' noch einen Fehler im Compiler entdeckt und warte noch auf eine Antwort aus Korea. Ist halt beta :/
ist schon ok... so schwierig ist es ja nicht das problem zu umgehen... hoffe die neue v6 kommt pünklich und es wäre super wenn die von anfang an stabil ist.. also lasse dir zeit... aber spätestens wenn der wiz in den versand geht brauche ich das ding auf meiner platte! :-)
Deal!
Ich bin gerade dabei auf OpenGL|ES umzuschalten - scheint ein Problem mit meinem WIZ zu geben - wir sehen bald weiter.
Ohha....