{"id":321,"date":"2023-07-20T11:05:00","date_gmt":"2023-07-20T09:05:00","guid":{"rendered":"https:\/\/sora.fshcloud.de\/?p=321"},"modified":"2025-02-14T14:45:05","modified_gmt":"2025-02-14T13:45:05","slug":"pico-8-tutorial-6-animiere-deine-spielfigur-teil-2","status":"publish","type":"post","link":"https:\/\/sora.fshcloud.de\/?p=321","title":{"rendered":"Pico 8 Tutorial 6: Animiere deine Spielfigur Teil 2"},"content":{"rendered":"\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Was du am Ende des Tutorials k\u00f6nnen solltest<\/strong><br>&#8211; Du verstehst, wie man Funktionen Werte \u00fcbermittelt<br>&#8211; Du verstehst, was der &#8222;Stellvertreter&#8220; in einer Funktion macht<br>&#8211; Du spiegelst die Bewegung deiner Spielfigur, damit es so aussieht, als w\u00fcrde sie nach rechts laufen. <\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Einf\u00fchrung<\/h2>\n\n\n\n<p>Unsere Spielfigur l\u00e4uft nun nach links. Dr\u00fccken wir die Pfeiltaste nach rechts, nach oben oder unten, schwebt oder gleitet die Figur aber noch. In diesem Tutorial lernst du, deine FIgur auch &#8222;nach rechts&#8220; trippeln bzw. laufen zu lassen. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Videotutorial<\/h2>\n\n\n\n<p>Schaue dir gerne wie gewohnt das Videotutorial an. <\/p>\n\n\n\n<figure class=\"wp-block-video\"><video height=\"720\" style=\"aspect-ratio: 1152 \/ 720;\" width=\"1152\" controls src=\"https:\/\/sora.fshcloud.de\/wp-content\/uploads\/2024\/07\/spieler_animieren_2.mp4\"><\/video><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Schritt 1: Wir machen es uns leicht<\/h2>\n\n\n\n<p>Wir haben unsere Spielfigur jetzt in drei unterschiedlichen Positionen gezeichnet. <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"2880\" height=\"1800\" src=\"https:\/\/sora.fshcloud.de\/wp-content\/uploads\/2024\/07\/Bildschirmfoto-2024-07-19-um-11.46.53.png\" alt=\"\" class=\"wp-image-305\"\/><\/figure>\n\n\n\n<p>Damit unsere Figur auch nach rechts &#8222;animiert&#8220; wird, k\u00f6nnten wir in die Fenster Nummer 003 und 004 unsere Spielfigur in zwei weiteren Positionen zeichnen und diese dann mithilfe unserer _animation() Funktion animieren. Es gibt aber eine M\u00f6glichkeit, wie wir unsere Figur nach rechts laufen lassen k\u00f6nnen, ohne sie in diesen Positionen noch einmal zeichnen zu m\u00fcssen. <\/p>\n\n\n\n<p>Hierf\u00fcr schauen wir uns in TAB 1 nochmal unseren <strong>spr() <\/strong>Befehl an. <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"2880\" height=\"1800\" src=\"https:\/\/sora.fshcloud.de\/wp-content\/uploads\/2024\/07\/Bildschirmfoto-2024-07-20-um-10.21.33.png\" alt=\"\" class=\"wp-image-322\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Schritt 2: spr() verstehen und f\u00fcr uns nutzen<\/h2>\n\n\n\n<p>Streng genommen ist <strong>spr()<\/strong> kein Befehl sondern eine bereits festgelegte Funktion von Pico 8 &#8211; \u00e4hnlich wie<strong> _init(), _update() <\/strong>oder <strong>_draw()<\/strong>. Damit die Anweisungen, die in <strong>spr() <\/strong>definiert bzw. erstellt worden sind (die wir aber nicht sehen k\u00f6nnen), auch tats\u00e4chlich funktionieren, braucht <strong>spr()<\/strong> Werte, die wir ihr mitteilen m\u00fcssen. Die Funktion kann also nur dann richtig arbeiten, wenn sie Werte von uns bekommt. Das ist nicht bei allen Funktionen der Fall. Die Funktion <strong>cls() <\/strong>direkt \u00fcber<strong> spr() <\/strong>ben\u00f6tigt zum Beispiel keine Werte, um zu funktionieren. <\/p>\n\n\n\n<p>Wir geben <strong>spr()<\/strong> drei Werte aus unserem Spieler-Objekt mit: <strong>spieler.sprite<\/strong> (Welches Bild unserer Spielfigur soll zum Start des Spiels gezeichnet werden?), <strong>spieler.x <\/strong>(Wo auf der X-Linie soll unsere Figur bei Start des Spiels gezeichnet werden?) und <strong>spieler.y<\/strong> ( Wo auf der Y-Linie soll unsere Figur bei Start des Spiels gezeichnet werden?) <\/p>\n\n\n\n<p><strong>spr() <\/strong>akzeptiert aber weitere Werte. Wir k\u00f6nnen ihr zum Beispiel einen Wert daf\u00fcr mitgeben, wie viele Spielfigur-Bilder rechts und links von unserem aktuellen Spielfiguren-Bild mit angezeigt werden sollen. Wir k\u00f6nnen ihr einen weiteren Wert daf\u00fcr mitgeben, wie viele Spielfigur-Bilder oben und unten von unserer aktuellen Spielfigur angezeigt werden sollen. So k\u00f6nnen wir Spielfiguren zeichnen, die gr\u00f6\u00dfer sind als unsere aktuelle Figur.<\/p>\n\n\n\n<p><strong>Probieren wir es doch einmal aus. <\/strong><\/p>\n\n\n\n<p>Gehe in den Sprite-Editor und klicke auf das Fenster Nummer 005. Siehst du den Regler rechts im Editor unter den Farben und direkt \u00fcber den Kreisen? <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"2880\" height=\"1800\" src=\"https:\/\/sora.fshcloud.de\/wp-content\/uploads\/2024\/07\/Bildschirmfoto-2024-07-20-um-10.47.10.png\" alt=\"\" class=\"wp-image-323\"\/><\/figure>\n\n\n\n<p>Schiebe den Regler um eins nach oben. Der wei\u00dfe Rahmen umrandet jetzt nicht mehr nur das Fenster Nummer 005, sondern zus\u00e4tzlich die Fenster 006, 021 und 022. In diese vier ausgew\u00e4hlten Fenster k\u00f6nnen wir nun GLEICHZEITIG ein neues Bild zeichnen, z.B. das Bild einer Spielfigur. Diese Spielfigur ist dann aber insgesamt viermal so gro\u00df wie unsere Anfangs-Spielfigur. Eine vergr\u00f6\u00dferte Spielfigur k\u00f6nnte so aussehen: <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"2880\" height=\"1800\" src=\"https:\/\/sora.fshcloud.de\/wp-content\/uploads\/2024\/07\/Bildschirmfoto-2024-07-20-um-10.51.40.png\" alt=\"\" class=\"wp-image-324\"\/><\/figure>\n\n\n\n<p>Lass uns doch mal unsere vergr\u00f6\u00dferte Spielfigur auf das Spielfeld bringen. <\/p>\n\n\n\n<p>Gehe in Tab 0 und \u00e4ndere den Wert der Eigenschaft Sprite unseres Spielerobjekts von 2 auf 5: <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"2880\" height=\"1800\" src=\"https:\/\/sora.fshcloud.de\/wp-content\/uploads\/2024\/07\/Bildschirmfoto-2024-07-20-um-10.56.12.png\" alt=\"\" class=\"wp-image-325\"\/><\/figure>\n\n\n\n<p>Gehe anschlie\u00dfend wieder in TAB 1 und f\u00fcge der Sprite Funktion zwei weitere Werte zu. Diese Werte speichern wir vorher nicht als Eigenschaften in einem Objekt, sondern geben sie direkt mit. Wir \u00fcbermitteln f\u00fcr den ersten und zweiten Wert jeweils die Zahl 2. <\/p>\n\n\n\n<p>Dein Code sollte jetzt so aussehen: <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"2880\" height=\"1800\" src=\"https:\/\/sora.fshcloud.de\/wp-content\/uploads\/2024\/07\/Bildschirmfoto-2024-07-20-um-10.58.14.png\" alt=\"\" class=\"wp-image-326\"\/><\/figure>\n\n\n\n<p>Was &#8222;machen&#8220; diese Zahlen? spr() bekommt von uns die Anweisung, dass er ZWEI waagerecht-hintereinanderliegende Bilder und jeweils ZWEI \u00fcbereinanderliegende Bilder aus unseren Sprite-Fenstern nehmen soll. Er nimmt also zuerst das Bild aus dem Fenster 005, holt sich das Bild, dass rechts neben ihm liegt (Fenster 006), schnappt sich anschlie\u00dfend das Bild aus dem Fenster, welches unter 005 liegt (also 021) und nimmt zuletzt das Bild, welches unter dem Fenster 006 liegt (also Fenster 022). <\/p>\n\n\n\n<p>Dr\u00fcckst du nun command und r, siehst du deine vergr\u00f6\u00dferte Spielfigur auf dem Feld: <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"2880\" height=\"1800\" src=\"https:\/\/sora.fshcloud.de\/wp-content\/uploads\/2024\/07\/Bildschirmfoto-2024-07-20-um-11.04.29.png\" alt=\"\" class=\"wp-image-327\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Schritt 3: Einen Schalter einbauen<\/h2>\n\n\n\n<p>Wie hilft uns die vergr\u00f6\u00dferte Spielfigur denn jetzt weiter? Wir wollten doch unsere kleinere Spielfigur animieren.<\/p>\n\n\n\n<p>Wie du dich vielleicht erinnerst, brauchen wir die spr() Funktion, um unsere Figur auch nach rechts laufen zu lassen. Dieser kleine Versuch hat gezeigt, dass spr() auch noch andere Werte akzeptiert und wir somit beeinflussen k\u00f6nnen, wie gro\u00df unsere Spielfigur sein soll. Der Einfachheit halber werden wir aber wieder unsere kleinere Spielfigur verwenden.  <\/p>\n\n\n\n<p>Gehe wieder in TAB 0 und \u00e4ndere den Wert der Eigenschaft &#8222;sprite&#8220; unseres Spieler-Objekts von 5 auf 2. <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"2880\" height=\"1800\" src=\"https:\/\/sora.fshcloud.de\/wp-content\/uploads\/2024\/07\/Bildschirmfoto-2024-07-18-um-12.27.49.png\" alt=\"\" class=\"wp-image-291\"\/><\/figure>\n\n\n\n<p>F\u00fcge jetzt eine weitere Eigenschaft zu unserem Spieler-Objekt hinzu. Diese Eigenschaft nennen wir &#8222;schalter&#8220;. Was es damit auf sich hat, werde ich gleich erkl\u00e4ren. Gib dieser Eigenschaft den Wert <strong>false<\/strong> . <\/p>\n\n\n\n<p>Dein Code sollte jetzt so aussehen: <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"2880\" height=\"1800\" src=\"https:\/\/sora.fshcloud.de\/wp-content\/uploads\/2024\/07\/Bildschirmfoto-2024-07-20-um-15.35.17.png\" alt=\"\" class=\"wp-image-332\"\/><\/figure>\n\n\n\n<p>Was bedeutet hier <em><strong>false<\/strong><\/em>? Beim Programmieren ist es oft sehr n\u00fctzlich, so etwas wie einen Schalter zu haben, der dem Programm mitteilt, ob etwas &#8222;an&#8220; oder &#8222;aus&#8220; ist. &#8222;False&#8220; ist ein festgelegtes Wort beim Programmieren und teilt unserem Pico mit, dass etwas &#8222;aus&#8220; ist. Um den Schalter anzuschalten, m\u00fcssten wir &#8222;true&#8220; tippen. <\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Schritt 4: Lege den Schalter um und spiegel die Bewegungen deiner Figur<\/h2>\n\n\n\n<p>Unsere spr() Funktion kann nicht nur eine vergr\u00f6\u00dferte Figur zeichnen, sie kann Figuren auch &#8222;spiegeln&#8220; &#8211; also spiegelverkehrt aufzeichnen. Damit die Funktion das macht, braucht sie einen weiteren Wert, der ihr sagt, ob sie spiegeln soll oder nicht. Der Wert, der wir spr() geben werden, wird unser &#8222;AN-UND-AUS&#8220;-Schalter sein, den wir in unserem Spieler-Objekt erstellt haben. <\/p>\n\n\n\n<p>Wir gehen in den TAB 1 und  schreiben hinter der letzten 2 in unserer spr() Funktion <em><strong>spieler.schalter<\/strong><\/em>.<\/p>\n\n\n\n<p>Au\u00dferdem ersetzen wir die beiden ZWEIEN durch zwei EINSEN. Dadurch sagen wir der spr() Funktion, dass sie nur noch das Bild von einem Fenster f\u00fcr unsere Spielfigur nehmen soll.<\/p>\n\n\n\n<p>Dein Code sollte jetzt so aussehen: <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"2880\" height=\"1800\" src=\"https:\/\/sora.fshcloud.de\/wp-content\/uploads\/2024\/07\/Bildschirmfoto-2024-07-20-um-15.43.14.png\" alt=\"\" class=\"wp-image-334\"\/><\/figure>\n\n\n\n<p>Wie habe ich geschafft, dass <strong><em>spieler.y<\/em><\/strong> in der n\u00e4chsten Zeile ist? Ich habe einfach den rot-blinkenden Block auf den Buchstaben <strong><em>S<\/em><\/strong> von <strong><em>spieler.y<\/em><\/strong> gesetzt und dann ENTER gedr\u00fcckt. <\/p>\n\n\n\n<p>Unser Schalter ist momentan ausgestellt. Deshalb wird unsere Figur noch nicht gespiegelt, wenn wir command und r dr\u00fccken. Was passiert aber, wenn wir unseren Schalter anstellen? Probieren wir es aus! <\/p>\n\n\n\n<p>Gehe in den Tab 0, l\u00f6sche das Wort &#8222;false&#8220; und schreibe stattdessen &#8222;true&#8220;. Dr\u00fccke command und r<\/p>\n\n\n\n<p>Deine Figur wird nun spiegelverkehrt auf den Bildschirm gezeichnet. <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"2880\" height=\"1800\" src=\"https:\/\/sora.fshcloud.de\/wp-content\/uploads\/2024\/07\/Bildschirmfoto-2024-07-20-um-15.44.56.png\" alt=\"\" class=\"wp-image-335\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Schritt 5: Baue den Schalter in die Animationsfunktion ein<\/h2>\n\n\n\n<p>Cool oder? Wir sind aber noch nicht am Ziel. Wir werden unseren Schalter nutzen, um unsere Laufanimation zu spiegeln. Wie wir das erreichen, zeige ich dir jetzt.<\/p>\n\n\n\n<p>Gehe zun\u00e4chst wieder in den TAB 0 und &#8222;mach den Schalter wieder aus&#8220;. L\u00f6sche das Wort <strong>true<\/strong> und schreibe <strong>false<\/strong><\/p>\n\n\n\n<p>Gehe in den TAB 3. Schreibe in die Klammer hinter dem Funktionsnamen _animation das Wort &#8222;stellv&#8220;. <\/p>\n\n\n\n<p>Dein Code sollte so aussehen: <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"2880\" height=\"1800\" src=\"https:\/\/sora.fshcloud.de\/wp-content\/uploads\/2024\/07\/Bildschirmfoto-2024-07-20-um-15.51.00.png\" alt=\"\" class=\"wp-image-336\"\/><\/figure>\n\n\n\n<p>Was bedeutet &#8222;stellv&#8220; ? Und warum schreiben wir das Wort in die Klammer hinter unserem Funktionsnamen? Nun stellv ist eine von mir ausgedachte Abk\u00fcrzung und steht f\u00fcr &#8222;Stellvertreter&#8220;.<\/p>\n\n\n\n<p>Kannst du dich erinnern, dass wir Funktionen Werte \u00fcbermitteln k\u00f6nnen? Wenn wir in TAB 2 gehen und unsere Funktion _animation() aufrufen, k\u00f6nnen wir dort in der Klammer einen Wert \u00fcbermitteln, zum Beispiel &#8222;true&#8220; (also &#8222;an&#8220; oder &#8222;wahr&#8220;). In TAB 3 nimmt<strong><em> stellv<\/em><\/strong> immer den Wert an, den wir in TAB 2 \u00fcbermittelt haben (z.B. true). <strong><em>STELLV<\/em><\/strong> ist also unser STELLVERTRETER, der immer den Wert annimmt, den wir an anderer Stelle \u00fcbermittelt haben. <\/p>\n\n\n\n<p>Wir k\u00f6nnen jetzt folgende Anweisung schreiben: <\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>Anweisung in Menschensprache<\/td><td>Anweisung in LUA<\/td><\/tr><tr><td><em>Wenn der Stellvertreter mit Namen stellv den Wert &#8222;true&#8220; hat, dann soll er den Wert der Eigenschaft &#8222;Schalter&#8220; unseres Spieler-Objekts auf &#8222;true&#8220; setzen (Wir machen unseren Schalter an!)<br>Wenn stellv nicht den Wert &#8222;true&#8220; hat, soll der Schalter wieder auf &#8222;false&#8220; gesetzt werden<br>(Wir machen den Schalter aus!)<\/em><\/td><td>if stellv == true then<br>spieler.schalter = true <br>else <br>spieler.schalter = false<br>end<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Moment mal &#8211; was bedeutet die Zeile <strong>&#8222;else&#8220;<\/strong>? <\/p>\n\n\n\n<p>Wir sehen hier einen erweiterten if-Befehl. Normalerweise pr\u00fcft der if-Befehl, ob eine von uns festgelegte Bedingung eingetroffen ist (z.B., ob der Wert von <strong><em>stellv<\/em><\/strong> gleich &#8222;true&#8220; ist). Wenn die Bedingung eingetroffen ist, dann f\u00fchrt das Programm eine Anweisung aus (z.B.: \u00c4ndere den Wert von spieler.schalter auf &#8222;true&#8220;). Wir k\u00f6nnen aber auch noch eine Anweisung f\u00fcr den Fall machen, dass der Wert von <strong>stellv <\/strong>NICHT &#8222;TRUE&#8220; ist. In dem Fall schreiben wir einfach direkt hinter unserer ersten Anweisung <strong><em>else<\/em><\/strong> und machen eine Anweisung, die ausgef\u00fchrt werden soll, wenn<strong> stellv<\/strong> nicht &#8222;true&#8220; ist. In dem Fall wollen wir unseren Schalter wieder ausstellen (spieler.schalter = false). Wir beenden den Befehl wie gehabt mit &#8222;end&#8220;. <\/p>\n\n\n\n<p>Dein Code sollte jetzt so aussehen: <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"2880\" height=\"1800\" src=\"https:\/\/sora.fshcloud.de\/wp-content\/uploads\/2024\/07\/Bildschirmfoto-2024-07-20-um-16.10.54.png\" alt=\"\" class=\"wp-image-339\"\/><\/figure>\n\n\n\n<p>Zum Schluss gehen wir in TAB 2. <\/p>\n\n\n\n<p>In unserem ersten if-Befehl (if btn(0) &#8211; &#8222;Wenn die linke Pfeiltaste gedr\u00fcckt wird&#8220;) rufen wir unsere _animation()-Funktion auf, \u00fcbermitteln ihr im Moment aber noch kein Wert. Das m\u00fcssen wir nachholen! Wenn die linke Pfeiltaste gedr\u00fcckt wird, soll unsere Figur NICHT GESPIEGELT, unser SCHALTER ALSO AUS bleiben. Wir schreiben in die Klammer der _animation() -Funktion <em><strong>false<\/strong><\/em>.<\/p>\n\n\n\n<p>In unserem zweiten if-Befehl (if btn(1) &#8211; &#8222;Wenn die rechte Pfeiltaste gedr\u00fcckt wird&#8220;) m\u00fcssen wir unsere _animation()-Funktion auch noch aufrufen. Wir schreiben unter unserer Anweisung: <\/p>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-d926d79620cda6939efcd2b9c385652d\"><code>animation(true)<\/code><\/pre>\n\n\n\n<p>Wir \u00fcbermitteln unserer _animation()-Funktion dieses Mal den Wert <strong><em>true<\/em><\/strong>, weil wir unsere Figur spiegeln wollen, sobald wir die rechte Pfeiltaste dr\u00fccken. <\/p>\n\n\n\n<p>Dein Code sollte nun so aussehen: <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"2880\" height=\"1800\" src=\"https:\/\/sora.fshcloud.de\/wp-content\/uploads\/2024\/07\/Bildschirmfoto-2024-07-20-um-16.19.30.png\" alt=\"\" class=\"wp-image-340\"\/><\/figure>\n\n\n\n<p>Dr\u00fccke command und r, dr\u00fccke die rechte Pfeiltaste und voila, unsere Figur l\u00e4uft nun auch nach rechts! \ud83d\ude42<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Was du am Ende des Tutorials k\u00f6nnen solltest&#8211; Du verstehst, wie man Funktionen Werte \u00fcbermittelt&#8211; Du verstehst, was der &#8222;Stellvertreter&#8220; in einer Funktion macht&#8211; Du spiegelst die Bewegung deiner Spielfigur,&hellip;<\/p>\n","protected":false},"author":1,"featured_media":335,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14,13],"tags":[],"class_list":["post-321","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-pico-8","category-tutorial"],"_links":{"self":[{"href":"https:\/\/sora.fshcloud.de\/index.php?rest_route=\/wp\/v2\/posts\/321","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sora.fshcloud.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sora.fshcloud.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sora.fshcloud.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sora.fshcloud.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=321"}],"version-history":[{"count":5,"href":"https:\/\/sora.fshcloud.de\/index.php?rest_route=\/wp\/v2\/posts\/321\/revisions"}],"predecessor-version":[{"id":345,"href":"https:\/\/sora.fshcloud.de\/index.php?rest_route=\/wp\/v2\/posts\/321\/revisions\/345"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sora.fshcloud.de\/index.php?rest_route=\/wp\/v2\/media\/335"}],"wp:attachment":[{"href":"https:\/\/sora.fshcloud.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=321"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sora.fshcloud.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=321"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sora.fshcloud.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=321"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}