Lisää objekteista

Luodessasi objektin edistyneemmässä tilassa on sinulla mahdollisuus muuttaa useampia edistyneempiä asetuksia.

Syvyys (Depth)

Ensinnäkin, pystyt asettamaan objektin instansseille syvyyden (depth). Kun instanssit piirretään näytölle, ne piirretään syvyysjärjestyksessä. Instanssit, joilla on suurin syvyys, piirretään ensin, kun taas pienempisyvyiset instanssit piirretään viimeiseksi. Jos instansseilla on sama syvyys, piirretään ne luomisjärjestyksessä. Mikäli haluat olla varma siitä, että tietty instanssi piirretään muiden instanssien päälle, kannattaa sille antaa negatiivinen syvyys. Mikäli taas haluat, että instanssi piirretään muiden instanssien alle, anna sille suuri, positiivinen syvyys. Voit myös vaihtaa instanssin syvyyttä kesken pelin käyttämällä depth-muuttujaa.

Pysyvät objektit

Voit tehdä objektista myös pysyvän (persistent). Pysyvä objekti pysyy pelissä, kun liikut huoneesta toiseen. Se katoaa vain, jos se tuhotaan suoraan. Joten, jotta objekti olisi joka huoneessa, riittää, että sen lisää ensimmäiseen huoneeseen. Tämä on hyödyllistä, jos pelissä on esimerkiksi päähahmo, joka liikkuu huoneesta toiseen. Pysyvien objektien käyttäminen on tehokasta, mutta se johtaa myös helposti virheisiin.

Isäntäobjektit (Parents)

Jokaisella objektilla voi olla isäntäobjekti. Jos objektilla on isäntä, se perii sen käyttäytymisen. Toisin sanoen, objekti on eräänlainen isäntäobjektin erikoistapaus. Esimerkiksi, jos sinulla on 4 erilaista palloa nimiltään pallo1, pallo2, pallo3 ja pallo4, jotka käyttäytyvät samalla lailla, mutta niiden kuvat (sprite) ovat erilaiset, voit tehdä pallo1:stä isännän kolmelle muulle pallolle. Nyt sinun tarvitsee tehdä tapahtumat vain pallo1:lle. Muut kolme palloa perivät nämä tapahtumat ja käyttäytyvät täsmälleen samoin kuin niiden isäntä. Myös silloin, kun luot toimintoja isäntäobjektin instansseille, ne toimivat myös isännän lapsilla. Siis, jos esimerkiksi tuhoat kaikki pallo1:n instanssit, tuhoutuvat myös pallo2:n, pallo3:n ja pallo4:n instanssit. Tämä säästää paljon työtä ja aikaa.

Useimmiten objektien tulisi käyttäytyä lähes identtisesti, vain pienillä eroilla. Esimerkiksi yksi vihollinen voi liikkua ylös ja alas, mutta toinen oikealle ja vasemmalle. Muuten käyttäytyminen on täysin samanlaista. Tässä tapauksessa suunnilleen kaikkien tapahtumien tulisi sisältää samat toiminnot, mutta muutamassa toiminnossa saattaa olla eroja. Tehdään siis jälleen yksi objekti isännäksi toiselle. Edellisestä esimerkistä poiketen lisäämmekin myös lapsiobjektille muutaman tapahtuman. Nämä tapahtumat "kumoavat" isäntäobjektin tapahtumat. Aina, kun lapsiobjekti sisältää toimintoja, nämä suoritetaan siis isännän toimintojen sijaan. Jos haluat suorittaa myös isäntäobjektin tapahtuman, voit käyttää niin sanottua "perimätapahtumaa" käyttämällä oikeaa toimintoa.

On oikeastaan hyödyllistä tehdä tällaisissa tapauksissa luoda yksi perusobjekti. Tällainen perusobjekti sisältää kaikki oletuskäyttäytymiset, mutta sitä ei ikinä käytetä itse pelissä. Kaikki todelliset objektit saavat tämän objektin isännäkseen. Isäntäobjekteillakin voi olla isäntiä ja niin edelleen. (Kehien tekeminen ei kuitenkaan ole sallittua.) Näin voit luoda objektihierarkioita. Tämä on erittäin käytännöllinen tapa pitää peli koossa ja sen opettelu onkin todella suositeltavaa.

Isäntäobjekteille on myös toinen käyttötapa. Se myös periyttää törmäyskäyttäytymisen (Collision) muille objekteille. Selvennetään tätä seuraavalla esimerkillä. Oletetaan, että on neljä erilaista lattiaobjektia. Kun pallo osuu lattiaan, se vaihtaa suuntaa. Tämä täytyy määrittää pallon törmäystapahtumassa. Koska nyt on neljä erilaista lattiaa, täytyy koodi sijoittaa jokaiseen törmäystapahtumaan erikseen. Jos kuitenkin teet yhden perusobjektin ja laitat kaikille lattioille tämän perusobjektin isännäksi, tarvitsee sinun tehdä törmäystapahtuma vain tämän perusobjektin kanssa. Tämä tapahtuma periytyy perusobjektin lapsille. Tämä säästää jälleen paljon aikaa turhalta kopioinnilta.

Kuten aiemmin mainittiin, aina kun käytät objektia, vaikutus kohdistuu myös sen lapsiin. Tämä tapahtuu, kun ilmoitat toiminnossa, että se on suoritettava kaikille tietyn objektin instansseille. Näin käy myös, kun käytät with-lausetta koodissa (tästä myöhemmin lisää). Lisäksi se toimii, kun kutsut tiettyjä funktioita, kuten instance_position ja instance_number. Lopuksi se vaikuttaa myös, kun viittaat toisten objektien muuttujiin. Jos olisit yllä olleessa esimerkissä asettanut muuttujan ball1.speed arvoksi 10, se olisi myös vaikuttanut objekteihin ball2, ball3 ja ball4.

Maskit (Masks)

Kun kaksi instanssia törmäävät, suoritetaan törmäystapahtuma. Siihen, leikkaavatko kaksi instanssia toisiaan, käytetään niiden kuvia. Tämä on useimmissa tapauksissa oikein, mutta joskus törmäykset voidaan haluta tarkistaa eri muotoisen kuvan mukaan. Esimerkiksi, jos teet isometristä peliä, objekteilla on usein korkeus (jotta ne näyttäisivät kolmiulotteisilta). Törmäyksissä tahdot kuitenkin käyttää sen maahan osuvaa osaa. Tämä onnistuu tekemällä erillinen kuva, jota käytetään objektin törmäysmaskina.

Tiedot (Information)

Show Information (Näytä tiedot) -näppäin antaa yleiskatsauksen kaikesta objektin tiedoista, ja nämä tiedot voi myös tulostaa. Tämä on erityisen kätevää, kun et enää ole täysin perillä kaikista toiminnoista ja tapahtumista.