wiki:Efektit
Last modified 4 years ago Last modified on 2013-03-20 12:12:32

Jypelin käyttöohjeet » Miten peliin saa efektejä?

  1. 1. Yleistä efekteistä
  2. 2. Räjähdys
  3. 3. Liekki
  4. 4. Savu
  5. 5. Valo

Jotta saisit efektit käyttöön peliisi, tulee sinulla olla seuraava using-rivi kooditiedostosi alussa

using Jypeli.Effects;

1. Yleistä efekteistä

Jotta ymmärtäisit kuinka efektit toimivat ja kuinka niitä luodaan Jypelissä, tulee sinun tietää muutamia seikkoja efekteistä.

  • Jokainen efekti joka pelissä luodaan, kuuluu johonkin efektijärjestelmään
  • Yksi efekti koostuu aina niin sanotuista partikkeleista.

2. Räjähdys

Jokainen erilainen efekti käyttää sille tarkoitettua järjestelmää. Räjähdysefektillä tuon järjestelmän nimi on ExplosionSystem. Jotta voisit luoda räjähdyksiä, sinun täytyy kirjoittaa seuraavat rivit koodiin

int pMaxMaara = 200;
// Alustetaan räjähdysjärjestelmä
// Parametrit:
// * kuva: mitä tekstuuria räjähdyksen 
//   hiukkasten halutaan käyttävän
// * pMaxMaara: räjähdyksen käyttämien 
//   hiukkasten eli partikkeleiden maksimimäärä
ExplosionSystem rajahdys = 
  new ExplosionSystem(LoadImage("rajahdys_kuva"), pMax);

// Lisätään järjestelmä peliin
Add(rajahdys);

double x = 0; 
double y = 0;
int pMaara = 50;
// "Käynnistetään" räjähdys
rajahdys.AddEffect(x, y, pMaara);

Huomaa erityisesti seuraava rivi.

rajahdys.AddEffect(x, y, pMaara);

Tämä rivi lisää halutun efektin peliin, tässä tapauksessa räjähdyksen. Parametreista:

  • x ja y-parametrit kertovat efektin x ja y-koordinaatit, eli paikan.
  • pMaara-parametri kertoo kuinka monta partikkelia luotava efekti käyttää.
    • Yhdellä järjestelmällä voidaan tehdä monta räjähdystä, ja kaikilla räjähdyksillä yhdessä on käytössä järjestelmän pMax kappaletta partikkeleita käytössään.
    • Esim. jos tehdään ExplosionSystem rajahdys jonka partikkeleiden maksimi on 50, ja lisätään 3 räjähdystä, jossa kussakin 20 partikkelia, niin partikkelit "loppuvat kesken", ja silloin partikkeleita aletaan tuhoamaan vanhemmasta päästä. (Eli ensin luodut partikkelit tuhotaan ensin.)

Video 1, video 2

2.1. Räjähdyksen mukauttaminen

Räjähdyksellä on paljon ominaisuuksia, joilla voi muokata räjähdyksen ulkonäköä haluamakseen. Tässä niistä muutama.

OminaisuusTyyppi ja merkitysSelitys
MinLifeTimedouble, aika sekunteinaEfektin partikkelin lyhin mahdollinen elinaika.
MaxLifeTimedouble, aika sekunteinaEfektin partikkelin pisin mahdollinen elinaika.
MinVelocitydoublePienin nopeus, joka efektin partikkelilla voi olla.
MaxVelocitydoubleSuurin nopeus, joka efektin partikkelilla voi olla.
MinScaledoublePienin skaalaus joka efektin partikkeleilla voi olla. (Luku 1 tarkoittaa että partikkelin koko on tekstuurin koko.)
MaxScaledoubleSuurin skaalaus joka efektin partikkeleilla voi olla.
MinRotationSpeeddoublePienin pyörimisnopeus joka efektin partikkelilla voi olla.
MaxRotationSpeeddoubleSuurin pyörimisnopeus joka efektin partikkelilla voi olla.

2.2. Sopivien ominaisuusarvojen etsiminen

Räjähdysjärjestelmän arvoja voi kokeilla, mutta siihen on myös olemassa pieni testiohjelma, joka löytyy täältä: https://trac.cc.jyu.fi/projects/npo/browser/trunk/testit/RajahdysTesti. Ohjelman avulla voi etsiä näppäinten avulla sopivat ominaisuusarvot.

3. Liekki

Liekkiefekti käyttää Flame nimistä efektijärjestelmää. Jotta saat liekkiefektin peliisi tarvitset seuraavat koodirivit

Flame liekki = new Flame(kuva, pMaxMaara, suunta);
liekki.Position = new Vector(x,y);
Add(liekki);

Tarkastellaan myös näitä rivejä hieman tarkemmin:

Flame liekki = new Flame(kuva, pMaxMaara, suunta);

Kuten räjähdyksessäkin, tämä rivi alustaa uuden liekkijärjestelmän, joka huolehtii liekin piirtämisestä ja päivittämisestä.

  • kuva-parametri määrittää mitä kuvaa liekin hiukkaset käyttävät
  • pMaxMaara-parametri määrittää mikä on liekin käyttämien hiukkasten maksimimäärä
  • suunta-parametri määrittää mikä on liekin suunta
liekki.Position = new Vector(x,y);

Tämä rivi määrittää liekin sijainnin.

  • new Vector(x, y) on vektori, joka on sijainti pelimaailmassa

Add(liekki);

Kuten räjähdyksessäkin, tämä rivi lisää liekkijärjestelmän peliin.

Video liekistä

4. Savu

Valmiin savuefektin saa luotua Smoke-efektin avulla.

Smoke savu = new Smoke();
savu.Position = auto.Position;
Add(savu);

Omasta kuvasta luotu savuefekti luodaan antamalla uudelle savulle parametrina kuva ja savun leveys.

Smoke savu = new Smoke(savuHiukkasenKuva, 10);

Ulomman savuhiukkasen kuvan voi asettaa erikseen:

savu.OuterParticleImage = ulommanSavuHiukkasenKuva;

Savuttamisen suuntaan vaikuttaa tuulen suunta ja nopeus:

Wind = new Vector(100, 20);

Savuefektillä on lisäksi monia samoja ominaisuuksia kuin muillakin efekteillä. Ominaisuuksien arvoja muuttamalla voi savusta muokata juuri mieleisensä.

5. Valo

Jypelissä peliin voi lisätä yhden valoefektin. Valo valaisee muita pelissä olevia olioita, joilla on tekstuuri. Valo ei kuitenkaan valaise esimerkiksi kentän taustaa tai taustakuvaa (Background).

Jotta valoefekti näkyy paremmin, kannattaa kentän valoisuutta hieman hämärtää asettamalla sen AmbientLight-ominaisuuden arvoksi jokin desimaaliluku väliltä -1.0 - 1.0.

Valo luodaan näin:

Level.AmbientLight = 0.3;

Light valo = new Light();
valo.Intensity = 0.8;
valo.Distance = 150;
valo.Position = lamppu.Position;
Add(valo);
  • Intensity on valon voimakkuuden arvo, joka on väliltä 0.0 - 1.0.
  • Distance on valon etäisyys kentän pinnasta. Mitä suurempi etäisyys, sitä laajemman alueen valo valaisee.
  • Position on valon paikka vektorina. Tässä esimerkissä valon paikaksi on asetettu lamppu-nimisen muuttujan paikka.

Vinkki: jos haluat että valo valaisee myös pelikentän taustaa, luo kentän taustalle kentän levyinen GameObject ja aseta sille haluamasi tekstuuri.

GameObject tausta = new GameObject(Level.Width, Level.Height);
tausta.Image = taustanKuva;
Add(tausta, -3);

Attachments