Läpsylintu, vaihe 9: Maali¶
Kentän oikeaan laitaan maaliviiva¶
Toteutetaan kentän oikeaan reunaan maaliviiva, jota koskettamalla pelaaja pääsee kentän läpi.
Etsi aliohjelma LuoKentta. Se näyttää tässä vaiheessa seuraavalta:
private void LuoKentta()
{
TileMap kentta = TileMap.FromLevelAsset("kentta1");
kentta.SetTileMethod('#', LisaaTaso);
kentta.SetTileMethod('*', LisaaTahti);
kentta.SetTileMethod('L', LisaaPelaaja);
kentta.SetTileMethod('v', LisaaVihollinen);
kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
Level.CreateBorders();
Level.Background.CreateGradient(Color.White, Color.SkyBlue);
}
Aliohjelmassa oleva rivi Level.CreateBorders(); luo kentän jokaiselle reunalle reunaviivan. Voit kommentoida rivin pois, koska tarvitsemme tähän peliin erillisen oikean reunan. Kommentointimerkkinä C#-kielessä toimii kaksi kauttaviivaa, /-merkkiä. Kauttaviivan saat painamalla Shift + 7. Rivin pitäisi tämän jälkeen näyttää tältä.
Lisää sitten edellisen rivin alapuolelle seuraavat koodirivit, joilla kentän jokainen reuna luodaan erikseen.
Level.CreateLeftBorder();
Level.CreateTopBorder();
Level.CreateBottomBorder();
Level.CreateRightBorder();
Koska haluamme käyttää näistä viimeisintä hyödyksi, muokataan vielä tätä oikean reunan lisäävää riviä:
tällaiseksi:
Alkuun lisättiin siis fysiikkaolio-tyyppisen muuttujan esittely, ja luodun oikean reunan viite sijoitettiin siihen talteen.
Nyt voimme lisätä oikean reunan oliolle tagin, jota voimme hyödyntää hetken kuluttua törmäystarkistuksessa:
Kokonaisuutena aliohjelma on muutosten jälkeen seuraavanlainen (tässä lisätty myös pari tyhjää riviä selkeyttämään):
void LuoKentta()
{
TileMap kentta = TileMap.FromLevelAsset("kentta1");
kentta.SetTileMethod('#', LisaaTaso);
kentta.SetTileMethod('*', LisaaTahti);
kentta.SetTileMethod('L', LisaaPelaaja);
kentta.SetTileMethod('v', LisaaVihollinen);
kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
//Level.CreateBorders();
Level.CreateLeftBorder();
Level.CreateTopBorder();
Level.CreateBottomBorder();
PhysicsObject oikeaReuna = Level.CreateRightBorder();
oikeaReuna.Tag = "oikea";
Level.Background.CreateGradient(Color.White, Color.SkyBlue);
}
Maaliviivaan törmäämisen tarkistus¶
Etsi aliohjelma LisaaPelaaja, koska se sisältää kaikki pelaajaan liittyvät törmäystarkistukset. Lisää aliohjelmaan seuraava rivi:
Ohjelmointiympäristö taas varoittaa, että aliohjelmaa TormaaOikeaanReunaan ei vielä ole olemassa. Luodaan se luokan Lapsylintu sisäpuolelle, eli ennen ihan viimeistä aaltosulkua, TormaaTahteen-aliohjelman jälkeen.
Koska aliohjelma on törmäystarkistinta varten luotu, sen on sisällettävä esittelyrivillä parametrit törmääjälle ja törmäyksen kohteelle.
Lisätään aluksi aliohjelmaan pelkästään viesti, joka kertoo pelaajalle, että kenttä on läpäisty:
Kokeile, kuinka hyvin maaliviivaan eli kentän oikeaan laitaan törmääminen toimii! Vinkki: voit testausvaiheessa "huijata" ja siirtää linnun aloituspaikan kentta1.txt-tiedostossa lähemmäs oikeaa reunaa, jotta koko kenttää ei tarvitse pelata läpi.
Kokeile käynnistää pelisi
Maaliviivan törmäyksen parantelut¶
Voit parannella maaliviivaan törmäämistä vielä lisäämällä seuraavia rivejä aliohjelman TormaaOikeaanReunaan sisälle:
Kokeile käynnistää pelisi