Construct 2 Aloittelijan opas

1

Index

Tagged

Contributors

Stats

27,115 visits, 37,239 views

Tools

Translations

License

This tutorial is licensed under CC BY 4.0. Please refer to the license text if you wish to reuse, share or remix the content contained within this tutorial.

Published on 8 Nov, 2016. Last updated 25 Feb, 2019

Instanssimuuttujat (Instance variables)

Instanssimuuttujilla (instance variables) saamme jokaiselle hirviölle niiden omat elämäpisteet. Muuttuja (variable) on yksinkertaisesti arvo joka voi muuttua (tai vaihdella) ja ne tallennetaan erikseen jokaiselle instanssille, josta tulee nimi instance variable.

Lisätään instanssimuuttuja nimeltään health hirviöllemme. Klikkaa hirviötä projektirivillä tai objektirivillä. Vaihtoehtoisesti voit valita monster-objektin layoutilta. Tämä avaa hirviön asetukset. Klikkaa Edit variables vierestä Add/edit,

Instanssimuuttujien valikko ilmestyy. Se näyttää samalta kuin toiminnallisuusvalikko jonka näimme aiemmin, mutta tällä kertaa instanssimuuttujilla (instance variables). Klikkaa vihreää Add painiketta lisätäksesi uuden instanssimuuttujan.

Kirjoita ilmestyvään ikkunaan, nimen kohdalle health, jätä Type kohdalle Number, ja kohtaan Initial value kirjoita 5 (kuten yllä). Tämä tarkoittaa että jokainen hirviö aloittaa 5 elämäpisteellä. Kun niihin osutaan, vähennämme 1 elämäpisteen ja kun elämäpisteet ovat nollassa, tuhoamme objektin.

Klikkaa OK kun valmista. Huomaa kuinka muuttuja löytyy nyt instance variable-ikkunasta sekä hirviön asetuksista. (Voit nopeasti muuttaa arvoja objektin asetuksista mutta lisätäksesi tai poistaaksesi muuttujia, pitää klikata uudeelleen kohdasta Add / Edit).

Tapahtumien muuttaminen

Palaa event sheetille. Juuri nyt, tuhoamme hirviöt heti kun niihin osuu luoti. Muutetaan tapahtuma vähentämään 1 piste elämäpisteistä eli muuttujasta 'health'.

Etsi seuraava tapahtuma: Bullet - on collision with Monster. Huomaa kuinka käytössä on toiminto "destroy monster". Valitaan sen tilalle "subtract 1 from health". Oikea-klikkaa "destroy monster" toimintoa ja valitse Replace.

Sama valikko avautuu kuin jos olisimme luomassa uutta toimintoa, mutta tällä kertaa korvaamme sen sijaan vanhan toiminnon. Valitse Monster -> Subtract from (Instance variables kategoriasta) -> Instance variable "health", ja kirjoita 1 kohtaan Value. Klikkaa Done. Toiminnon pitäisi nyt näyttää tältä:

Seuraavaksi kun ammumme hirviöitä, ne menettävät yhden elämäpisteen ja luoti räjähtää, mutta emme ole tehneet tapahtumaa jolla hirviöt tapetaan kun elämäpisteet saavuttavat arvon 0. Lisätään seuraava tapahtuma:

Condition: Monster -> Compare instance variable -> Health, pienempi tai yhtä suuri kuin, 0

Action: Monster -> Spawn another object -> Explosion, layer 1

Action: Monster -> Destroy

Miksi "pienempi tai yhtä suuri kuin 0", eikä "yhtä suuri kuin 0"? Ajatellaan että lisäisimme voimakkaamman aseen joka vähentäisi 2 elämäpistettä. Kun ampuisit hirviötä, elämäpisteet menisivät: 5, 3, 1, -1, -3... huomaa että missään vaiheessa pisteet eivät olisi sama kuin nolla, joten hirviö ei koskaan kuolisi! Tästä syystä on hyvä tapa käyttää "pienempi tai yhtä suuri kuin" testataksesi onko jonkun asian elämäpisteet (tai muut vastaavat) loppuneet.

Käynnistä peli. Sinun täytyy ampua hirviöitä nyt 5 kertaa tappaaksesi ne!

Pisteiden keräys

Tehdään pisteet (score), jotta pelaaja tietää kuinka hyvin heillä on mennyt. Tarvitsemme tälle uuden muuttujan. Saatat ajatella että "pistetään pisteet instanssimuuttujaksi pelaajalle!". Ei huono ensimmäinen idea, mutta muista että arvo tallennetaan "sisälle" objektiin. Jos objektista ei ole instansseja, ei ole myöskään sen muuttujia! Joten jos me tuhoamme pelaajan, emme enään tiedä mitkä pisteet olivat, koska ne tuhoutuivat pelaajaobjektin kanssa.

Sen sijaan, voimme käyttää globaalia muuttujaa (global variable). Kuten instanssimuuttuja, se pystyy tallentamaan tekstin tai numeron. Jokainen muuttuja voi tallentaa yksittäisen numeron tai yksittäisen pätkän tekstiä. Globaalit muuttuujat ovat käytettävissä koko pelissä, myös muilla layouteilla - kätevää jos haluaisit lisätä pelitasoja.

Oikea-klikkaa tyhjää osaa event sheetin pohjalla ja valitse Add global variable.

Laita nimeksi Score. Muut oletusarvot ikkunassa sopivat hyvin, pisteet tulevat alkaamaan nollasta.

Nyt globaali muuttuja (global variable) näkyy rivinä event sheetillä. Se on kyseisellä event sheetillä mutta sitä pystytään käyttämään miltä vain layoutilta tai toiselta event sheetiltä.

Huom: On olemassa myös lokaalisia eli paikallisia muuttujia (local variables) joihin päästään käsiksi vain rajatusta määrästä tapahtumia, mutta meidän ei tarvitse miettiä sitä juuri nyt.

Annetaan pelaajalle piste tapetusta hirviöstä. Tapahtumassamme "Monster: health less or equal 0" (kun hirviö kuolee), klikkaa Add action, ja valitse System -> Add to (kohdan 'Global & local variables' alta) -> Score, arvo 1. Nyt tapahtuman pitäisi näyttää tältä:

Nyt pelaajalla on score eli pistemäärä, joka kasvaa yhdellä jokaisesta tapetusta hirviöstä - mutta pelaaja ei pysty näkemään pisteitään! Näytetään se tekstiobjektilla (text object).

  • 0 Comments

Want to leave a comment? Login or Register an account!