koordinatenverweigerung

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

  • koordinatenverweigerung

    jetzt hab ich schon stunden damit zugebracht, meinen code nach fehlern zu durchforsten und bin immer noch nicht fündig geworden.

    ich hab mal was zelda-artiges versucht zu basteln. und dabei habe ich mehrere räume (ein raum passt ins view) in einen grossen "gamemakerroom" gestellt.
    wenn nun die spielfigur stirbt, soll sie an den ort springen, wo sie den raum betreten hat (nicht den gamemakerroom). was aber nicht geht. die spielfigur führt seine sterbe- und wiederbelebungsaktion komplett durch, springt jedoch nicht an den gewünschten ort.
    und so hab ichs gelöst: sobald die spielfigur den rand des raumes betritt, wird zum nächsten raum gewechselt und zur selben zeit ein markierobjekt an jener stelle platziert. wenn nun die spielfigur die sterbeaktion ausführt, sollte sie ihre x- und y-koordinaten dem markierobjekt anpassen:

    GML-Quellcode

    1. spielfigur.x = markierobj.x;
    2. spielfigur.y = makrierobj.y;


    obwohl die markierung den gewünschten ort sichtbar erreicht, bleibt die spielfigur an ihrem ort. WTF? liegt da ein bug des gamemakers vor, oder bin ich wirklich so doof und bemerke einen banalen fehler nicht?

    ich weiss, das ist jetzt schwer vorstellbar. aber ich handle aus puurer verzweiflung.
    PUTREFACTION ////
    ◇ ALIEN BASTARDS ◇ SLY PITCH ◇ SHOVE MASTER ◇

  • hmm
    ist es nicht so das wenn man den raum betretet alle objecte wieder gelöscht werden außer die, die am anfang festgelegt wurden

    entweder das makier object ist parent oder so oder du solltest globale variablen benutzen (ich beforzuge globale variablen weil ich weiß das sie 100 pro klappen)

    das wäre glaube ich auch so wie mit schüssen
    wenn du z.b. eine kugel schießt und dann den raum wechselst sind alle schüsse weg und bleiben nicht an ihrer alten position

    versuch es mal mit

    global.x_position=x
    global.y_position=y
    wenn man das level verlässt

    und beim betreten
    x=global.x_position
    y=global.y_position

    ich hoffe das ich dein problem richtig verstanden habe
    Die Schönheit liegt im Auge des Betrachters :D

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

  • bevor ich ungenau ratschläge abgebe möchte ich ersteinmal wissen ob ich die situation erfasst habe.

    du hast einen room, der warscheinlich ziemlich groß ist. diesen room hast du so aufgeteilt das mehrere "quadranten" entstehen, die der viewgröße entsprechen. und dan hast du einen code der den view immer zu dem quadranten ausrichtet in dem sich gerade die spielfigur befindet.
    nun möchtest du das, wen du den view verlässt um einen neuen zu betreten, die (neuen) koordinaten in einem objekt gespeichert werden, und wen das mänchen stirbt, soll es an diesen koordinaten respawnt werden.
    soweit richtig?

    jetzt habe ich nur das mir dem gamemakerroom noch nicht verstanden.

    aber falls meine vermutung stimmt, dan liegt es daran das du warscheinlich alle objekte auserhalb des views deaktivierst, um speicher und rechenleistung zu sparen. warscheinlich ist das objekt was die koordinaten speichert ebenfals deaktiviert.
    :) Nobody is perfect (-:

    "Dummköpfe sind Denkerköpfen weit überlegen. Zahlenmäßig." Ernst Ferstl
  • nobody du hast es komplett erfasst. genau so ist es aufgebaut. und mit dem gamemakerroom meine ich einfach einen normalen room, den man mit dem gamemaker estellt, nichts weiter.
    leider ist deine vermutung jedoch falsch. ich habe zwar einige aktionen, anderer objekte deaktiviert, sobald sie aus dem view sind, jedoch nicht die aktionen, des markierobjekts. bevor ich das markierobjekt eingebaut habe, versuchte ich es bloss mit variablenspeicherung ohne externes markierobjekt, was aber eben auch nichts brachte.
    die situation ist irgendwie abstrus.
    PUTREFACTION ////
    ◇ ALIEN BASTARDS ◇ SLY PITCH ◇ SHOVE MASTER ◇

  • Ich denke, dann kann man ohne die gm6 gesehen zu haben, auch nicht wirklich helfen. Irgendwo muss ein kleiner Fehler sitzen, den du einfach immer übersiehst. Vielleicht ist die Bewegung der Figur so aufgebaut, dass eine Versetzung ignoriert wird. Das war bei meinem Spiel. Ich musste erst eine Variablenabfrage um mein Bewegungsskript legen, damit ich das abschalten konnte, wenn ich dem Spieler die Kontrolle entreißen will und die Figur versetzen will.
    Einige meiner Spiele:
  • sei's drum, hier die gm6-datei. aber achtung, ist nix kommentiert. :D
    wetten, ich steh danach wieder als trottel da, weill der lösung so trivial war. aber wenigstens hab ich sie dann.

    EDIT: dateianhang entfernt. [ich mags nicht, wenn jeder sieht, wie ich meine games bastle. ist irgendwie persönlich.]
    PUTREFACTION ////
    ◇ ALIEN BASTARDS ◇ SLY PITCH ◇ SHOVE MASTER ◇

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

  • *meld*
    gefunden, war eigentlich trivial. im vollgenden code:

    GML-Quellcode

    1. if (obj_velda.x < x) {
    2. view_mover.x += 160;
    3. sound_play(snd_view);
    4. obj_velda.x += 12;
    5. obj_velda.walk_ready = 0;
    6. obj_velda.alarm[0]=20;
    7. obj_velda.image_speed=0;
    8. obj_roomstart.x = x+8; // hier die +8
    9. obj_roomstart.y = y;
    10. }
    11. else {
    12. view_mover.x -= 160;
    13. sound_play(snd_view);
    14. obj_velda.x -= 12;
    15. obj_velda.walk_ready = 0;
    16. obj_velda.alarm[0]=20;
    17. obj_velda.image_speed=0;
    18. obj_roomstart.x = x-8; // und hier die -8
    19. obj_roomstart.y = y;
    20. }
    Alles anzeigen
    hast du die koordinatenverschiebung nicht mit einberechnet, das männchen würde also genau auf dem rand des views respawnt, und das geht nicht. mit obentehendem code geht es, habs ausprobiert.
    das gleiche musst du nun mit den y machen.

    ps: nettes spiel
    :) Nobody is perfect (-:

    "Dummköpfe sind Denkerköpfen weit überlegen. Zahlenmäßig." Ernst Ferstl