Voimia ja kappaleiden sitominen toisiinsa
1. Lumiukko Riderilla
- Lue myös sivu Solutioneista ja projekteista
- Luo Riderilla uusi Fysiikkapeli -projekti nimelle Lumiukko.
- Kirjoita Lumiukko.cs tiedoston koodiksi:
using Jypeli;
namespace Lumiukko;
public class Lumiukko : PhysicsGame
{
public override void Begin()
{
Camera.ZoomToLevel();
Level.Background.Color = Color.Black;
PhysicsObject p1 = new PhysicsObject(2 * 100.0, 2 * 100.0, Shape.Circle);
p1.Y = Level.Bottom + 200.0;
Add(p1);
PhysicsObject p2 = new PhysicsObject(2 * 50.0, 2 * 50.0, Shape.Circle);
p2.Y = p1.Y + 100 + 50;
Add(p2);
PhysicsObject p3 = new PhysicsObject(2 * 30.0, 2 * 30.0, Shape.Circle);
p3.Y = p2.Y + 50 + 30;
Add(p3);
Gravity = new Vector(0, -400);
}
}- aja peli
- ongelmana on se, että ukko putoaa pois kuvasta.
2. Reunat peliin
- lisätään aluksi reunat peliin, niin kappaleet eivät pääse pois pelialueelta
- lisää Begin-metodin loppuun rivi
- nyt kukin lumipallon osa on oma kokonaisuutensa ja käyttäytyy fysiikan lakien mukaisesti pompaten alareunasta ja toisista palloista.
3. Voimaa kuulaan
- "lyödään" ylintä palloa sivulle
- lisää rivi:
4. Painovoiman suunnan vaihtaminen
- lisätään ohjelmaan vielä kello, jonka perusteella painovoima vaihtaa suuntaansa
- lisää Begin-metodin loppuun rivit:
- viimeiset kaksi riviä eivät liity kelloon, vaan sen ansiosta Esc näppäintä painamalla poistutaan ohjelmasta ja F1 näppäimellä näytetään avustus
- lisää vielä Begin-metodin loppusulun } perään pari tyhjää riviä ja uusi VaihdaPainovoimaa-metodi:
- eli nyt 5.0 sekunnin välein käydään suorittamassa VaihdaPainovoimaa-metodi, joka muodostaa uuden painovoimavektorin, jolla on sama voiman suuruus kuin aikaisemminkin (Gravity.Magnitude) mutta painovoimavektorin suunta kasvaa 90 asteella. Eli ohjelman aluksi painovoima vaikuttaa alaspäin, sitten 5 sekunnin kuluttua 90 astetta vastapäivään kierrettynä, eli "vetää" oikealle seinälle, seuraavan 5 sekunnin kuluttua ylöspäin, sitten vasemmalle ja lopulta taas alaspäin.
- aja ohjelmaa muutama "kierros". Kokeile painaa F1 ja sitten myöhemmin Esc.
5. Nappulat tekemään muutakin
- lisätään vielä niin, että nuoli-ylös näppäimellä saadaan keskipallo "potkaistua" ylöspäin.
- lisää edellisen Keyboard.Listen rivin perään:
- lisää VaihdaPainovoimaa-metodin perään (siis }-sulun jälkeen) uusi metodi LyoPalloa:
- nyt siis joka kerta nuoli ylös -näppäintä painettaessa kutsutaan metodia LyoPalloa ja sille viedään parametriksi pallon p2 viite sekä ylöspäin osoittava voimavektori.
- aja ja kokeile nuoli ylös -näppäintä.
- keksi miten lisätään "lyönti" vasemmalle, oikealla ja alas?
- entä miten voitaisiin lyödä muita palloja? (vinkki, esim. A-näppäimeen voi viitata nimellä Key.A)
6. Kappaleiden sitominen toisiinsa
- nyt lumiukko kostuu kolmesta toisistaan irrallisista pallosta, joten lumiukko hajoaa heti.
- voit sitoa haluamasi kappaleet yhteen seuraavasti. Lisää Add(p3) -rivin jälkeen rivit:
Vaihda kohdan 5 rivi
Keyboard.Listen(Key.Up, ButtonState.Pressed, LyoPalloa, "Lyö keskipalloa ylöspäin", p2, new Vector(0,1000));seuraavanlaiseksi:
Keyboard.Listen(Key.Up, ButtonState.Pressed, LyoUkkoa, "Lyö lumiukkoa ylöspäin", ukko, new Vector(0,1000));Lisää ohjelmaan vielä uusi aliohjelma LyoUkkoa:
- kokeile ajaa ja nyt ukon pitäisi olla yksi kokonaisuus.
- kokeile eri pallojen lyömistä eri suuntiin
These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.