Ergebnis 1 bis 3 von 3

Thema: Minikarte

  1. #1

    Minikarte

    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.

  2. #2
    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:
    Code:
    <>Change Variable "Held X", set [(Hero) X-Coordinate]
    <>Change Variable "Held Y", set [(Hero) Y-Coordinate]
    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:
    Code:
    <>Change Variable "Held X" * 2
    <>Change Variable "Held Y" * 2
    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:
    Code:
    <>Show Picture '1' "Weltkarte" -> [z.B. 100|80] (deine Weltkarte ist jetzt 200x160 groß, die Minikarte das gleiche in Pixeln)
    <>Show Picture '2' "Heldencursor" -> ["Held X"|"Held Y"]
    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:
    Code:
    320 - 100 = 220
    240 - 80 = 160
    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.
    Code:
    <>Change Variable "Held X" + 120
    <>Change Variable "Held Y" + 80
    Jetzt nur noch erneut die Anzeige:
    Code:
    <>Show Picture '1' "Weltkarte" -> [220|160]
    <>Show Picture '2' "Heldencursor" -> ["Held X"|"Held Y"]
    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)

  3. #3
    Hi
    also komme mit deiner Beschreibung nie ganz zurecht..Kann man das a bissl leichter erklären so wie Noob mäßig.

    Hauptproblem ist:

    Die Bewegung und so klappen, nur die Held/Cursor Bewegung läuft nie so recht...

    Danke für Hilfe

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •