Pelin funktionaalisuuden lisääminen
Jos kuvailemme jokaista tapahtumaa yhtä yksityiskohtaisesti kuin aiemmin, tästä tulee aika pitkä tutoriaali. Selitetään hieman lyhyemmin seuraavien tapahtumien osalta. Muista että ehtojen ja toimintojen lisäämisen vaiheet ovat:
1. Tuplaklikkaa lisätäksesi tapahtuman, tai klikkaa Add action lisätäksesi toiminnon.
2. Tuplaklikkaa objektia johon ehto/toiminto tulee.
3. Tuplaklikkaa ehtoa/toimintoa jonka haluat.
4. Lisää parametrit, mikäli niitä tarvitaan.
Tästä lähtien, tapahtumia kuvataan objektina, jota seuraa ehto (condition)/toiminto (action), jota seuraa parametrit. Esimerkiksi, tapahtuma jonka juuri teimme voitaisiin kirjoittaa:
Lisää Condition System -> Every tick
Lisää Action Player -> Set angle towards position -> X: Mouse.X, Y: Mouse.Y
Saa pelaaja ampumaan
Kun pelaaja klikkaa, pelaajan pitäisi ampua luoti. Tämä onnistuu Player-objektin Spawn an object toiminnolla, joka luo uuden objektin samassa sijainnissa ja kulmassa. Bullet movement jonka lisäsimme aikaisemmin saa sen lentämään eteenpäin.
Tee seuraava tapahtuma:
Condition: Mouse -> On click -> Left clicked (oletus)
Action: Player -> Spawn another object -> Objektiksi valitse Bullet. Kohtaan Layer, kirjoita 1 ("Main" taso on layer 1 - muista että Construct 2 laskee nollasta). Jätä Image pointiksi 0.
Tapahtumasi tulisi nyt näyttää tältä:
Jos käynnistät pelin, huomaat että luodit ammutaan keskeltä pelaajaa, eikä aseen piipusta. Korjataan tämä asettamalla image point (kuvapiste) pyssyn kärkeen (image point on vain sijainti kuvassa josta objektit luodaan).
Oikea-klikkaa pelaajaa projektissa tai objekti-rivillä ja valitse Edit animations.
Kuvaeditori pelaajalle ilmestyy taas. Klikkaa 'origin and image points' työkalua:
...ja image point valikko avautuu:
Huomaa että objektin origopiste (origin) näkyy punaisena pisteenä. Se on objektin "tukipiste". Jos käännät objektia, se pyörii origonsa ympäri. Haluamme lisätä toisen kuvapisteen joka ilmaisee pyssyä joten klikataan vihreätä add painiketta. Sininen piste ilmestyy - se on uusi kuvapisteemme. Vasen-klikkaa pyssyn kärkeä asettaaksesi kuvapisteen sinne:
Sulje kuvaeditori. Tuplaklikkaa Spawn an object toimintoa jonka lisäsimme aikaisemmin ja vaihda Image point arvoksi 1. (Origin on aina ensimmäinen kuvapiste, ja muista että Construct 2 laskee nollasta). Tapahtuman pitäisi nyt näyttää samalta kuin alhaalla - huomaa että se sanoo nyt Image point 1:
Käynnistä peli. Pystyt nyt ampumaan luoteja aseesi päästä! Luodit eivät tosin vielä tee mitään. Tosin toivottavasti alat huomata että kun saat paremman otteen event systemista, saat rakennettua toiminnallisuuksia erittäin nopeasti.
Pistetään luodit tappamaan hirviöitä. Lisää seuraava tapahtuma:
Condition: Bullet -> On collision with another object -> valitse Monster.
Action: Monster -> Destroy
Action: Bullet -> Spawn another object -> Explosion, layer 1
Action: Bullet -> Destroy
Räjähdys-efekti
Käynnistä peli ja yritä ampua hirviöitä. Ups, räjähdyksessä on iso musta reunus!
Saatoit arvata että se näyttäisi tuolta ja mietit jos se päätyisi näyttämään siltä myös pelissä! Ei huolta, ei se tulekaan. Klikkaa Explosion objektia joko objekti-valikosta oikeasta alakulmasta tai projekti-valikosta (samasta paikasta josta löytyy myös layer-välilehti). Sen asetukset ilmestyvät oikealle. Alhaalta, aseta Blend mode ominaisuudeksi Additive. Kokeile peliä uudestaan.
Miksi tämä toimii? Menemättä kaikkiin yksityiskohtiin, tavalliset kuvat liitetään näytön päälle. Additive-efektillä, jokainen pikseli sen sijaan lisätään (yhteenlasketaan) taustalla olevan pikselin kanssa. Mustan pikseliarvo on nolla, joten mitään ei lisätä ja mustaa taustaa ei näy. Kirkkaammat värit lisäävät enemmän ja siksi ilmenevät voimakkaammin. Sopii loistavasti räjähdyksiin ja valoefekteihin.
Tehdään hirviöistä hieman älykkäämpiä
Tällä hetkellä hirviöt vaeltavat pois layoutilta oikealle. Tehdään niistä hieman mielenkiintoisempia. Ihan ensiksi, laitetaan hirviöt aloittamaan satunnaisessa kulmassa.
Condition: System -> On start of Layout
Action: Monster -> Set angle -> random(360)
Lähdettyään layoutilta ne silti vaeltavat ikuisesti, eikä niitä enään nähdä. Pidetään hirviöt pelialueen sisällä. Tehdään niin että suuntamme ne takaisin pelaajaan kun ne lähtevät layoutilta. Tämä saa aikaan kaksi asiaa: Hirviöt pysyvät aina layoutilla ja jos pelaaja seisoo paikallaan, hirviöt hyökkäävät siihen paikkaan!
Condition: Monster -> Is outside layout
Action: Monster -> Set angle toward position -> Kohtaan X, Player.X - kohtaan Y, Player.Y.
Käynnistä peli. Jos hengailet hieman pidempään, huomaat että hirviöt pysyvät layoutilla ja menevät kaikenlaisiin suuntiin. Ei vielä ihan tekoälyä, mutta kelpaa meille!
Seuraavaksi, oletetaan että haluat ampua hirviötä viisi kertaa ennen kuin se kuolee, sen sijaan että ne kuolevat heti kuten nyt tapahtuu. Miten se tehdään? Jos me vain määritämme elämäpisteet (health) yhteen arvoon, silloin kun ammumme yhtä hirviötä 5 kertaa, kaikki hirviöt kuolevat. Sen sijaan, jokaisen hirviön tulee muistaa oma Health arvonsa. Tämä onnistuu instanssi-muuttujilla (instance variables).