maanantai 15. elokuuta 2016

Unity tasohyppely - hahmon liikkuminen

NAV15AP

1. Jakso lukuvuonna 2016-17

Tarvitsemme tähän tehtävään Unityn lisäksi playmakeria. Playmaker ikkunan saa näkyville, kun ylhäältä playmaker valikosta ottaa vaihtoehdon playmaker editor. Voit sen jälkeen sijoittaa ikkunan haluamallesi paikalle.


Aloitetaan lisäämällä tiedostoon kaksi spritea. Toinen on pelihahmo ja toinen alusta, jossa kävellään. Muista laittaa spriten asetuksiin tekstuuri tyypiksi Sprite (2D & UI). Valitse filter modeksi trilinear.  Filter mode määrittää kuvan laadun. Trilinear on paras laatu, mutta vie eniten tehoja. Varsinkin mobiilipelejä tehdessä tämä on hyvä ottaa huomioon ja silloin saattaa olla järkevintä käyttää bilinear modia. Tee tämä molemmille spriteille.



Sen jälkeen viedään spritet peliin. Raahaa molemmat hierarkia ikkunaan, jolloin ne ilmestyvät sekä scene että game ikkunoihin. Aseta hahmolle order in layer kohdassa isompi luku kuin lattialle. Näin hahmo on aina lattian edessä, jolloin jalat eivät näytä uppoavan lattiaan. Liikuta molemmat spritet siten, että ne ovat kameran alaosassa, mutta kuitenkin näkyvillä. Molempiin asetetaan myös 2D box colliderit ja hahmoon lisäksi rigidbody 2D. Lisää vielä molemille spriteille tag. Pelaajalle löytyy valmiina oleva player tag, mutta lattialle pitää luoda oma uusi tagi ja nimetä se haluamallaan tavalla.



Seuraavaksi valitaan hahmo hierarkia ikkunasta. Hahmolle pitää lisätä FSM (fine state machine), joka löytyy add component valikosta oikealta. Lisää uusi FSM ja nimeä se. Hahmon tulee liikkua oikealle ja vasemmalle. Events kohdasta lisää kaksi uutta tapahtumaa: left ja right. Klikkaa hiiren oikealla startin alapuolella olevaa statea ja lisää molemmat tapahtumat add transition kohdasta. Luo kaksi uutta statea. Uuden staten saa luotua klikkaamalla hiiren oikealla painikkeella ja valitsemalla add state. Vedä nuolet molemmista tapahtumista omiin stateihin.


Nyt luodaan hahmolle liikkuminen. Keskimmäisen staten ollessa valittuna, ota oikeasta alakulmasta action browser. Etsi sieltä get key down toiminto. Valitse sama toiminto kaksi kertaa, koska tulet käyttämään liikkumisessa kahta eri näppäintä. Lisää toiseen näppäimeksi A ja toiseen D. A-näppäin lähettää tapahtuman left ja D-näppäin lähettää tapahtuman right. Walking right stateen lisätään 3 toimintoa: get key up, translate ja set scale. Get key up kertoo milloin pelaaja lopettaa näppäimen painamisen ja hahmon pitää lopettaa liikkuminen. Translate liikuttaa hahmoa tietyn verran annettuun akselin suuntaan, kun näppäintä painetaan. Set scale skaalaan hahmon, joilloin se katsoo oikealle, kun painetaan D-näppäintä ja vasemmalle, kun painetaan A-näppäintä.



Seuraavaksi luodaan uusi FSM hyppimistä varten. Ensimmäiseen stateen laitetaan get key down toiminto ja valitaan näppäimeksi space. Tehdään uusi event jump ja vedetään siitä nuoli uuteen stateen. Seuraavaan stateen laitetaan toiminto add force 2D. Se lisää spirteen voimaan tietyllä akselilla. Valitaan y-akseli ja lisätään  forceksi n. 300. Sen jälkeen laitetaan transition event finished ja vedetään se takaisin start stateen. Nyt hahmo pystyy hyppäämään. Ongelmana tässä on, että hahmo hyppää aina, kun space-näppäintä painetaan. Tämä ei ole perus tasohyppelyssä toimiva ratkaisu, joten ongelma täytyy korjata.




Lisätään  hyppy FSM:ään uusi state: check landing. Staten tarkoituksena on seurata, milloin hahmo koskettaa maata ja eliminoida hyppääminen ilmassa.  Check landingiin tapahtuma on landing, josta vedetään nuoli start stateen ja toiminto ray cast 2D. From positioniin laitetaan -1, koska halutaan, että ray cast suuntautuu alas. Distance kohtaan laitetaan luku, jolla ray cast tunnistaa milloin osutaan lattiaan.  Resultin hit event kohtaan laitetaan on landing, jolloin state lähettää tiedon seuraavaan stateen ja antaa pelaajan hypätä uudelleen. Filteriin laitetaan layer maskiin 1 ja vaihdetaan hahmon layeriksi ignore raycast. Nyt hypyn pitäisi toimia kunnolla ja hahmolla on liikkumiseen tarvittavat perustoiminnot.



TEHTÄVÄ 1: Tuo oma hahmo ja liikkumisen alustaksi tarkoitettu sprite Unityyn. Tee hahmolle liikkuminen (sivuille ja hyppy). Varmista ettei hahmo voi hypätä ilmassa.

TEHTÄVÄ 2: Luo hahmolle toisenlainen liikkuminen siten, että hahmo liikkuu tasaisella vauhdilla oikealle ilman, että pelajaan pitää painaa näppäintä.


Ei kommentteja:

Lähetä kommentti