Stap 12: Tegel detectie
Het is tijd om de magie gebeuren. De detectie van de tegel.
Tegel detectie kan we "weten" welke lettertypen en tegels een specifieke posities worden geplaatst. Onthoud Mario Bros op de Nintendo? Hoe weet het spel als Mario is uitgevoerd op vaste grond, of in een kuil vallen?
Nogmaals, we hebben een eenvoudige subroutine (eigenlijk een functie) , die zal ons helpen de tegels lezen en weten wat om ons heen is gelegd. Hier is de routine:
Function Tiledetect(xpos, ypos) I2C WRITE PC,0,4,1,255,xpos,ypos Pause 1 I2C WRITE PC,0,1,&h0 I2C READ PC,0,1,TileDetect End Function
Tiledetect kan worden gebruikt om terug te keren de waarde van elke tile op elke X- en Y-positie.
Hoe sprites gebruiken Tiledetect:
Nu, neem een diepe, zuivering van adem, want ik ga u tonen hoe te maken van 16 x 16 sprite interactie met de wereld van 8 x 8 tegel.
Neem een kijkje op de afbeelding die ik aan deze pagina verbonden ben. Merk op hoe mijn sprite staat eigenlijk meestal over twee verschillende 8 x 8 bakstenen tegels. Mijn sprite de werkelijke positie op het scherm is rond X-30, en Y-240. We moeten deze pixel posities omzetten in 8 x 8 sprite locaties. Hier is hoe we het doen in BASIC.
Int(player_x/8) en INT(player_y/8+1)
30 / 8 = 3,76 (INT verkort het nummer 3)
240 / 8 = 30
Verdelen van de positie van de pixel van de sprite van X- en Y-coördinaten geeft ons "very close" 8 x 8 posities tegel voor onze sprite.
Vele malen de verdeling van enkele ontstaat een fractionele nummer, dus INT zal het afkappen van een nummer op het volgende gehele getal minder dan of gelijk aan het argument.
Laten we een beetje quiz en zie als u nog begrijpt...
Wat als we willen weten wat de tegels zijn onder de sprite? Zoals de bakstenen vloer in Loadrunner?
Int(player_x/8) ' Sprite uitgangspositie.
Int(player_y/8+2) ' Sprite beginnen plaats + 2 (2 * 8) hieronder.
Soms is het handig te gebruiken de weergavetekst & DisplayChar van de laatste pagina plaatst u deze informatie bij de bovenkant van het scherm tijdens het maken van uw spel. Het zal helpen u krijg een gevoel voor wat gebeurt er terwijl je sprite het scherm bewegen is.