Huom! Nämä wikisivut ovat osittain vielä työn alla, osa sisällöstä saattaa olla puutteellista. Ongelmakohtien viereen voit jättää kommentin, yliopiston käyttäjät myös pystyvät (ja saavat) muokata sivuja.

Jypelin käyttöohjeet » Sivulle skrollaava kenttä

Esim spaceshooter-tyyppisissä peleissä pelaaja on paikallaan ja muut oliot, esimerkiksi vihollisalukset, lähestyvät pelaajaa.

Alla on ohje jolla voidaan liikuttaa "muita olioita" pelaajan pysyessä paikallaan.

Huomaa, että tämä ei ole välttämättä hyvä tapa tehdä ns. sidescroller-pelejä. Sellaisissa peleissä (esim. Geometry Dash) on mielekkäämpää liikuttaa pelaajaa ja kameraa ja pitää muu maailma paikallaan.

Alla olevat rivit kuuluu laittaa luokan yläreunaan, ennen Begin-aliohjelmaan. Suunnalla voi säädellä olioiden liikesuuntaa ja tuhoamisX määrittää, minkä koordinaatin ylittäessään oliot tuhotaan.

Miksi on mielekkäämpää liikuttaa pelaajaa ja kameraa? Eikö tämä suuressa kentässä vain johda hävyttömän suuriin sijaintikoordinaatteihin ja melkein pakota laatimaan kentän kokonaan ennalta?

17 Oct 23
    private List<GameObject> liikutettavat = new List<GameObject>();
    private double suunta = -5;
    private double tuhoamisX;
    

Begin:iin lisätään tuhoamisX:n sijainnin määritys. Samoin luodaan uusi ajastin, jonka avulla saadaan liikutettua olioita vasemmalle. Oliot, jotka halutaan liikkuvan vasemmalle, pitää lisätä liikutettavat-listaan.

    public override void Begin()
    {
        tuhoamisX = Level.Left;

        Timer liikutusajastin = new Timer();
        liikutusajastin.Interval = 0.05;
        liikutusajastin.Timeout += LiikutaOlioita;
        liikutusajastin.Start();

        PhysicsObject pallo = new PhysicsObject(50, 50);
        Add(pallo);
        liikutettavat.Add(pallo);
    }

Lisää vielä alla oleva aliohjelma koodiin. Aliohjelma siirtää listalla olevia olioita vasemmalle.

    private void LiikutaOlioita()
    {
        for(int i = 0; i < liikutettavat.Count; i++) 
        {
            GameObject olio = liikutettavat[i];
            olio.X += suunta;
            if (olio.X <= tuhoamisX)
            {
                olio.Destroy();
                liikutettavat.Remove(olio);
            }
        }
    }

These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.