2d scrolling



  • sollte man um einen 2d scroller zu erzeugen die gesammte map vorrendern und das hauptobject per kamera verfolgen?

    also die gesammte 2d welt von sagen wir -1000 bis plus 1000 auf der x achse erstellen und das hauptobject bewegen bzw den auschnitt welchen man im fenster dann sieht einfach von -1000 bis 1000 mitbewegen?

    oder irgendwelche vorschläge, hab irgendwie noch keine konkreten ideen wie man sowas am besten macht

    und den hintergrund als 3d einfach mit der z-achse versetzen um einen schönen tiefen effekt zu bekommen?





  • naja so zirka muss mal schaun





  • werd das irgend wie mit kamera view machen, nur hab ich noch keine ahnung ob ich die objecte erstelle oder erst dann erzeuge wenn man wirklich mit der kamera dort hin schaut und vorher einfach das programm ohne darstellung rechnen lässt, für collusion und wie sich die objekte sonst so verhalten was ich ja onehin machen muss.

    aber danke



  • wenn die map nicht allzu riesig ist solltest die schon vorher erstellen, denke ich damit du beim scrollen nicht ständig nachladen musst.

    Um einen Tiefeneffect zu erzeugen kannst du auch die einfach variante machen und im endeffect mehrere Ebenen übereinanderlegen, die dann unterschiedlich schnell scrollen, das kennst du vielleicht aus Moorhuhn.

    Das ist zumindest meine Idee für einen "einfachen" Sidescroller.

    Natürlich kannst Du auch 2d Sprites in einen 3D Raum zeichen, aber das halte ich für komplizierter 😉

    edit: oh sorry die Antwort steht auch schon im 2. post im Link. Grad erst gesehen.



  • Das ganze geht viel viel einfacher:

    Berechne: ViewDifferenceX und Y:

    ViewDifferenceX = Sprite->GetPositionX() - RESOLUTION_X / 2;
    ViewDifferenceY = Sprite->GetPositionY() - RESOLUTION_Y / 2;
    

    Jetzt einfach jedes Sprite um diesen Wert verschoben Zeichnen (am Besten genau in der Draw Funktion der Klasse)

    mfg



  • Ein Sprite für Scrolling ist gut. Mehrere sind besser. Somit kannst du wenn das erste links rausfällt es neu zeichnen und rechts wieder hineinschieben.
    Das nennt sich dann Streaming, ist auch mit Vertexquads gut.
    Versetzten von z-Achse würde nur das Hintergrundbild verkleinern.
    Mit DrawingOrder Front to Back einfach mittels Blending deine Layers übereinanderpicken,
    damit sparst du dir auch gleich Performance.


Log in to reply