Polut

Edistyneemmissä peleissä voit usein haluta, että instanssit seuraavat tiettyjä polkuja. Vaikka voitkin toteuttaa tämän käyttämällä esimerkiksi ajastintoimintoja tai koodia, se on melko monimutkaista. Polkuresurssit ovat tähän tarkoitukseen paljon helpompia. Idea on suhteellisen yksinkertainen: ensin määrittelet polun piirtämällä sen. Sitten voit asettaa toiminnon, joka käskee objektia seuraamaan tiettyä polkua, objektin luomistoimintoon. Tässä kappaleessa käsitellään tämä asia perusteellisesti.

Polkujen määritteleminen

Kun haluat luoda polun peliisi, valitse Create Path (Luo polku) Resources (Resurssit) -valikkoon. Seuraavanlainen ikkuna ilmestyy (tässä esimerkissä olemme jo luoneet siihen pienen polun).

Ikkunan ylävasemmassa kulmassa voit tuttuun tapaan antaa polulle nimen. Sen alta löytyvät pisteet, jotka määrittelevät polun. Jokaisella pisteellä on sekä sijainti että nopeus (merkitty kirjaimilla sp). Riippuen siitä, miten käytät polkua, sijainti on joko absoluuttinen, eli instanssi, joka myöhemmin käyttää polkua, seuraa sitä juuri sillä kohtaa, mihin se on piirretty, tai suhteellinen, eli instanssi aloittaa aina polun aloituspisteestä ja seuraa sitä siitä lähtien. Nopeus tulisi käsittää seuraavalla tavalla. Arvo 100 tarkoittaa polulle annettavaa alkuperäistä nopeutta, kun se liitetään instanssiin. Alempi arvo hidastaa nopeutta ja korkeampi nopeuttaa sitä (eli se ilmoittaa prosenttimäärän alkuperäiseen nopeuteen verrattuna). Nopeus tasataan pisteiden välillä, joten nopeus muuttuu asteittain.

Lisätäksesi pisteen paina Add (Lisää) -painiketta. Valitusta pisteestä tehdään tällöin kopio. Nyt voit muuttaa sen sijaintia ja nopeutta muuttamalla muokkauskenttien arvoja. Aina, kun valitset pisteen listalta, voit myös muuttaa sen arvoja. Paina Insert (Lisää väliin) -painiketta luodaksesi uuden pisteen ennen nykyistä pistettä, ja Delete (Poista) -painiketta poistaaksesi nykyisen pisteen.

Ikkunan oikealla puolella näet itse polun. Punainen piste ilmaisee nykyistä valittua polun pistettä ja siniset pisteet muita polun pisteitä. Viherä neliä ilmaisee polun alkamispistettä. Voit myös muuttaa polkua käyttämällä hiirtä. Klikkaa mihin tahansa kuvassa pisteen luomiseksi. Klikkaa olemassaolevaa pistettä ja vedä sitä muuttaaksesi sen sijaintia. Kun painat <Shift>-näppäintä pohjassa samalla, kun klikkaat pistettä, luot uuden pisteen. Voit myös poistaa pisteitä painamalla oikealla näppäimellä niitä. (Huomaa, ettet voi muuttaa nopeutta tällä tapaa.) Normaalisti pisteet kohdistetaan ruudukkoon. Voit muuttaa ruudukkoasetuksia ikkunan yläosan palkista. Voit myös määrittää, näytetäänkö ruudukko. Jos haluat sijoittaa pisteen tarkasti, paina <Alt>-näppäintä pohjassa lisätessäsi tai siirtäessäsi sitä.

Voit vaikuttaa polun muotoon kahdella tapaa. Ensinnäkin, voit valita pisteiden yhdistystavan. Voit valita joko suoraviivaiset linjat tai sulavan polkutyypin. Toiseksi, voit valita, onko polku avoin vai suljettu.

Työkalupalkilla on monta tärkeää hallintatyökalua. Vasemmalta oikealle niillä on seuraavat merkitykset. Ensimmäisen painikkeen avulla ilmoitat, että olet valmis. Tällöin ikkuna suljetaan ja muutokset tallennetaan. (Jos haluat hylätä muutokset, paina rastinäppäintä ikkunan sulkemiseen ja valitse, ettei niitä tallenneta.) Seuraava näppäin kumoaa edellisen muutoksen.

Seuraava työkalupalkin näppäinryhmä sisältää painikkeet polun tyhjentämiseen, sen kulkusuunnan muuttamiseen, siirtämiseen, vaaka- tai pystysuuntaiseen peilaamiseen, kiertämiseen sekä skaalaamiseen. Niiden jälkeen ovat kuvakulman siirtämisnäppäimet (ei itse polun; itse kuvakulman rajat ilmoitetaan alhaalla olevalla tilarivillä) ja keskittämisnäppäin.

Kuten jo aiemmin mainittiin, seuraavilla näppäimillä voit asettaa ruudukon kohdistusarvot ja sen, näytetäänkö ruudukko. Viimeisenä näppäimenä on näppin, jolla voit määrittää, haluatko nähdä jonkin tietyn huoneen polun taustana. Tällä tavoin voit helposti laittaa polun tiettyyn kohtaan huonetta, esimerkiksi ralliradalla, jolloin instanssit seuraavat myöhemmin oikeaa reittiä. (Tämän käyttäminen on järkevää vain absoluuttisia polkuja käytettäessä; katso lisää alta.)

Polkujen liittäminen objekteihin

Polun liittämiseksi objektin instanssille voit asettaa polkutoiminnon johonkin tapahtumaan, kuten luomistapahtumaan (Create). Tässä toiminnossa tulee määritellä polku pudotusvalikosta, sekä muutama muu arvo.

Sinun tulee määritellä seurattava polku ja nopeus pikseleinä sekunnissa. Kun nopeus on positiivinen, instanssi aloittaa polun alusta, ja jos se on negatiivinen, se aloitetaan sen lopusta. Muista, että kun määrittelit polun, silloin määrittelemäsi nopeudet ovat suhteellisia tässä annettuun nopeuteen. Seurattavan polun nopeuden muuttamiseen on myös oma toimintonsa. Voit esimerkiksi käyttää tätä instanssin hidastamiseen tai nopeuttamiseen polullaan. Huomaa, että instanssin normaalia nopeutta ei oteta huomioon (oikeastaan aseta se nollaksi) polkua suoritettaessa. Myöskään painovoima, kitka ja vastaavat eivät vaikuta liikkeeseen polulla.

Seuraavaksi sinun tulee määritellä lopputoiminta, eli se, mitä tapahtuu, kun tullaan polun loppuun. Voit valita, että liike ja polun seuraaminen pysäytetään. Voit myös aloittaa polun alusta, eli instanssi palaa polun aloittamispaikkaan ja suorittaa sen uudelleen. Kolmas vaihtoehto on aloittaa uudelleen nykyisestä sijainnista, eli instanssi seuraa polkua jälleen, mutta tällä kertaa aloittaen nykyisestä sijainnista (tämä on sama kuin toinen, jos polku on suljettu). Viimeisenä voit valita suunnan kääntämisen, jolloin instanssi kulkee polkua pitkin edestakaisin. Huomaa myös, että polun loppuun päästäessä suoritetaan polunloppumistapahtuma (End of path); tästä myöhemmin lisää.

Viimeisenä voit määrittää, onko polun oltava absoluuttinen vai suhteellinen. Absoluuttinen polku suoritetaan sillä kohdalla, mihin se on määritelty. Instanssi asetetaan sen alkupisteeseen ja siirretään siitä (tai loppupisteeseen, jos nopeus on negatiivinen). Tämä on hyödyllistä esimerkiksi, kun pelissäsi on rallirata, jolle olet määrittänyt polun. Kun valitset suhteellisen polun, instanssi alkaa seurata polkua nykyisestä sijainnistansa. Tämä on hyödyllistä, kun instanssin pitää tehdä paikallinen liike. Esimerkiksi Space Invader -plein avaruusalukset voivat tehdä tietynlaisen käännöksen nykyisestä sijainnistaan.

Kun haluat asettaa instanssin eri kohtaan polkua, voit käyttää toimintoa, joka asettaa sijainnin polulla. Tämä sijainti on aina väliltä 0 - 1, jossa 0 on alkupiste ja 1 on loppupiste. Huomaa, että suunnan ilmoittava direction-muuttuja asetetaan aina joka askeleella polun mukaiseksi. Voit käyttää tätä muuttujaa oikeaa kuvan kiertoa valitessasi.

Skriptejä tai koodinpätkiä käyttäessäsi voit hallita paremmin tapaa, jolla polku suoritetaan. Polun liittämiselle instanssiin on oma funktionsa. Muuttuja path_position ilmoittaa nykyisen sijainnin polulla (väliltä 0 - 1, kuten aiemmin mainittiin). Muuttuja path_speed ilmoittaa polun nopeuden. Muuttujaa path_scale voidaan käyttää polun skaalaamiseen. Arvo 1 tarkoittaa alkuperäistä kokoa. Suurempi arvo tarkoittaa, että polkua tehdään isommaksi, kun taas pienempi tarkoittaa, että sitä tehdään pienemmäksi. Muuttuja path_orientation ilmoittaa asennon, johon polku suoritetaan (asteina vastapäivään). Tällä tavoin polkuja voi suorittaa eri asennoissa (esimerkiksi ylös ja alas liikkumiseen vasemmalle ja oikealle liikkumisen sijaan). Myös loppukäyttäytymiselle on oma muuttujansa. Näiden lisäksi on myös suuri määrä funktioita polkujen ominaisuuksien kysymiseen (esimerkiksi tietyn sijainnin x- ja y-koordinaatit). On jopa funktioita, jotka luovat törmäysvapaita polkuja instansseille, jotta ne pääsevät tiettyyn pisteeseen. Katso lisätietoa myöhemmistä GML-osan osioista.

Voit ihmetellä, mitä tapahtuu, kun polkua seuraava instanssi törmää toiseen instanssiin. Periaatteessa täysin sama asia tapahtuu, kuin silloin, kun instanssi liikkuu tietyllä nopeudella. Kun törmäyksen toinen osapuoli on kiinteä (solid), instanssi siirretään takaisin sen edelliseen sijaintiin. Kun molemmat instanssit ovat kiinteitä, molemmat siirretään niiden edellisiin sijainteihin. Seuraavaksi törmäystapahtuma(t) suoritetaan, ja tarkistetaan, onko törmäys ratkaistu. Jos ei, ja toinen instanssi on kiinteä, instanssi pysähtyy, kuten sen pitääkin (olettaen, että törmäystapahtuma on määritelty). Myöskään path_position-muuttujaa ei muuteta. Kun tiellä oleva instanssi on poissa, instanssi jatkaa polun seuraamista. Jos haluat hallita törmäyksiä itse, muuttuja path_positionprevious voi olla hyödyllinen. Siinä säilytetään edellistä sijaintia polulla ja voit asettaa polun sijainnin täksi arvoksi polulla etenemisen estämiseksi.

Polkutapahtuma

Kuten aiemmin mainittiin, voit määrittää, mitä polun päässä tulee tapahtua. Tällä hetkellä myös polun päättymistapahtuma (End of Path) suoritetaan. Löydät sen Other (Muut) -tapahtumaryhmästä. Voit asettaa myös tähän toimintoja. Voit esimerkiksi haluta tuhota instanssin tai antaa sille uuden (erilaisen) polun seurattavaksi.