SFML Objekt welches links den Bildschirm verlässt soll rechts erscheinen



  • Hey Leute,

    wie kann ich es mit SFML realisieren, dass ein Objekt welches den Bildschirm links verlässt gleichzeitig wieder rechts eintritt.
    Wenn jetzt z.B. ein Hintergrundbild links hinausgeht, soll die linke seite des bildes direkt rechts wieder erscheinen.

    Wie kann man das machen?



  • Ich gehe davon aus dass du die Frage stellst weil du der Meinug bist dass es da irgendwas magisches/vorgefertigtes/... gibt was man nur einschalten muss. Gibt es nicht. Einfach machen. Du bist Programmierer, also programmier es. Also Bild 2x rendern lassen, 1x an der Position wo es links raussteht und dann ein 2. mal um eine Bildschrimbreite nach rechts versetzt.

    ps: Natürlich gibt es vermutlich schon vorgefertigte Lösungen die etwas in der Art können. Im Prinzip kannst du das, wenn es nur um nen Hintergrund geht, und der Scrollbereich nicht unendlich ist, mit vermutlich jeder Game-Engine hinbekommen die die Möglichkeit anbietet irgendwie scrollbare Levels zu editieren. Da klebst du das Bild dann einfach mehrfach rein.

    Und natürlich kannst du, wenn das Bild bildschirmfüllend ist mit ner Textur und Clamping-Mode "wrap" arbeiten.

    Generische Lösung für kleine Objekte, also z.B. dass der halbe Pacman der links raussteht schon wieder rechts reinguckt, kenne ich aber keine.



  • Ich ging nicht davon aus dass es eine Funktion für so etwas gibt, aber ich dachte jemand hätte einen Lösungsvorschlag. Ich hab nachdem ich die Frage gestellt habe selbst rumprobiert und es nun genauso gemacht wie du es beschrieben hättest ^^

    PS: Ich bräuchte das nicht für das spielan sich, aber für das Hauptmenü, wo aus ästhetischen Gründen ein Bild für immer, langsam durch den Bildschirm laufen sollte. Hab im Endeffekt ein vector mit 3 aprites erstellt, und diese hintereinander angereiht. (Aber etwas überlappend, damit beim bewegen keine flimmernden kannten entstehen). Hab diese 3 Bilder dann immer durchlaufen lassen, und sobald ein Bild links komplett raus ist, wird es wieder hinter das letzte gesetzt.



  • Ich weiß nicht ob du immer noch nach einer Lösung für das Problem suchst. Ich weiß auch nicht welche Programmiersprache du verwendest. Falls du c++ beherrscht ist es eigentlich nicht weiter schwierig die Logik für ein Objekt zu schreiben das auf der anderen Seite des Bildschirms wieder auftauchen soll.

    Hier ein Codeausschnitt dazu:

    if(x >= width) x = 0; else if(x < 0) x = width -1;
    if(y >= height) y = 0; else if(y < 0) y = height -1;
    

    Zum Verständniss: x und y sind die Koordinaten des Objekts das sich über den Bildschirm bewegt. heigth stellt die Höhe und width die Breite des gerenderten Bildes dar. Ziemlich selbsterklärend.
    Mit diesem Ausschnitt bist du in der Lage es von Oben nach Unten, sowie von Seite zu Seite laufen zu lassen. Falls du nur von Seite zu Seite brauchst wie du beschrieben hast wäre nur die Erste Zeile von Nutzen für dich.
    Natürlich wirst du noch einige Arbeit vor dir haben das auf ein laufendes Bild umzumünzen da dieser Codeausschnitt sich auf ein kleines Objekt bezieht das auf der anderen Seite komplett wieder auftauchen soll. Viel Glück!
    Hoffe ich konnte dir weiter helfen.



  • @MagnumOpus
    Hast du mehr als nur die Überschrift gelesen?
    Hast du meine Antwort und die Antwort darauf von D4RKS0UL23 gelesen?
    Ernst gemeinte Frage.


Log in to reply