Author Topic: Problem mit Kollisionen  (Read 1312 times)

Aniel

  • Guest
Problem mit Kollisionen
« 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:


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.

Offline Schranz0r

  • Premium User :)
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 5019
  • O Rly?
    • View Profile
Problem mit Kollisionen
« Reply #1 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
I <3 DGArray's :D

PC:
AMD RYzen 7 1700 @3.9Ghz, 16GB HyperX Fury 2666Mhz Ram, ASUS ROG GTX 1060 STRIX 6GB, Windows 10 Pro 64Bit, MSi Tomahawk B350 Mainboard

Aniel

  • Guest
Problem mit Kollisionen
« Reply #2 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.

Offline Schranz0r

  • Premium User :)
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 5019
  • O Rly?
    • View Profile
Problem mit Kollisionen
« Reply #3 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!
I <3 DGArray's :D

PC:
AMD RYzen 7 1700 @3.9Ghz, 16GB HyperX Fury 2666Mhz Ram, ASUS ROG GTX 1060 STRIX 6GB, Windows 10 Pro 64Bit, MSi Tomahawk B350 Mainboard