Anzeige für Ziel entfernung

  • GM 8

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Anzeige für Ziel entfernung

    Hallo,

    Ich möchte gerne eine Anzeige erstellen die angibt wie weit der Spieler vom Ziel entfernt ist.

    beispiel:

    oben links am Bildschirm steht "noch 20meter bis zum Ziel"

    Wie muss ich das machen?Freue mich auf antworten! :)
  • Ich würde das ganze so machen:

    GML-Quellcode

    1. distance = distance_to_point(oZiel.x, oZiel.y);
    2. meter = distance / 10; // Hier gibst du an wie lange ein Meter in Pixeln sein soll
    3. meter = floor(meter); //Die Varibale "meter" zu einem integer machen


    Und dann einfach:

    GML-Quellcode

    1. draw_text(16, 16, "Das Ziel ist " + string(meter) + "Meter entfernt");


    -Sorm

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Sorm ()

  • Okay,habe das ins create event reingepackt:

    distance = distance_to_point(oZiel.x, oZiel.y);

    meter = distance / 10; // Hier gibst du an wie lange ein Meter in Pixeln sein soll
    meter = floor(meter); //Die Varibale "meter" zu einem integer machen

    und diesen code ins draw event:

    draw_text(16, 16, "Das Ziel ist " + string(meter) + "Meter entfernt");



    Mein Spieler wird wegen dem Draw event nicht angezeigt,wie kann ich das Problem lösen? :D
  • Mach das alles nicht ins Create sondern ins Step event!
    Du willst die Entfernung ja jeden Step neu berechnen und nicht nur bei der Erstellung des Spielerobjekts :D

    Zum Spieler ins Draw event einfach:

    GML-Quellcode

    1. draw_self();


    So zeichnest du auch das dem Objekt zugewiesene Sprite wieder.
  • Habs nun hinbekommen,vielen Dank :)

    Ich wollte das selbe auch in Game Maker Studio verwenden aber
    es kommt die fehlermeldung "Cannot set a constant to a value"
    Wie kann ich das Problem lösen?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von subteam ()

  • Ja,hatte tatsächlich ein Objekt der den selben Namen der Variable hatte.Hab das nun korrigiert,aber jetzt kommt eine andere Meldung:

    Execution Error - Variable Get 50.y(1, 0)
    at gml_Object_player_Create_0 (line 1) - distance = distance_to_point(Ziel.x, Ziel.y);

    Was muss ich jetzt machen?
  • distance_to_point(x, y) gibt dir die Entfernung zu einem bestimmten Punkt in deinem Koordinatensystem an.
    Das heist das du bei x und y auch den Punkt angeben sollst, welchen du abfragen willst.

    In meinem Beispiel ist der Punkt die x und y Koordinate vom Objekt oZiel.
    Du hast in deinem Spiel aber einen ganz anderen Punkt den du abfragen willst und das Objekt oZiel existiert in deinem Projekt nicht.
    Woher will der Game Maker also wissen was du meinst?

    Wenn du jetzt also als Ziel ein Objekt hast, dann schreib einfach

    GML-Quellcode

    1. distance_to_point(OBJEKTZIEL.x, OBJEKTZIEL.y) // OBJEKTZIEL zu dem Namen deines Zielobjekts ändern


    Hoffe du hast verstanden was ich meine. ;)

    -Sorm
  • Perfekt,vielen Dank!

    Es hat endlich geklappt.Eine kleine Frage habe ich aber noch.Wie kann ich die Anzeige immer mitverfolgen lassen.
    Der Spieler hat ja eine view weil das level so groß.Wenn der Spieler läuft kommt die Anzeige sozusagen nicht mit.
  • Um den Text in den Vordergrund zu stellen, musst du die Depth vom Objekt verändern.
    Die Depth kannst du bei den Objekteigenschaften einstellen oder per Code ändern.

    Wenn du dein Objekt eine Ebene nach vorne setzen willst, musst du den Depthwert verringern.
    Wenn du dein Objekt eine Ebene nach hinten setzen willst, musst du den Depthwert vergrößern.

    Da du dein Objekt nach vorne holen möchtest musst du den Depthwert also kleiner machen als den der anderen Objekte.
    Standardmäßig ist der Depthwert auf 0.
    Setze den deiner Anzeige also auf -1.