Hi, habe mal ne Frage.
Und zwar will ich in meinem Spiel auf der Weltkarte ne Minikarte einbauen.
So mein Problem ist es, die ariablen so einzustellen das sich die der Punkt auf der Minikarte so bewegt wie der Held.
Guck mal HIER auf der 6ten Seite. Da findest du einen Skript wie man genau das macht. Wenn du das Prinzip aber nicht verstehst kannst ja noch mal fragen
mfg
Phönix Tear
Edit:
Hab gerade noch ein bisschen mehr Zeit also erläutere ich das noch mal kurz:
Der wichtigste Punkt beim umsetzten einer Weltkarte mit Helden-Cursor ist die Relation zwischen realer Mapgröße und Größe der Minikarte. Das einfachste Beispiel ist dabei eine Minikarte auf der ein Pixel einem 16x16 Feld im Maker entspricht. Konkret bedeutet das für den Cursor (ich nenn das jetzt einfach mal so ), dass er bei jedem Feld das der Held sich bewegt um einen Pixel in diese Richtung wandern muss. Wie setzt man das am besten um?
Als erstes musst du dir die Heldenkoordinaten hohlen und in zwei Varaiblen speichern:
Nun haben wir im Endeffekt schon den richtigen Wert, damit du das ganze aber nicht falsch verstehst gehe ich jetzt mal von einer Minikarte aus auf der ein Feld im maker 2 Pixel auf der Minikarte sind. (Ist bei dir ein Pixel ein Feld kannst du diesen Abschnitt überspringen.) In diesem Fall musst du nämlich noch ein klein bisschen rechnen.
Die Rechnung ist sehr einfach zu verstehen. Steht der Held z.B. auf Feld [10|8], müsste das auf Minikarte der Pixel [20|16] sein, da ja ein Feld im Maker 2 Pixel auf der Minikarte sind. Die Rechnung lautet also logischerweise:
Das gleiche Prinzip gilt bei allen anderen möglichen Verhältnissen zwischen Minikarte und Mapgröße (auch wenn die Map mehr Felder hat als die Karte Pixel (also der umgekehrte Fall)).
Nun müssen wir die Minikarte nur noch anzeigen. Da im Maker das Koordinatensystem oben links beginnt musst du jetzt noch ein bisschen weiterrechnen, je nachdem wo deine Karte liegt. Der einfachste Fall ist, dass du sie in die obere linke Ecke packst. In diesem Fall kannst du gleich machen:
Schon fertig. Stylischer wird das ganze natürlich wenn du noch einen kleinen Blink- oder Transparenzeffekt einbaust, aber dazu am Ende. Willst du deine Karte nun unten rechts haben (der Bildschirm ist 320x240 Pixel groß) musst du, wie schon gesagt noch weiterrechnen. Das sollte aber auch kein Problem sein. Du addierst jetzt einfach auf die "Held X"-Variable den Wert an Pixel der zwischen dem linken Bildschirmrand und dem linken Rand der Minikarte liegt, und auf die "Held Y"-Variable den Wert an Pixel der zwischen dem oberen Bildschirmrand und dem oberen Rand der Minikarte liegt. In unserem Beispiel ist der Abstand leicht zu errechnen. Die Minikarte hat ist hier nebenbei gesagt ein bisschen überdimensioniert, aber auch egal.
Größe des Bildschirms: 320x240
Größe der Minikarte: 200x160
Der Maker legt die Pictures immer mit der Mitte auf die eingegebenen Koordinaten, wir müssen ihm also Koordinaten angeben die die Hälfte der X-Größe der Minikarte vom rechten Bildschirmrand und die Hälfte der Y-Größe vom unteren Bildschirmrand wegliegen.
Daraus folgt die Rechnung:
Legst du das Bild also auf die Koordinaten [220|160] sollte es genau in der unteren rechten Ecke liegen (die Rede ist hier natürlich von deinem Weltkartenbild, nicht vom Heldencursor ^^).
Der Heldencursor muss entsprechend verschoben werden. Sein Ausgangspunkt sollte nach wie vor die obere linke Ecke des Weltkartenpics sein, also müssen wir seine Werte lediglich so ändern das das wieder übereinstimmt. Die obere linke Ecke liegt jetzt jedoch nicht mehr auf [0|0], sondern auf [120|80] (zieh von der Bildschirmgröße die gesamte Größe der Minikarte ab). Also müssen wir nur diesen Wert auf die "Held X"- und die "Held Y"-Variable addieren.
Jetzt nur noch erneut die Anzeige:
Fertig ^^
Ich hoffe das das so einigermaßen verständlich war und sich auch mit dem Skript ergänzt. Wenn ich mich recht entsinne waren da nämlich keine Erklärungen drin...
P.S:
Dieser Code wurde nicht getestet, sollten Fehler auftreten sag das bitte ^^
P.S2:
Hab jetzt den Blinkeffekt weggelassen, sollte aber an sich ja auch kein Problem sein
Geändert von Phönix Tear (31.07.2006 um 14:07 Uhr)