Zvijezde - scrollanje više layera različitim brzinama, uz prividni kontinuitet

Issue #21 new
Ivan Vučica
created an issue

Konkretnu grafiku kasnije će napraviti @Filip Mravunac

Ovdje je zadatak napraviti to da se layer crta dva puta; kada prva slika ispadne s ekrana (usporediti koristeći x i texture->w), onda je preseliti da se crta točno iza druge slike.

Ti layeri koji se scrollaju moraju imati i brzinu koja se postavlja u konstruktoru.

Može se izvesti kao podklasa Layera (preferabilno) ili kao zasebna klasa ili kao modifikacija Layera (manje dobro, jer se koriste i za background na main meniju).

Comments (14)

  1. Dino Drokan

    Napravio sam podklasu Layera, konstruktor i destruktor i kod konstruktora ispred vitičastih zagrada mi izacjue error:"no matching function for call to Layer::Layer()". Ne razumijem što to znači.

  2. Ivan Vučica reporter

    Ako ne preciziraš koji konstruktor koristiš, on pokuša koristiti default konstruktor (onaj bez argumenata). Mi nemamo konstruktor bez argumenata.

    Npr ako imaš:

    class Layer
    {
        public:
        // Layer(); <== ovog nema
        Layer(std::string datoteka);
    };
    

    ne možeš imati:

    class DrugiLayer : public Layer
    {
        public:
        DrugiLayer();
    };
    DrugiLayer::DrugiLayer()
    {
    }
    

    nego moraš imati:

    DrugiLayer::DrugiLayer() : Layer("nazivDatoteke")
    {
    }
    

    Primijeti ovo iza dvotočke.

  3. Ivan Vučica reporter

    U principu nema potrebe da reimplementiraš taj dio.

    Naravno, računaš na to da se taj layer treba scrollati lagano + nikada ne smije ostati rupa na mjestu gdje bi layer trebao "početi nestajati"?

    Imaš dva načina; jedan je da umjesto micanja layera samo "povećavaš" x koordinatu za teksturne koordinate, a drugi je da imaš dva layera koji se nadopunjavaju. Ti napravi kako ti je najlakše :)

  4. Dino Drokan

    DrugiLayer se crta, ali sada čim nešto napišem u DrugiLayer::updateSelf(const double timeDelta) igrica ce crasha pri pritisku na play button.

    Po uzoru na Playership sam dodao u gm_level.h:

    DrugiLayer * drugilayer; //Otprilike razumijem što ovo radi
    

    i u gm_Level::updateSelf() sam dodao ovo:

     this->drugilayer->updateSelf(timeDelta);
    
  5. Ivan Vučica reporter

    Pliz pushaj svoje promjene kako bi tvoj repozitorij mogao forkati @Filip Mravunac, commitati svoju novu grafiku, i tebi submitati pull request.

    Zatim, kad si gotov, ti napraviš pull request za sve promjene (i svoje i njegove) prema centralnom repozitoriju.

  6. Log in to comment