GLBasic forum

Main forum => Bug Reports => Topic started by: D2O on 2008-Apr-12

Title: ANIMCOLL() funktioniert nicht.
Post by: D2O on 2008-Apr-12
Hi, im fogenden code sollte es eine Collision mit dem rechten bild geben, aber auch nur
wenn Frame 2 (das dritte bild) angezeigt wird.
Hier bekomme ich aber permanent eine Collision gemeldet?
Genauso mit dem linken bild, hier wird nur Frame 0  gezeichnet und eine collision auf frame 2 geprüft,
trotzdem gibts ne Collision.
Code (glbasic) Select
// --------------------------------- //
// Project: Ani_bug
// Start: Saturday, April 12, 2008
// IDE Version: 5.227


SETTRANSPARENCY RGB(0,0,0)
LOADANIM "1.png",1,64,64
LOADANIM "2.png",2,64,64

a = 0
temp = 0
time = 0

WHILE TRUE
time = GETTIMERALL()
MOUSESTATE mx,my,b1,b2

DRAWANIM 2,0,100,100
DRAWANIM 2,a,200,100
IF (time-temp) > 100
temp = time
INC a,1
ENDIF
IF a > 10 THEN a = 0

DRAWANIM 1,0,mx,my

PRINT ANIMCOLL(1,0,mx,my,2,2,100,100),10,10
PRINT ANIMCOLL(1,0,mx,my,2,2,200,100),30,10


SHOWSCREEN
WEND
Hier gibts das ganze Paket zum Download:
http://www.deuteriumoxid.com/glbasic/Ani_bug.zip
Title: ANIMCOLL() funktioniert nicht.
Post by: Kitty Hello on 2008-Apr-14
Da musst Du bei ANIMCOLL statt 1,0 eben 2,a machen. Oder... äh.
Also - ich versteh das Problem nicht.
Title: ANIMCOLL() funktioniert nicht.
Post by: D2O on 2008-Apr-14
Quote from: GernotFrischDa musst Du bei ANIMCOLL statt 1,0 eben 2,a machen. Oder... äh.
Also - ich versteh das Problem nicht.
Blub %&$%  jetzt versteh ich Dich nicht.

Ich möchte das nur eine collision angezeigt wird wenn vom 2. Bild der 3. Frame angezeigt wird.
Es wird aber, egal was für ein Frame ich benutze eine Collision angezeigt.
Vieleicht bin ich im momemt etwas bergriffstuzig.
Und einer ändert den code mal so das es funktioniert;)

Hier nochmals der Code, leicht verändert.
Code (glbasic) Select
SETTRANSPARENCY RGB(0,0,0)
LOADANIM "1.png",1,64,64
LOADANIM "2.png",2,64,64

GLOBAL a = 0 // Counter für die Animation

WHILE TRUE
time = GETTIMERALL()
MOUSESTATE mx,my,b1,b2


DRAWANIM 2,a,200,100 // Das Animierte Bild anzeigen
// a bestimmt den Frame


IF (time-temp) > 250 // jede 20 millisec. a um 1 erhöhen
temp = time
INC a,1
ENDIF
IF a > 10 THEN a = 0 // Sicherheits abfrage damit nur
// die vorhandenen Frames angezeigt werden



DRAWANIM 1,0,mx,my // Bild an die Mousecoordinaten geheftet


// Hier Dürfte nur eine 1 zurückgegeben werden wenn das Bild1 an der Mouse
// mit dem 3.Frame vom Bild2 Collidiert.
// es wird aber immer, egal welcher Frame benutzt wird eine Collision angezeigt!??

PRINT ANIMCOLL(1,0,mx,my,2,2,200,100),30,10


SHOWSCREEN
WEND
Title: ANIMCOLL() funktioniert nicht.
Post by: Kitty Hello on 2008-Apr-14
NEIN!
ANIMCOLL(1,0,... 2,2,...
gibt zurück, ob Animation 1 mit frame 0 an stelle mx, my (Also Mauspfeil) mit Animation 2, Frame 2 bei 200,100 kollidiert.
Wenn Du nur beim Anzeigen des 3. Frames kollidieren willst must Du:

Code (glbasic) Select
IF a = 3
   PRINT ANIMCOLL(1,0,mx,ym,    2,  3   ,200,100), 30,10
ENDIF
machen.
Title: ANIMCOLL() funktioniert nicht.
Post by: D2O on 2008-Apr-14
Ja, das geht.
Bzw. aus ym ein my machen ;)

Aber so wollte ich das nicht haben.

ANIMCOLL() sollte doch selber ein 1 bei einer kollision zurückliefern und eine 0  bei keiner kollision.
Sie liefert aber immer eine 1 zurück egal welcher Frame das Bild2 hat.
Wenn ich hier ne If abfrage einbauen muss ist doch der vorteil gegenüber SPRCOLL() futsch :(
Dann kann man gleich wieder einzelne tiles laden und die überprüfen.
Oder nicht?
Title: ANIMCOLL() funktioniert nicht.
Post by: Kitty Hello on 2008-Apr-14
Äh... Moment. Ich glaube Du hast was nicht ganz kapiert. ANIMCOLL _ist_ SPRCOLL, nur dass Du zu der LOADANIM-ID zusätzlich den Frame-ID angeben musst. Wenn Du was mit DRAWNIM zeichnest, dann hat der ANIMCOLL davon keine Ahnung.
Oder verstehe ich Dich falsch? Bin jetzt bisserl verwirrt.
Title: ANIMCOLL() funktioniert nicht.
Post by: D2O on 2008-Apr-15
Ah, ok.

Jetzt wirds klar.
Also muss ich ne extra abfrage machen.
Ich war nun voll überzeugt, das ANIMCOLL speziell nur ein True zurückliefert wenn das Frame selber collidiert.

Es sollte in etwas so funktionieren wie es z.B in BB gehandhabt wird:
Wert=IMAGESCOLLIDE (Bild1, X1, Y1, Frame1, Bild2, X2, Y2, Frame2)
Dort wir nur eine Collision zurück geliefert wenn der Tatsächliche Frame von Bild 1 mit dem Frame von Bild 2 collidiert.

Schade dass das nicht so ist, wäre vieleicht ein vorschlag/wunsch :)

Ok, in diesem fall muss ich da anderes rangehen.
Danke.
Title: ANIMCOLL() funktioniert nicht.
Post by: Kitty Hello on 2008-Apr-15
In BB ist der IMAGESCOLLIDE doch so, dass er weiß wo/wie ein Ding steht, oder?
In GLBasic st das nur eine Kollisionsabfrage der Pixel von Bild1 mit Bild2.
Title: ANIMCOLL() funktioniert nicht.
Post by: D2O on 2008-Apr-15
Quote from: GernotFrischIn BB ist der IMAGESCOLLIDE doch so, dass er weiß wo/wie ein Ding steht, oder?
In GLBasic st das nur eine Kollisionsabfrage der Pixel von Bild1 mit Bild2.
Hmm, meinst Du ne BOXcollision über die Position?
Dann nein, hier wird auch pixelgenau geprüft.
Wie das aber genau intern gehandhabt wird weis ich auch nicht, vieleicht hat das auch mit diesem Entitysytem zu tun.
Oder es erden hier die einzelnen Frames intern in einer liste oder array gespeichert.

Hier mal ein beispiel wie ich es gelöst hatte, es ist nicht so schön aber es funktioniert :)
Schön wäre es wenn sowas intern passiert.

Die Gfx gibts hier.
http://www.deuteriumoxid.com/glbasic/tile.bmp
http://www.deuteriumoxid.com/glbasic/tile2.png

Code (glbasic) Select
// --------------------------------- //
// Project: Loadanim_v7
// Start: Monday, January 28, 2008
// IDE Version: 5.150



// Code example :

GLOBAL player1 AS Tsprite
GLOBAL player2 AS Tsprite


player1= loadimage("tile.bmp",32,32,18)
player2 = loadimage("tile2.png",128,64,18)
//
GLOBAL a
WHILE TRUE
time = GETTIMERALL()
MOUSESTATE mx,my,b1,b2




DRAWSPRITE player2.pic[a],100,100
DRAWSPRITE player1.pic[0],mx,my

SHOWSCREEN



PRINT spranicoll (player1.pic[0],player1.pic[0],mx,my,player2.pic[a],player2.pic[5],100,100),0,300


IF (time-temp) > 250 // jede 250 millisec. a um 1 erhöhen
temp = time
INC a,1
ENDIF
IF a > 17 THEN a = 0


WEND
/////////// Code example End







FUNCTION spranicoll : pic1,frame1,posx1,posy1,pic2,frame2,posx2,posy2

LOCAL l_out = 0



IF pic1 = frame1 AND pic2 = frame2
l_out = SPRCOLL (pic1,posx1,posy1,pic2,posx2,posy2)
ENDIF

RETURN l_out

ENDFUNCTION





//--------------------------------loadimage---------------------------
//  file Path, tile wight, tile high, tile pay down

FUNCTION loadimage AS Tsprite:l_path$,l_tilex,l_tiley,l_anzahl
    STATIC s_counter  
    STATIC s_ctrl
                IF s_ctrl = 0
                    s_counter = 1000 //Ab 1000 damit überschneidungen mit loadsprite nicht vorkommen
                    s_ctrl = 1
                ENDIF
        //-------------
    LOCAL l_x,l_y  // zum berechnen der Tile anzahl aus der Image grösse
    LOCAL  l_xcount,l_ycount // Counter für die Positions verschiebung
    LOCAL imagetemp // für die aufnahme des Tilsets
    LOCAL image AS Tsprite //für die aufnahme der Tiles
    LOCAL l_showload // Variablen für Ladebalken
    LOCAL l_prozent
    l_showload = 100/l_anzahl

    image.tilex = l_tilex
    image.tiley = l_tiley
    image.frame = l_anzahl -1


    LOCAL l_posx,l_posy     // Variablien für Grundposition auf die sich die Verschiebung berechnet| x = 0 | y = 0
    LOCAL l_i                 // für die for schleife
    LOCAL countertemp


        REDIM image.pic[l_anzahl]

            countertemp = s_counter    //Index Temporär speichen um später den Speicher wieder freizu geben
            LOADSPRITE l_path$,countertemp //image laden
            GETSPRITESIZE countertemp,l_x,l_y    //Image grösse ermitteln

                l_x = INTEGER(l_x/l_tilex)
                l_y = INTEGER(l_y/l_tiley)



                     LOADSPRITE l_path$,countertemp
                         INC s_counter,1  //index um 1 erhöhen


            FOR l_i = 0 TO l_anzahl-1

                    IF l_xcount < l_x
                            l_posx = (-l_tilex*l_xcount)
                            ELSE
                                l_xcount = 0
                                l_posx = (-l_tilex*l_xcount)
                                INC l_ycount,1
                    ENDIF

                    IF l_ycount < l_y
                            l_posy = (-l_tiley*l_ycount)
                            ELSE
                                INC l_ycount,1
                                l_posy = (-l_tiley*l_ycount)
                    ENDIF
                    DRAWRECT 0,0,l_tilex,l_tiley,RGB(255,0,128) ///<<<<<<<< FIX :)
                    DRAWSPRITE countertemp,l_posx,l_posy
                    GRABSPRITE s_counter,0,0,l_tilex,l_tiley
                    BLACKSCREEN
                   
                    ///Ladebalken---------------
                    INC l_prozent,l_showload
                       PRINT INTEGER(l_prozent)+"% geladen",1+l_prozent,80
                          DRAWRECT 0, 100, 1*l_prozent, 20, RGB(0, 255, 255) //Türkis

                    ///-----------------------------
                   
                   
                    SHOWSCREEN //__________________________________________
                   
                   
                        image.pic[l_i] = s_counter
                    INC l_xcount,1
                    INC s_counter,1
            NEXT

                LOADSPRITE "",countertemp  //Speichfreigenen
               
                RETURN image

ENDFUNCTION




// Dieser Type wir gebraucht um aus der function loadimage ein array als rückgabe wert zu nutzen
// er könnte auch für die bild positionen usw. erweitert werden
TYPE Tsprite
pic[]
x //positionen
y
tilex // Tilegrösse
tiley
frame //anzahl der frames
ENDTYPE
Title: ANIMCOLL() funktioniert nicht.
Post by: Kitty Hello on 2008-Apr-15
Sorry, aber ich kapier echt nicht warum Du das so kompliziert machst. Schranzor - Du kannst doch BB. Weißt Du wo unsere Verständigungsprobleme sind?
Title: ANIMCOLL() funktioniert nicht.
Post by: Schranz0r on 2008-Apr-15
http://www.blitzbase.de/befehle2d/imagescollide.htm

Versteh auch net das Problem?!

BB:
Code (glbasic) Select
Wert=IMAGESCOLLIDE (Bild1, X1, Y1, Frame1, Bild2, X2, Y2, Frame2)GLB:
Code (glbasic) Select
col# = ANIMCOLL(ani1#,frame1#, x1#,y1#, ani2#,frame2#, x2#,y2#)für mich das selbe in grün :)

Einen vorschlag hätte ich aber noch Gernot

LOADANIM sollte die Frameanzahl returnen.
Oder ein GETANIMFRAMES um die genaue Anzahl der Frames zu bekommen.
Weil wenn man über das Ziel(Frames) kommt, dann kommen nurnoch halbe Bilder/komische abgeschnitte Sachen.


EDIT:

Ich glaub ich weiss wieso ^^
Wie Gernot schon sagte weiss das Programm nicht das du den nächsten Frame drin hast , und somit weiss das ANIMCOLL auch net!
So ist für mich ANIMCOLL unbrauchbar, das könnte man dann ja gleich mit einer IF frame = 5 AND BOXCOLL(tile,x,y,tile2,x2,y2); tuwas = 1; ENDIF z.B machen ....
Title: ANIMCOLL() funktioniert nicht.
Post by: Kitty Hello on 2008-Apr-15
animcoll is doch pixelgenaue kollision von 2 animations-stufen.
Title: ANIMCOLL() funktioniert nicht.
Post by: Schranz0r on 2008-Apr-15
Ja Gernot, aber nich für einzelne/feststehende Frames.
Wie willst du prüfen ob das Sprite auf der Mouse X/Y  auch wirklich das Sprite auf Frame 3 z.B berührt?
Ich habs net hin bekommen.
Title: ANIMCOLL() funktioniert nicht.
Post by: Kitty Hello on 2008-Apr-15
Ja... bin ich jetzt bekloppt!?
Code (glbasic) Select
LOADANIM "hund_laufen", 0,32,32
LOADANIM "laterne_blinken", 1,32,128

ANIMCOLL 0,hund_animation, hund_x, hund_y, 1, laterne_blinken, laterne_x, laterne_y
...oder ist da ein Bug drin?
Title: ANIMCOLL() funktioniert nicht.
Post by: Schranz0r on 2008-Apr-15
Gernot :)
 
Nicht alle Frames prüfen, sondern nur einen z.B frame 7 vom hund_laufen mit voller animation von laterne_blinken!
Title: ANIMCOLL() funktioniert nicht.
Post by: D2O on 2008-Apr-16
Quote from: Schranz0rGernot :)
 
Nicht alle Frames prüfen, sondern nur einen z.B frame 7 vom hund_laufen mit voller animation von laterne_blinken!
Genau :) das ist das was ich meine.
Danke Schranz0r.

Das "komplizierte" beispiel von mir prüft die Frames einzeln, so als wären es eigenständige Sprites.
AnimColl behandelt aber alle eigenständigen Frames als ein Sprite.
Title: ANIMCOLL() funktioniert nicht.
Post by: Kitty Hello on 2008-Apr-16
Ach so!? Hund:Stufe 7 mit Laterne Stufe 0..5?
Wo soll das Sinn machen?
Title: ANIMCOLL() funktioniert nicht.
Post by: D2O on 2008-Apr-16
Quote from: GernotFrischAch so!? Hund:Stufe 7 mit Laterne Stufe 0..5?
Wo soll das Sinn machen?
Hmmpf.


OK, ich seh schon, Du willst nicht :(

In meinen Augen hat ANIMCOLL() hier sein ziel, sinn und zweck verfehlt.

Ich möchte ja Tilesets laden, die beinhalten nicht nur ne Animation von einer Figur, in diesem Tileset können Figuren, Bäume, Steiner(Wände) und mehr enthalten sein.
Im moment kann ich das so nicht laden, da ich nie die einzelnen Frames auf kollision prüfen kann.
Ich muss also entweder alle "objekte" aufsplitten oder gleich jedes frame einzeln laden und dann kann man gleich
wieder LOADsprite ,Drawsprite und SprColl verwenden.

Hier sind dann die ganzen Anim... befehle umsonst :(
Title: ANIMCOLL() funktioniert nicht.
Post by: Kitty Hello on 2008-Apr-16
OK. Wir reden aneinander vorbei.

Wumbo.png:
(http://img147.imageshack.us/img147/408/clipchap1dp0.th.png) (http://img147.imageshack.us/my.php?image=clipchap1dp0.png)

Katze.png:
(http://img440.imageshack.us/img440/8792/katzeih2.png) (http://img440.imageshack.us/my.php?image=katzeih2.png)

Jetzt möchte ich prüfen, ob Wumbo, nach rechts laufens (Frame = 2) mit Katze nach unten laufend (Frame = 4) kollidiert:

Code (glbasic) Select
LOADANIM "wumbo.png", 100, 32,32
LOADANIM "katze.png",    200, 48,48

IF ANIMCOLL (100,2, wumbox, wumboy, 200,4, katzex, katzey)
   GernotGewinnt()
ELSE
   GernotInsIrrenhaus()
ENDIF
Title: ANIMCOLL() funktioniert nicht.
Post by: D2O on 2008-Apr-16
Ok, Gernot,
in Deinem Beispiel Spielt es aber keine Rolle welches Frame Du angibst,

ob DU
ANIMCOLL (100,2, wumbox, wumboy, 200,4, katzex, katzey)
angibst.
Es kann auch bei dem code wumbos erstes frame mit dem 3. frame der katze zusmmen treffen und es
wird eine Kollision angezeigt obwohl in der abfrage/befehle das hier steht: ANIMCOLL (100,2, wumbox, wumboy, 200,4, katzex, katzey)

Mach mal bitte mit dem Tile von mir eine Kollision vom 11. frame (Blaue Ball) und dem 22.Frame (Eingeramter Blauer Würfel)
und nur diese zwei Frames Dürfen eine Kollision ausgeben und das nur mit
ANIMCOLL (.......) ohne ne If.... Abfrage.

Ich bekomms nicht hin.

(http://www.deuteriumoxid.com/glbasic/tileset.png)
Title: ANIMCOLL() funktioniert nicht.
Post by: Kitty Hello on 2008-Apr-16
Geht:

Code (glbasic) Select
SETTRANSPARENCY RGB(0,0,0) // Dein Tileset hat schwarz transparent
LOADANIM "tileset.png", 0, 32,32


rahmenx = 100
rahmeny = 100

WHILE TRUE
MOUSESTATE ballx, bally, b1,b2

// START - nur damit man was sieht!
DRAWRECT 0,0,640,480,RGB(128,128,128)
DRAWANIM 0, 11, ballx, bally
DRAWANIM 0, 22, rahmenx, rahmeny
// END - nur damit man was sieht!

PRINT ANIMCOLL(0,11,ballx,bally,  0,22,rahmenx,rahmeny),0,0
SHOWSCREEN
WEND
EDIT: Schöne Grafiken hast Du da!
Title: ANIMCOLL() funktioniert nicht.
Post by: blastar on 2008-Apr-16
@D²O:
kann es sein dass du davon ausgehst dass bei einem DRAWANIM() die dargestellte animation irgendwie "einrastet" und diesen zustand bei einem ANIMCOLL() mit einbezieht!?
Title: ANIMCOLL() funktioniert nicht.
Post by: Kitty Hello on 2008-Apr-16
Irgendwie sowas muss es sein. Ich versetehe leider nicht, wie er sich das vorstellt, darum muss ich immer so dumm nachfragen.
Title: ANIMCOLL() funktioniert nicht.
Post by: blastar on 2008-Apr-16
@D²O:
normalerweise solltest du den dargestellten frame auf collision überprüfen - versuch mal das, sollte das sein was du suchst:
Code (glbasic) Select
SETTRANSPARENCY RGB(0,0,0) // Dein Tileset hat schwarz transparent
LOADANIM "tileset.png", 0, 32,32

rahmenx = 100
rahmeny = 100
testframe = 11

WHILE TRUE

IF KEY(02) THEN testframe = 11
IF KEY(03) THEN testframe = 20

    MOUSESTATE ballx, bally, b1,b2

    // START - nur damit man was sieht!
    DRAWRECT 0,0,640,480,RGB(128,128,128)
    DRAWANIM 0, testframe, ballx, bally
    DRAWANIM 0, 22, rahmenx, rahmeny
    // END - nur damit man was sieht!
   
PRINT "MIT TASTE '1' & '2' FRAMES UMSCHALTEN",0,0
    IF ANIMCOLL(0,testframe,ballx,bally, 0,22,rahmenx,rahmeny) THEN PRINT "FRAME #"+testframe,0,8
   
    SHOWSCREEN
   
WEND
Title: ANIMCOLL() funktioniert nicht.
Post by: D2O on 2008-Apr-17
Quote from: GernotFrischGeht:

Code (glbasic) Select
SETTRANSPARENCY RGB(0,0,0) // Dein Tileset hat schwarz transparent
LOADANIM "tileset.png", 0, 32,32


rahmenx = 100
rahmeny = 100

WHILE TRUE
MOUSESTATE ballx, bally, b1,b2

// START - nur damit man was sieht!
DRAWRECT 0,0,640,480,RGB(128,128,128)
DRAWANIM 0, 11, ballx, bally
DRAWANIM 0, 22, rahmenx, rahmeny
// END - nur damit man was sieht!

PRINT ANIMCOLL(0,11,ballx,bally,  0,22,rahmenx,rahmeny),0,0
SHOWSCREEN
WEND
EDIT: Schöne Grafiken hast Du da!
Hi Gernot, Dein Code um eine Zeile erweitert:)
Dann solltest Du sehen was ich meine.

Code (glbasic) Select
// --------------------------------- //
// Project: Abi_bug3
// Start: Thursday, April 17, 2008
// IDE Version: 5.227


SETTRANSPARENCY RGB(0,0,0) // Dein Tileset hat schwarz transparent
LOADANIM "tileset.png", 0, 32,32


rahmenx = 100
rahmeny = 100

WHILE TRUE
    MOUSESTATE ballx, bally, b1,b2

    // START - nur damit man was sieht!
    DRAWRECT 0,0,640,480,RGB(128,128,128)
    DRAWANIM 0, 11, ballx, bally
    DRAWANIM 0, 22, rahmenx, rahmeny
   

   
    // END - nur damit man was sieht!
   
    PRINT ANIMCOLL(0,11,ballx,bally,  0,22,rahmenx,rahmeny),0,0
   
   
    //Nun mein zusaatz, wieso gibt da ne Collisssion ??
    //Das ist der fehler den ich meine.
   
    PRINT ANIMCOLL(0,12,ballx,bally,  0,22,rahmenx,rahmeny),0,10 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
   
    SHOWSCREEN
WEND
Ach Danke, für die GFX.
Wenn ich endlich mal mehr zeit hätte, könnte ich mei Outbreak_X für GP2X porten.

@blaster, das gleiche Problem:
Code (glbasic) Select
SETTRANSPARENCY RGB(0,0,0) // Dein Tileset hat schwarz transparent
LOADANIM "tileset.png", 0, 32,32

rahmenx = 100
rahmeny = 100
testframe = 11

WHILE TRUE

    IF KEY(02) THEN testframe = 11
    IF KEY(03) THEN testframe = 20
   
    MOUSESTATE ballx, bally, b1,b2

    // START - nur damit man was sieht!
    DRAWRECT 0,0,640,480,RGB(128,128,128)
    DRAWANIM 0, testframe, ballx, bally
    DRAWANIM 0, 22, rahmenx, rahmeny
    // END - nur damit man was sieht!
   
    PRINT "MIT TASTE '1' & '2' FRAMES UMSCHALTEN",0,0
    IF ANIMCOLL(0,testframe,ballx,bally, 0,22,rahmenx,rahmeny) THEN PRINT "FRAME #"+testframe,0,8
   
    //Mein Zusatz
    IF ANIMCOLL(0,11,ballx,bally, 0,22,rahmenx,rahmeny) THEN PRINT "testframe #"+testframe,0,28
   
    SHOWSCREEN
   
WEND
Title: ANIMCOLL() funktioniert nicht.
Post by: D2O on 2008-Apr-17
Noch ein beispiel:
Kollision soll mit Frame 11 und 22 sein.
Gezeichnet wird aber Frame 11 und 32 und Trorzdem ne kollision ?



Code (glbasic) Select
SETTRANSPARENCY RGB(0,0,0) // Dein Tileset hat schwarz transparent
LOADANIM "tileset.png", 0, 32,32

rahmenx = 100
rahmeny = 400
speed = 2
bally = -32
ballx = 100
Frame = 11

WHILE TRUE
   
   bally = bally + speed
   IF bally > 480 OR ANIMCOLL(0,11,ballx,bally,  0,32,rahmenx,rahmeny) =1 THEN bally = -32

    // START - nur damit man was sieht!
    DRAWRECT 0,0,640,480,RGB(128,128,128)
    DRAWANIM 0, 11, ballx, bally
   
    DRAWANIM 0, 32, rahmenx, rahmeny
   


   
    SHOWSCREEN
WEND
Title: ANIMCOLL() funktioniert nicht.
Post by: Kitty Hello on 2008-Apr-17
JA!!! Weil: Was Du zeichnest interessiert den ANIMCOLL Null Komma Null.
Der prüft nur, wenn Du:
DRAWANIM a,b,c,d
DRAWANIM e,f,g,h
machen "würdest", ob sich dabei nicht-transparente Pixel üerlappen würden.
ANIMCOLL(a,b,c,d,  e,f,g,h)

Was Du wo wie mit DARANIM machst, hat keinen Einfluss. Ist das so verständlich?
Title: ANIMCOLL() funktioniert nicht.
Post by: D2O on 2008-Apr-17
Oki, jetzt hats click gemacht, man kann ich sturr sein ;)

In dem fall komm ich um eine Separate IF "frame" abfrage nicht herum.
Dumm :(

Na dann lieber MOD, mach mal den Thread zum papierknäul bevor ich einen andern noch verwirre ;)

Danke für Deine Gedult Gernot.
Title: ANIMCOLL() funktioniert nicht.
Post by: Kitty Hello on 2008-Apr-17
Ja, kein Problem. Ich hoffe, dass dieser Thread anderen hilft, die das gleiche Problem haben.

Oh. Dieses Forum bräuchte so ein "Accepted Solution" Häkchen.