ANIMCOLL() funktioniert nicht.

Previous topic - Next topic

D2O

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.
I7 2600K; 8 GB RAM ; Win10 Pro x64 | NVidia GTX 750 TI 2048MB ; Realtec OnBoard Sound;
Lenovo ThinkPad T400: XP Pro
GLB Premium-immer Aktuell

Kitty Hello

Ach so!? Hund:Stufe 7 mit Laterne Stufe 0..5?
Wo soll das Sinn machen?

D2O

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 :(
I7 2600K; 8 GB RAM ; Win10 Pro x64 | NVidia GTX 750 TI 2048MB ; Realtec OnBoard Sound;
Lenovo ThinkPad T400: XP Pro
GLB Premium-immer Aktuell

Kitty Hello

OK. Wir reden aneinander vorbei.

Wumbo.png:


Katze.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

D2O

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.

I7 2600K; 8 GB RAM ; Win10 Pro x64 | NVidia GTX 750 TI 2048MB ; Realtec OnBoard Sound;
Lenovo ThinkPad T400: XP Pro
GLB Premium-immer Aktuell

Kitty Hello

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!

blastar

@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!?

Kitty Hello

Irgendwie sowas muss es sein. Ich versetehe leider nicht, wie er sich das vorstellt, darum muss ich immer so dumm nachfragen.

blastar

@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

D2O

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
I7 2600K; 8 GB RAM ; Win10 Pro x64 | NVidia GTX 750 TI 2048MB ; Realtec OnBoard Sound;
Lenovo ThinkPad T400: XP Pro
GLB Premium-immer Aktuell

D2O

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
I7 2600K; 8 GB RAM ; Win10 Pro x64 | NVidia GTX 750 TI 2048MB ; Realtec OnBoard Sound;
Lenovo ThinkPad T400: XP Pro
GLB Premium-immer Aktuell

Kitty Hello

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?

D2O

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.
I7 2600K; 8 GB RAM ; Win10 Pro x64 | NVidia GTX 750 TI 2048MB ; Realtec OnBoard Sound;
Lenovo ThinkPad T400: XP Pro
GLB Premium-immer Aktuell

Kitty Hello

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.