GLBasic forum

Other languages => GLBasic - de => Topic started by: Aniel on 2008-Mar-03

Title: Problem mit Kollisionen
Post by: Aniel on 2008-Mar-03
Hallo liebe GLBasic Gemeinde. Ich habe ein Problemchen mit den Kollisionen in meinem Test-Jump and Run. Ich kriege es ums verrecken nicht hin, den Hauptcharakter mit nem Block kollidieren zu lassen.

Hier mal ein  Bild der Situation:
(http://img219.imageshack.us/img219/6844/glbasicza7.jpg)

Der Charakter soll einfach mit den in der Luft hängenden Plattformen kollidieren, sprich, wenn er es berührt soll er stehen bleiben oder wenn er drauf hüpft soll er nicht durchfallen. Vom Ansatz her hab ich auch kein Problem damit, das Problem ist, das erst gar keine Kollision stattfindet.

Die Map ist folgendermaßen aufgebaut:

Code (glbasic) Select
DIM Hintergrund[5][1]

FOR Hintergrund_X = 0 TO 4
FOR Hintergrund_Y = 0 TO 0
Hintergrund[Hintergrund_X][Hintergrund_Y] = 0
NEXT
NEXT

DIM Level[125][19]

FOR Level_X = 0 TO 124
FOR Level_Y = 0 TO 18
IF Level_Y = 18
Level[Level_X][Level_Y] = 1
ELSE
Level[Level_X][Level_Y] = 0
ENDIF
NEXT
NEXT

Level[10][16] = 2
Level[11][16] = 2
Level[13][15] = 2
Level[14][15] = 2
Level[15][15] = 2
Level[16][15] = 2
Level[17][15] = 2
Level[18][15] = 2

Level[13][14] = 3
Level[14][14] = 3
Level[15][14] = 3
Level[16][14] = 3
Level[17][14] = 3
Level[18][14] = 3

WHILE TRUE
FOR Hintergrund_X = 0 TO 4
FOR Hintergrund_Y = 0 TO 0
DRAWSPRITE 108 ,Hintergrund_X*800 + Scrolling_X,Hintergrund_Y*576
NEXT
NEXT

FOR Level_X = 0 TO 124
FOR Level_Y = 0 TO 18
IF Level[Level_X][Level_Y] = 1
DRAWSPRITE 109 ,Level_X*32 + Scrolling_X,Level_Y*32
ENDIF
IF Level[Level_X][Level_Y] = 2
DRAWSPRITE 110 ,Level_X*32 + Scrolling_X,Level_Y*32
ENDIF
IF Level[Level_X][Level_Y] = 3
DRAWSPRITE 111 ,Level_X*32 + Scrolling_X,Level_Y*32
ENDIF
NEXT
NEXT
SHOWSCREEN
WEND
Die Bewegung des Spielers funktioniert nach folgendem Prinzip:

Code (glbasic) Select
// --->Nach Rechts gehen


IF KEY (205) AND KEY (203) = 0 AND KEY (42) = 0 AND Jump = 0 AND Angriff = 0  
      Richtung = 0                                                               //O = Rechts
      Bewegung = 1                                                               //Bewegung ist vorhanden
      Geschwindigkeit = 2                                                        //Geschwindigkeit wird festgelegt

      IF Spieler <= 2 OR Spieler >= 7 THEN Spieler = 2           //Sprite für Animation              

      IF Timer < GETTIMERALL()              
        INC Spieler, 1                      
        Timer = GETTIMERALL() + AniVer      
      ENDIF

      INC Spieler_X, Geschwindigkeit
ENDIF
Ich habe da jetzt schon alles versucht was mir so eingefallen ist, aber ich schaffe es einfach nicht, dass überhaupt eine Kollision stattfindet.

Mein Ansatz war in etwa der:

Code (glbasic) Select
IF SPRCOLL (110,Level_X*32,Level_Y*32,Spieler,Spieler_X,Spieler_Y)
//110 sind die Plattformen und sie sind 32*32 groß
PRINT "EINE KOLLISION FINDET STATT!!!!!!!!!!!!" ,100,100
ENDIF
Funktionieren tut es aber nicht. Ich habe auch schon versucht ein Rechteck um den Char und legen und das dann zum Sprite zu machen um darüber die Kollision laufen zu lassen, aber auch da kein Erfolg. Bin mit meinem Latein am Ende, habe schon alle Tutorials durchgeschaut (z.B. JumpKid, Jamaicat,.....) aber schaffe es trotzdem nicht. Bitte um Hilfe^^

LG
Aniel



EDIT: Das sind nur Codeausschnitte. Wenn ich den Projektordner mal hochladen soll um einen besseren Überblick zu verschaffen, kann ich das gerne machen.
Title: Problem mit Kollisionen
Post by: Schranz0r on 2008-Mar-03
Schau dir das mal an :

Hab ich mal vor ein paar Monaten gemacht also Codeschnippsel

http://www.styleattax.de/Jumpkid.rar
Title: Problem mit Kollisionen
Post by: Aniel on 2008-Mar-03
Hab ich mir schon angeschaut, bringt mich aber nicht wirklich weiter, da ich da nicht genau verstehe wie du jetzt ne Kollision erzeugst. Ich hab zwar gecheckt, das du Linien zeichnest und die dann mit den Sprites kollidieren lässt, aber wieso und warum ist daraus nicht ersichtlich, da es unübersichtlich und nahezu gar nicht dokumentiert ist.
Title: Problem mit Kollisionen
Post by: Schranz0r on 2008-Mar-03
4 Sprites für 4 Richtungen.

Ach und nur zur Info:


Code (glbasic) Select
SPRCOLL (110,Level_X*32+Scrolling_X,Level_Y*32,Spieler,Spieler_X,Spieler_Y)Du hast das + Scrolling_X vergessen!