2D Tile Engine Tutorial, Tilekollision und Scrolling

Previous topic - Next topic

D2O

In bezug auf diesen Thread
http://www.glbasic.com/forum/index.php?topic=3513.0
habe ich mal ein kleines Tutorial geschrieben.

Erstellt werden 3 Layer, 2 davon per zufall.
Von der Playerposition abh?ngiges Mapscrolling.
Einfache Tile Kollision, Oben, Unten, Links und Rechts.
Und nur Zeichenen und berechnen was auf dem Screen sichtbar ist.

Ich hoffe, da ich kein besonders guter schreiberling bin, das es f?r Euch trotzdem
gut lesbar und verst?ndlich ist.

TileTutorial.zip
//*.pdf und *.exe
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

Orpheus_2003

Wow.

Danke D2O.
Hat mir geholfen. Sehr gutes Tut.
Das Problem mit der Pixelgenauen Kollision hab ich auch gerade.
Aber keine L?sung.
Mit Boxen ist es zu ungenau. Und die Pixelgenaue Koll ist zu langsam..
Echt er Hund drine...

Thx for your Tutorial....

Schranz0r

Du setzt die "Hitbox" innerhalb des K?rpers, ist doch wurscht ob dir da ein paar Pixel fl?ten gehen bei der Kollision :)

Machen gro?e Games wie Super Mario Bro. , Giana Systers usw, auch!
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

D2O

Oder Du machst eine Pixelgenaue Kollision eben nur dann wenn z.B. rechts neben den Player/Hero etwas zu ?berpr?fen ist.
Dann wird die kollison nur f?r das eine Objekt und nur zu diesem Zeitpunkt gemacht.
Wie schon gesagt, es f?hren viele wege nach Rom.

Sodele, muss mich langsam wieder fertig machen f?r die Maloche ;)
Heut scheint ein reger Verkehr nach Bregenz zu sein :(

Und Danke f?r das f?r Feedback.
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

Orpheus_2003

Hmm.

Ja. Aber mein Player hat auch Kollision nach unten.Boden.
Das ist auch bei mir im Moment Pixelgenau gel?st.
Aber ich finde schon noch ne L?sung.
Thx

Kitty Hello

Pixelgenau mit dem Boden gibt oft Probleme, weil man dann an einem Pixel h?ngen bleiben kann. Hatte ich in SEUCK ?fter.

Orpheus_2003

Hi.

Nein. Definitiv nicht. Ich hab keine Probleme mit h?ngen bleiben am Boden.
K?nnt es ja gerne mal testen. Siehe signatur.

Aber.
Welche L?sung gibt es hier.
Wie schon erw?hnt. Das Level wird mit einem Offset (-32 / +32) gescrollt.
Ein Abfrage der Tiles unter dem player ist seehr ungenau.
Ich w?sste nicht wie man das ohne Pixelkollision genau herkriegt?

Gru? M

Kitty Hello

Kein - wirklich "kein" Jump&Run hat pixelgenaue Kollisionen mit dem Hintergrund. Das l?uft alles ?ber die Tile-Koordinaten.

D2O

Hmmm,
ich hab mal das hier aus dem Tutorial um SPRCOLL erweitert.
Code (glbasic) Select
/// Das hier----------------------------------------------------------------------<<<<<<<<<<<<<<<<<<<<<<<<<
IF y1+1 <= endey
IF layer1[x1][y1] = -1 AND layer1[x1][y1+1] = 1
DRAWRECT posx + x1*tile,posy + y1 * tile,tile,tile,RGB(0xff, 0x80, 0x00)

/// mit SPRCOLL()
IF SPRCOLL(tile1,posx + x1*tile, posy + y1 * tile,player,posx + x1*tile, posy + y1 * tile) // <<<<<<<<<<
ctrl_u = 1

ENDIF //<<<<<<<<<<<<<<<<<<
ENDIF

IF layer1[x1][y1] = -1 AND layer1[x1][y1+1] = 0 THEN ctrl_u = 0
ENDIF
///  ______-------------------------------------------------------------------_______<<<<<<<<<<<<<<<<<<<<<<



Es kann dann aber immer noch ?berschneidungen mit dem boden darunter links und darunter rechts geben, so das der player unter umst?nden
immer noch durchlaufen kann.
Man sollte aber die Position des Players zwischenspeichern und dann zur?cksetzen.
Oder man pr?ft zus?tzlich die felder links und recht darunter mit.

Code (glbasic) Select
// links darunter
IF layer1[x1-1][y1+1]......


Code (glbasic) Select
// rechts darunter
IF layer1[x1+1][y1+1]......



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

Schranz0r

SPRCOLL w?rde ich niemals bei Tilemaps verwenden, das gibt immer probleme und ist sau langsam (Bleibst evtl schon bei einen Pixel h?ngen, kann echt nervig sein...)


I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

D2O

Naja, das Sau langsam ist Relative.
Sicher braucht man das meistens nicht, aber wenn doch?
Hier wird eh "nur das tile direkt darunter ?berpr?ft, sonst kein anderes.

Ich glaube das ich am WE nochmals hinsetzen muss, um das ganze mal zu erweitern,
nicht versprochen, aber auf der Todo :)
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

Orpheus_2003

Nochmals.

1. Ist die Pixelgenaue Kollision nicht langsam und "frisst" sich auch nicht fest an einem Pixel.
2. Hab ich versucht das ganze mit Tiles umzusetzen. Aber das hat ?berhaupt nicht funktioniert.
 
Man lernt ja nie aus. Mal sehen was sich machen l?sst.

Thx for your instructions.

Orpheus_2003

So.
Eine Frage hab ich aber noch.
Angenommen das Tile unter dem Player sit eine abgerundete Fläche, Bogen.
Wie steht der Player dann da drauf.
Wenn nur das Tile geprüft wird ist doch der ganze Bereich ein aktives Teil.
Stehen kann er aber nur auf den Pixeln.
Das würde doch komplett bescheuert aussehen wenn der Player auf dem Tile steht und in der Luft hängt.
Wie löst man so was?

Kitty Hello

Hehehe. Früher habe ich sowas gelöst, indem ich wusste Teil 122 ist nach rechts unten schräg. Dann hab' ich den Spieler weiter runter zugelassen bis er auf den Boden trifft. Giana Sisters und das alte Mario hat sowas nicht.

Schranz0r

I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard