global.meter_x = player.x - aber y wird minus gezählt

  • global.meter_x = player.x - aber y wird minus gezählt

    Hallo,

    ich wollte in mein Spiel einen Metermesser einbauen. Der klappt soweit auch ganz gut, bis auf die minus-koordinaten.

    wewnn ich die pluskoordinaten steuere (also rechts und runter) dann zählt er auch hoch.

    Ich weiß das mein skript minus zählt, weil die beiden anderen richtungen ja auch minus zählen

    habe geschrieben

    global.meter = spieler.x + spieler.y;

    irgendwie wollte soll das aber so sein, damit es geht:

    global.spieler_y = spieler.y *(-1)
    global.meter = spieler.x + global.spieler_y

    Weil bekanntlich minus mal minus gibt plus....

    habe auch schon andere varianten probiert!

    aber es geht nicht!
    Was man mit Händen baut, kann auch mit Händen zerstört werden...
  • ich verstehe nicht so ganz was der "meterzähler" denn zählen soll. die bisher zurückgelegte strecke oder die entfernung zum nullpunkt?
    wie dem auch sei, einen wert negativierten kannst du mit einem einfachen minus:
    global.meter = spieler.x + (-global.spieler_y)
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x
  • Original von xiebel
    abs();
    dürfte des sein was du suchst es gibt die zahl ohne vorzeichen wieder


    Ja sowas suche ich. Aber es klappt mit absolut () nicht..

    habe

    {
    global.spielery = abs(player.y) ;
    global.spielerx = player.x;
    global.meter = global.spielerx + global.spielery;
    }

    geht nicht!

    WIN:

    Leider geht das auch nicht.

    Er zählt jetzt die Taste Up zwar + aber nun die Taste Down und Left
    Minus

    Ich habe vielleicht das Problem gefunden:

    Mein Speedeinstellung ist folgende (im Player-Objekt)

    Taste Numpad +:

    global.speedx +=1;
    global.speedy +=-1;

    Taste Numpad -:

    dann halt umgedreht.

    in den steuerungstasten left, right usw... habe ich dann
    obige variablen eingesetzt.

    z. B. Leff-Event:

    if a collision usw...

    x=global.speedy
    y=0

    usw...
    Was man mit Händen baut, kann auch mit Händen zerstört werden...

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von magic_hero ()

  • Das er es nach links und oben eigentlich abzieht ist normal, da nach dahin die x/y Werte kleiner werden.
    Negativ können die erst werden, wenn du links bzw. oberhalb des Raumes bist, d.h. nicht mehr im Raum selber.
    Du müsstest zum sowas zählen in jedem Step ne Variablen machen, wo x und y gespeichert werden. Beim nächsten Step müssen die aktuellen x und y mit den alten verglichen werden und die Entfernung muss berechnet werden, die du dann deinen Metern addieren kannst.
    "Die Erde ist ein Irrenhaus. Dabei könnte das bis heute erreichte Wissen der Menschheit aus ihr ein Paradies machen. Dafür müsste die weltweite Gesellschaft allerdings zur Vernunft kommen."
    - Joseph Weizenbaum
  • Original von Windapple
    Das er es nach links und oben eigentlich abzieht ist normal, da nach dahin die x/y Werte kleiner werden.
    Negativ können die erst werden, wenn du links bzw. oberhalb des Raumes bist, d.h. nicht mehr im Raum selber.
    Du müsstest zum sowas zählen in jedem Step ne Variablen machen, wo x und y gespeichert werden. Beim nächsten Step müssen die aktuellen x und y mit den alten verglichen werden und die Entfernung muss berechnet werden, die du dann deinen Metern addieren kannst.


    Leuchtet mir ein! Aber ein kleiner Code hätte hier wahre Wunder bewirkt...

    Status: Aktenzeichen X/Y ungelöst!
    Was man mit Händen baut, kann auch mit Händen zerstört werden...
  • Da momentan meine normale Kiste nicht läuft schreib ich einfach mal Code aus dem Kopf, in der Hoffnung das die Funktionen korrekt benannt sind.

    Create Event:

    GML-Quellcode

    1. old_x=x;
    2. old_y=y;


    Step Event:

    GML-Quellcode

    1. global.meter+=point_distance(x,y,old_x,old_y);
    2. old_x=x;
    3. old_y=y
    "Die Erde ist ein Irrenhaus. Dabei könnte das bis heute erreichte Wissen der Menschheit aus ihr ein Paradies machen. Dafür müsste die weltweite Gesellschaft allerdings zur Vernunft kommen."
    - Joseph Weizenbaum