Issues

Issue #21 new

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

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