Sprites & grafik på den Micromite kamrat (12 / 13 steg)
Steg 12: Kakel upptäckt
Det är dags att göra magin. Kakel upptäckt.
Kakel upptäckt kan vi "vet" vad teckensnitt och plattor placeras en särskilda positioner. Kom ihåg Mario Bros Nintendo? Hur vet spelet när Mario är kör på fast mark, eller faller i en grop?
Igen, vi har en enkel subrutin (faktiskt en funktion) som kommer att hjälpa oss läsa brickor och vet vad har placerats runt oss. Här är rutin:
Funktion Tiledetect (xpos, ypos)
I2C skriva PC, 4-0, 1, 255, xpos, ypos
Paus 1
I2C skriva PC, 0, 1, och h0
I2C läsa PC, 0, 1, TileDetect
Slutet funktion
Tiledetect kan användas för att returnera värdet i alla platta på vilken position som X och Y.
Hur använda sprites Tiledetect:
Nu, ta en djuprengörande, andedräkt eftersom jag ska visa dig hur man gör 16 x 16 sprite interagera med 8 x 8 kakel världen.
Ta en titt på bilden som jag har bifogat till denna sida. Märke hur min sprite faktiskt står mestadels över två olika 8 x 8 tegel kakel. Min sprite faktiska position på skärmen är runt om X-30 och Y-240. Vi behöver konvertera dessa pixel positioner i 8 x 8 sprite platser. Här är hur vi gör det i BASIC.
Int(player_x/8) och INT(player_y/8+1)
30 / 8 = 3.76 (INT förkortar nummer 3)
240 / 8 = 30
Dividera pixel ställning den sprite X och Y koordinater ger oss "mycket nära" 8 x 8 kakel positioner för våra sprite.
Många gånger uppdelningen av flera kommer att skapa ett decimaltal, så INT Avkortar ett tal till närmaste heltal mindre än eller lika till argumentet.
Låt oss frågesport lite och se om du förstår ännu...
Om vi behöver veta vilka plattor under spriten? Som tegel golvet i Loadrunner?
Int(player_x/8) "Sprite startposition.
Int(player_y/8+2) "Sprite start position + 2 (2 * 8) nedan.
Ibland är det praktiskt att använda visningstext & DisplayChar från sista sidan för att placera denna information överst på skärmen samtidigt som du skapar ditt spel. Det kommer att hjälpa dig att få en känsla för vad som händer medan din sprite är flyttar runt på skärmen.