maanantai 10. maaliskuuta 2014

Android 3: Pallopelin ohjausvaihtoehdot

Tämänkertaisen tunnin aiheena opetella tekemään pieniä pallopelejä. Peleiksi esimerkkejä ei voi vielä sanoa, mutta näiden pohjalta voi pohtia oman pallopelin ohjausta ja pelin ideaa. Aluksi loitetaan uusi projekti


 Nimeän pelin PalloPeliksi.


 Ruutu tehdään pelialustaksi ja tärkein asia tämän onnistumiseksi on estää ruudun vieritys. Tällöin ruudun koko on vain ja ainoastaan ruudun näkyvä osa. Klikataan "Scrollable" pois päältä Screen1:n valinnoista.


 Lisätään ruutuun "Canvas" eli alusta, jossa hahmot, "spritet" liikkuvat. Vedetään ruutuun myös pallo.


Alusta ei ole kummallisen kokoinen, suurennetaan se koko ruudun kokoiseksi asetuksista. Sekä leveys, että korkeus (width ja height) asetetaan "Fill parent", eli täytä näkyvä osa.





Seuraavaksi valitaan komponenteista pallo ja sen ominaisuuksista suurennetaan sen koko 10:ksi


Siirrytään Blocks-sivulle. Pallon valinnoista löytyy "Flung"-palikka. Flung tarkoittaa lennätettyä tai vipattua ja tätä pääsee ohjaamaan nopealla sormen pyyhkäisyllä. Sormi asetetaan siis pallon päälle ja se ikäänkuin nepataan johonkin suuntaan. 


Valitaan pallon palikoista nopeus (speed) ja suunta (heading), jotka vedetään flung-palikan sisään.


 Klikkaamalla flung-palikassa näkyvää speed- ja heading-nappeja, saa näkyviin uusia palikoita. Näistä vedetää pallon suunnan ja nopeuden jatkoksi neppauksen suunta ja nopeus.

 Tällaisenaan ohjelman pallo lässähtää tylsästi reunaan. Tämä voidaan korjata valitsemalla pallon valikosta EdgeReached-palikka. Tämän sisältö toteutetaan, kun pallo osuu reunaan.


Edelleen pallon valikosta otetaan pallon pomppaamista ohjaava palikka, johon kytketään EdgeReached-palikan edge-napin takaa löytyvä get edge. Tähän voitaisiin liittää myös jonkun muun hahmon reuna.


Nyt pallo liikkuu, mutta ainakin omalla puhelimellani kuolettavan h-i-t-a-a-s-t-i. Itsesasiassa niin hitaasti, että luulin ohjelmassa olevan jonkun vian.


Otetaan apuun matematiikkakategoriasta kertolaskupalikka. Laitetaan toiselle puolelle get speed-palikka ja toiselle puolelle jokin kerroin. Kertoimella 10 pallo liikkuu jo hyvinkin liukkaasti.

Pallo saadaan liikkumaan luonnollisemin yhdistämällä pyyhkäisyn nopeus sopivaan kertoimeen.


Tämä rakennetaan uudeksi projektiksi, tällöin ohjaustapa säilyy myöhempää käyttöä varten sellaisenaan. Seuraavaksi kokeillaan ohjata palloa puhelinta/tablettia kallistelemalla. Alkuvalmistelut tehdään kuten aiemminkin, pallo ja canvas vedetään ruudulle ja ruudun vierittäminen estetään valikosta.


Ihan aluksi mennään Designer-sivulle ja estetään ruudun kääntäminen. Tällä tavoin ruutu ei käänny palloa ohjattaessa. Sensoreista löytyvä orientation sensor lisätään Designer-sivulla ruudulle. Alla oleva kuva kertoo mitä roll, pitch ja azimuth tarkoittavat. 

Roll tarkoittaa kierimistä, Pitch pystysuunnassa kallistamista ja Azimuth kompassineulamaista puhelimen kääntämistä. Kuvan lähde: http://tinyurl.com/p36w4d9

 ja etsitään Blocks-sivulla "orientation changed"-palikka. Laitetaan sen sisään pallon nopeutta ja suuntaa ohjaavat palikat. Nopeutta ohjataan kallistuksen määrällä, "Magnitude" ja suuntaa kulmalla "Angle".

Pallo liikkuu taas todella hitaasti, mutta asia voidaan tässäkin tapauksessa korjata käyttämällä kerrointa.


Viimeisenä vielä tylsin tapa ohjata palloa, eli nappien käyttäminen. Taas uusi projekti ja alkuvalmistelut kuten aiemminkin. Vedetään Designer-näytössä ohjelmaan neljä nappia. Vedän myös layout-kategoriasta "HorizontalArrangement"-palikan, jolla saan napit jaoteltua vähän loogisemmin.

Vaihdan nappien tekstit kertomaan mitä ne oikeasti tekevät. Blocks-näytössä otan napin valikoista klikkaus-palikan.


Klikin sisälle vedän pallon valikoista suunnan ja nopeuden. Laitan aluksi jokaiseen nopeudeksi 100, suunnaksi laitetaan kullekin napille kuuluva suunta. Suunta ylöspäin on 90, vasemmalle 180, oikealle 0 ja alas -90.


Ohjaus on todella kökkö, pallo liukuu joko suoraan ylös-alas- tai vasen-oikea-suunnassa. Koska pallon kimpoaminen on vielä mukana, ei ohjauksesta voida tässä vaiheessa vielä oikein puhua.Tästä jatketaan seuraavalla kerralla ottamalla mukaan nopeutta ja suuntaa ohjaavat muuttujat, jolloin liikkeestä tulee luonnollisempaa. Muuttujat voidaan ottaa käyttöön kaikilla ohjaustavoilla. Napeilla ja asentoa vaihtaessa luonnollisuus tulee kiihtymisen kanssa, neppaamisessa pallon liikkeen hidastumisessa.






Ei kommentteja:

Lähetä kommentti