folgender View höher einstellen

  • GM 8

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

  • folgender View höher einstellen

    Ich kapiers einfach nicht und Googeln hat mir auch nicht weitergeholfen
    Ich hab in dem Raum einen folgenden View
    Der Spieler wird immer in der mitte angezeigt aber wie muss ich es einstellen das der Spieler ungefähr 200Pixel
    weiter unten angezeigt wird.
    Bilder
    • view.PNG

      6,76 kB, 218×389, 171 mal angesehen
  • Das "Object following" ist eine von zig Möglichkeiten, eine folgende Kamera zu realisieren. Bei dieser Methode wird lediglich verhindert, dass das angegebene Objekt den definierten Rahmen verlässt (Viewgrenzen abzüglicher der jeweiligen "Borders").

    Was du haben willst ist etwas anderes. Du könntest das jetzt dreckig lösen, indem du im End-Step-Event des Spielerobjekts die Kamera manipulierst (die Views werden afaik zwischen Step- und End-Step-Events gesetzt - sicher bin ich mir aber nicht!):

    GML-Quellcode

    1. view_xview[0] -= 200;
    2. // Stelle sicher, dass die Kamera nicht den Raum verlässt
    3. if (view_xview[0] < 0) {
    4. view_xview[0] = 0;
    5. }

    Alternativ kannst du dich auch komplett von "Object Following" verabschieden und view_xview und view_yview im End-Step-Event selber setzen.
  • Gut, dann werden die Views anscheinend erst nach End-Step gesetzt. Dann musst du es komplett manuell machen. Das hier wäre eine sehr einfache Methode (lege es als eigenes Script an):

    GML-Quellcode

    1. // setViewToInstance(view, ins, xOffset, yOffset)
    2. // view = view Id
    3. // ins = Instanz, die verfolgt werden soll
    4. // xOffset = Verschiebung zur Instanzen-Position in x-Richtung
    5. // yOffset = Verschiebung zur Instanzen-Position in y-Richtung
    6. // Berechne Mittelpunkt der Instanz, basierend auf seiner Kollisionsmaske
    7. var centerX, centerY;
    8. centerX = (argument1.bbox_right + argument1.bbox_left) / 2;
    9. centerY = (argument1.bbox_bottom + argument1.bbox_top) / 2;
    10. // Setze die View auf den Mittelpunkt der Instanz, abzüglich der halben View-Breite bzw. -Höhe unter Berücksichtung der Verschiebung
    11. view_xview[argument0] = centerX - view_wview[argument0] / 2 + argument2;
    12. view_yview[argument0] = centerY - view_hview[argument0] / 2 + argument3;
    13. /* hier könntest du mit Abfragen noch verhindern, dass die View Teile zeigt, die außerhalb des Rooms liegen */
    Alles anzeigen

    Und rufe es im End-Step-Event so auf:

    GML-Quellcode

    1. setViewToInstance(0, objPlayer, 0, 200);

    Ich habe das jetzt nicht getestet. Hoffentlich ist kein Fehler drin.

    Übrigens: bbox_ sind die Kollisionsränder der Instanz