Hallo zusammen,
kann mir jemand sagen, ob es die Möglichkeit gibt, Sprites in einem anderen Winkel in ein Spiel einzubauen, ohne das im neuen Winkel komplett neu zeichnen zu müssen?
Hallo zusammen,
kann mir jemand sagen, ob es die Möglichkeit gibt, Sprites in einem anderen Winkel in ein Spiel einzubauen, ohne das im neuen Winkel komplett neu zeichnen zu müssen?
Sprichst du jetzt davon, ob es eine Art Trick gibt, einem Charakter eine diagonale Blickrichtung zu geben?
Oder suchst du nach einem Plugin, um diagonale Blickrichtungen einzubauen?
Ich glaube, ich muss das ein wenig näher erklären.
Ich weiß, dass es ein Plugin gibt, mit dem diagonale Bewegung eingebracht werden kann, darum geht es in meiner Frage NICHT.
In meinem 2. Projekt will ich den Start eines Shuttles zeigen, aber nicht senkrecht wie die bekannten Shuttles, sondern ganz normal horizontal auf einer Startbahn und beim Abheben das Shuttle schrittweise auf einen Winkel von ca. 30° drehen, um den Steigflug zu zeigen, später dreht es dann wieder in den Horizontalflug. Btw. dieses Sheet für das Shuttle ist eh schon riesig und wird noch größer, weil ich vergessen habe, die Flammen beim Start einzubringen.
Es ist ja möglich, für jeden Winkel, der gezeigt wird, einen eigenen Charakter-Satz zu erstellen, allerdings würde ich mir das gerne sparen, wenn es dafür eine andere Möglichkeit gibt.
Ich melde mich einfach mal zu Wort. Am einfachsten wäre es wahrscheinlich das Flugzeug als Bild anzeigen zu lassen.
Da aber der RPG Maker keine wirkliche Funktion hat ein Bild zu drehen, empfehle ich dir, es mit PIXI Bildobjekten zu machen.
(Ich habe als Dateianhang ein kleines Demo-Projekt angefertigt).
Bei Fragen einfach melden, das ganze System ist in Englisch kommentiert.
In der Demo wird die Grafik um 30° gedreht und dann wieder zurück auf 0°
Man kann den Winkel von einem Picture per Scriptcall ändern.
Beispiel:
EDIT: Anscheinend kann man hier keine GIFs einbinden. Hab es wieder entfernt. Das GIF hat einfach ein Picture gezeigt, wie es in einem schiefen Winkel über den GameScreen fliegt.
Danke Grandro , die Drehung sieht genau so aus, wie ich mir das vorgestellt hatte.
Eine Frage hab ich allerdings noch dazu, wenn ich das richtig verstehe, ist der Ankerpunkt auf einer Linie zwischen der oberen linken und der unteren rechten Ecke. Ist da jeder beliebige Wert (z. B. 0.73, weil da gerade das hintere Fahrwerk ist) oder nur explizite Werte zulässig.
Danke waynee95 für das Script, allerdings muss ich den erstmal reinbringen, weil mir die genaue Funktionsweise der Bewegung noch nicht so ganz klar ist, aber Bewegung mit Drehung ist ja genau das, was ich suche.
Wenn ich das richtig sehe, ist das aber nur mit Bildern möglich, also nicht z. B. mit einem Charakter.
Commander_Bert Ja, da ist genau wie du dir das vorstellst und es ist jeder Wert von 0 - 1 zulässig.
Bei waynee's Lösung müsstest du halt auch noch das Bild in einer Schleife drehen, so wie ich es in der Demo in einer Schleife drehen lasse. Also z.B.:
Ist eigentlich genau dasselbe wie bei mir
super, danke,
das mit der Schleife ist schon klar, das muss ich dann abstimmen mit der seitlichen Bewegung, wobei ich halt erstmal genau verstehen muss, wie der von waynee gezeigte Befehl funktioniert, da ich den rein vom Ansehen her nicht wirklich mit dem anderen Befehl zusammen bekomme, da ich selber noch nie mit dem Move gearbeitet habe.
Also der Event funktioniert einwandfrei, zumindest wenn man daran denkt, ihn auf parallel zu schalten . Allerdings muss ich den Event noch ein wenig umschreiben, da die Koordinaten relativ zum Screen sind und ich brauche sie relativ zum Event, aber das ist ja kein Problem. Und dann denke ich ist die Startphase fertig, super.
Also die Drehung funktioniert einwandfrei, allerdings gestaltet sich das umstricken auf Map-Koordinaten ein wenig schwieriger, da ich versucht habe, den ImageManager statt des ScreenManagers zu verwenden, der mir das Bild aber einfach nur oben links in Ecke packt und die übergebenen Koordinaten komplett ignoriert, Ende.
Da ich das Bild an einen Event heften will, wie kann ich das bewerkstelligen, ohne den SceneManager, denn ich benötige die Position relativ zur Karte und nicht relativ zum Screen, also gemeint, das Bild soll auf dem Event sitzen und nicht irgendwo auf dem Screen und auch sich auch nicht mit dem sich bewegenden Spieler mit bewegen.
Hab mir die rpg_managers.js angesehen, bin aber auf keine Idee gekommen, wie ich das reinbekomme.
Hat da irgendjemand eine Idee?
Windrad als PIXI-Grafik rotieren lassen | Grandrorials
Du kannst ja mal hier reingucken, da existierte dasselbe Problem.
Du musst aber dennoch den ScreenManager benutzen
Das ganze ist ein bisschen fummelig.
Zuerst musst du folgende Funktionen durch ein Plugin oder Scriptcall hinzufügen.
Es gibt schon so ähnliche Funktionen, aber diese "snappen" die Koordinate immer zum Grid, was dafür sorgen würde, dass die Sprite ein bisschen springt. Deshalb müssen wir das runden entfernen.
Dann brauchst du 2 Event-Seiten in deinem Event.
Seite 1:
Sprite hinzufügen und in eine Variable speichern, weil wir die Sprite noch auf der nächsten Eventseite brauchen.
Seite 2:
Diese Eventseite muss parallel laufen, damit die Position immer richtig geupdatet wird.
Das Beispiel oben, würde die Sprite an Event 2 binden.
Danke waynee95 , der Befehl canvasToMapXX war im Prinzip genau das, was ich gesucht habe. Leider schlägt das Intellisense im Visual Studio in Javascript immer nur Sachen vor, die schon mal irgendwo in dem Skript verwendet wurden, darum hab ich ihn nicht finden können.
Aber wenn ich das richtig verstehe, muss ich noch eine Variable im Spiel reservieren, die dann den Sprite speichert
$gameVariables.setValue(1, sprite)
Zum JavaScript, da das ja bei einem bewegten Event verwendet werden soll, wo die Koordinaten immer wieder angepasst werden müssen, kann ich das ja in einen parallelen Event packen.
Kann bisher noch nicht sagen, ob es funktioniert, da im Spiel noch nichts angezeigt wird, ich weiß nur nicht, ob es daran liegt, dass er den Event nicht startet oder irgendwas noch fehlt.
Dennoch erst einmal Vielen Dank
canvasToMapXX ist auch eine von mir geschriebene Funktion, die kann VS ja gar nicht finden.
Das mit der Variable musst du machen, weil die Initialisierung und das updaten der Position in verschiedenen Scriptcalls stattfinden. Lokale Variablen übertragen sich nicht in andere Scriptcalls.
Der Position update Code muss so oder so in ein paralleles Event. Den Code, den ich gepostet habe funktioniert aber nicht 100%, wenn das Event sich bewegt. Da passiert es, dass das Image springt. Da müsste man das irgendwie noch anpassen.
ok, dann ist klar, dass VS die nicht finden kann.
Das mit den Variablen ist mir klar, ist ja ähnlich wie mit den Selbstschaltern, geschlossen, vergessen.
Das mit dem Anpassen wäre, denke ich mal, das geringere Problem, da würde mir bestimmt etwas einfallen. Und wenn man die Koordinaten einfach künstlich ein bisschen schiebt.
ich steh im Moment vor einem ganz anderen Problem, ich krieg im Moment überhaupt nix mehr auf die Reihe, hab eventuell zu lange an dem Ganzen gesessen, werde am besten erstmal eine Pause einlagen
waynee95 : jetzt hab ich alles richtig drin, aber jetzt bekomme ich die Meldung "Type Error - Undefined is not a Function" beim Start. Ist irgendein PlugIn erforderlich, dass eventuell für Dich selbstverständlich ist, damit der Code funktioniert, wenn ja, welches?
Ich frage das, weil Du geschrieben hattest:
canvasToMapXX ist auch eine von mir geschriebene Funktion, die kann VS ja gar nicht finden.
Wie gesagt, du musst
in eine .js Datei packen und als Plugin importieren.
ok, Du hattest geschrieben, als PlugIn ODER Scriptcall.
Zuerst musst du folgende Funktionen durch ein Plugin oder Scriptcall hinzufügen.
Darum hab ich das mit in den Event rein getan, weil ich mir eben das schreiben eines extra PlugIn sparen wollte.
Witzigerweise, bei Teddy funktioniert es, er benutzt exakt denselben Events, bei mir nicht. Das einzige, das bei mir unterschiedlich ist, ist das Bild.
So, nun ein update:
Es funktioniert. Der Fehler waren die 2 Seiten im Event, da kennt er halt nicht nur den Sprite nicht mehr, sondern die Funktion auch nicht mehr, hab es jetzt so eingesetzt:
und damit wird es wenigstens erstmal an der Stelle angezeigt, an der es sein soll.
Danke nochmal für die Hilfe
Ja, als Scriptcall kann man die Funktion auch einfügen. Aber irgendwie fand ich die Idee dann doch irgendwie nicht so gut, Plugin wäre eig besser auf lange Sicht.