Spieler soll mittig laufen

  • GM 8

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

  • Spieler soll mittig laufen

    Guten Abend,

    Ich stehe mit einem Kollegen vor einem großen Problem, was wir alleine nicht zu lösen wissen ... oder es ist
    erst garnicht möglich.. das wär natürlich sehr schlecht.

    Hier ein Bild wie das Spiel gerade ausschaut:


    Der Player kann sich in jede Richtung bewegen.
    Wenn wir kein Menü rechts und den Chat Bereich unten bräuchten, wär das ja kein Problem,
    aber so bekommen wir es nicht hin den Player in der mitte, also in dem Spiel bereich (Menü und Chat gehören nicht dazu)
    laufen zu lassen.

    Nochmal kürzer: Die map bewegt sich auf dem Bildschirm und der Player bleibt in der mitte.

    Bis jetzt haben wir versucht:

    gegeben:
    w_view = 800
    h_view = 600
    w_menü = 150 //breite des Menüs
    h_menü = 600 //höhe des Menüs
    w_chat = 650 //Breite des Chats
    h_chat = 100 //höhe des Chats

    Im Event "linke Richtungstaste" (links laufen)

    GML-Quellcode

    1. view_hborder[0]=(800 - 150)/2;


    Im Event "obere Richtungstaste" (hoch laufen)

    GML-Quellcode

    1. view_vborder[0]=(600 - 100)/2;


    Im Event "rechte Richtungstaste" (rechts laufen)

    GML-Quellcode

    1. view_hborder[0]=(800 - 150)/2 + 150;


    Im Event "untere Richtungstaste" (runter laufen)

    GML-Quellcode

    1. view_vborder[0]=(600 - 100)/2 + 100;


    In dem Bild was ich oben eingefügt habe funktioniert es von oben und links.
    Unten und Rechts bleibt der Player erst auf der Stelle sobald er dort steht wie auf dem Bild.
    (Hatte schon seinen Grund, dass ich das Bild so gespeichert hab :P)

    Ich habe eine Vermutung wieso es nicht funktioniert ...
    Als Beispiel habe ich hborder so verstanden, dass das objekt je nach Wert, bis zu der Stelle normal läuft
    bis der Wert erreicht wird (linker oder rechter rand +/- dem Wert) und die map anschließend in die entgegen-
    gesetzte Richtung verläuft. Schwer zu beschreiben ^^

    Jedenfalls habe ich den Wert so hoch ausrechnen lassen, dass es sich nach rechts und unten überschnitten hat und deshalb ein
    Probem darstellt.

    Kurz [rechts]:
    view_hborder[0]=(800 - 150)/2 + 150; // = 475

    475 ist größer als die Hälfte von 800 ... könnte das das Problem sein?
    Oder weiß jemand eine andere Lösung oder kann irgendwie helfen?
    Ich kann verstehen, wenn ihr meint, ich hab einiges unverständlich geschrieben ... auf Anfrage kann ichs nochmal versuchen es anders
    zu erklären :)

    Danke schonmal für Antworten [=


    mfg
  • Versuch's doch mit mehreren Views.

    EDIT: Vergiss das :)
    Ich schlage vor du machst es so:

    GML-Quellcode

    1. // End Step Event
    2. // Das [0] ist optional.
    3. view_xview = x - 320;
    4. view_yview = y - 240;
    320 und 240 ist nur ein Beispiel. Du solltest das durch die Stelle ersetzen, wo dein Spieler später positioniert sein soll.
  • Das würde nicht viel ändern.

    Hab jetzt extra ne Zeichnung angefertigt :DFalls die doch noch helfen sollte:


    @up
    Was genau bewirkt das? Setzt es den Spieler einfach woandershin oder wie^^
    Bin noch dabei zu versuchen das zu verstehen :p
  • genau das hat copyboy dir doch schon geschrieben ...

    x position des views = x position des player objectes - abstand zum rand auf der x achse
    y position des views = y position des player objectes - abstand zum rand auf der y achse

    und wie TrunX schon erwähnte das ganze im step event des players ...
    zum besseren verständniss ^^

    ---- wer fehler findet darf sie behalten ---
  • Ich blick zwar nicht mehr ganz durch weil ich schon alles mögliche ausprobiert habe ... aber
    es funktioniert !!! Danke seeehr :)

    Sry, dass ich so doof noch nachgefragt habe, aber war schon sehr durcheinander, nachdem ich mich den ganzen
    Tag damit beschäftigt habe^^


    mfg