View der Maus folgen lassen

  • View der Maus folgen lassen

    Vielleicht liegt es daran, dass mein Fieber mich schüttelt, aber ist es möglich den View der Maus folgen zu lassen?

    Wenn ja wie?
  • Der Maus 1:1 zu folgen dürfte wohl schlecht möglich sein, da sich der Cursor ja quasi nur innerhalb des Views bewegt.

    Man könnte jetzt natürlich eine Art "Rand" des Views festlegen, und sobald die Maus sich in diesem Randbereich befindet, bewegt sich der View in die entsprechende Richtung (das hätte dann in etwa den Effekt wie bei Moorhuhn).
    Hier werden sie geholfen:
    [Regeln] [GML] [Hilfe] [Suche] [Posten] [Duden.de]
    [Wenn das alles nicht mehr hilft] [Dunning-Kruger]


    "Die Vernunft sollte Autorität definieren; nicht umgekehrt!"
    "Selber denken regt das Gehirn an."
    - Niffel f.k.a. Kilik
  • Habs zwar net Probiert aber:

    1.Mach ein object (z.b. obj_view)
    2.Stelle ein, das das obj der maus folgt.
    Man nehme

    GML-Quellcode

    1. {
    2. obj_view.x=mouse_x
    3. obj_view.y=mouse_y
    4. }


    In dem View obj ein Step Event machen und in dem schreibt man

    GML-Quellcode

    1. view_object[0] = obj_view


    Jetzt musst du beim Raum nur noch machen, das die view dem Obj folgt

    €dit:
    Weis net ob du das so meinst:

    Der background soll net auf Killerspiele hinweisen, hatte gerade nix besseres zu hand
    Dateien
    • ^^.rar

      (916,07 kB, 134 mal heruntergeladen, zuletzt: )

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

  • Thx das funzt wunderbar... Problem ist nur das es quasie nie still steht und das könnte auf die Dauer sehr nervig werden. <- Nachtrag: dieses Problem wurde durch den Beitrag: "Bei Verfolgung nicht wackeln" gelöst.

    Wie würde man das mit dem "Randbereich" machen?

    Setzt man einen zweiten View und schreibt ein Script oder wie würdest du das umsetzen?

    Wenn ja wie würde das Script heißen, bzw. wo kann ich mir das angucken?

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

  • Das mit dem Randbereich würde ich so lösen, dass ein Controllerobjekt im Raum platziert wird, das überprüft, wo sich die Maus befindet, und wenn sie zu dicht am Rand des Views ist, den View verschiebt.

    Für den linkten Rand würde das z.B. so aussehen:

    GML-Quellcode

    1. //Step-Event
    2. if(mouse_x<view_xview[0]+5)
    3. {
    4. view_xview[0]-=1;
    5. }


    In diesem Fall ist der Abstand zum Rand 5 und die Geschwindigkeit des Rooms 1/Step.

    Man könnte jetzt auch geschachtelte Anfragen machen, dass die Maus einen von mehreren möglichen Abständen zum Rand haben kann, und je dichter sie dem Rand ist, um so schneller bewegt sich der View.
  • Cool, danke... werd mal gucken ob ich das verwursten kann, vermutlich am besten zum "Scrollen".

    Werd gleich mal ein bisschen rumfummeln... Problem is nur, dass ich im Moment noch zu doof bin die Koordinaten für den View richtig einzutragen, so dass ich oben einen Ausschnitt meines "Spielnbretts habe (nur ein Ausschnitt quasie im Zoom) und unten eine Art feste Konsole, auf der sich noch zusätzliche Knöpfe befinden.

    EDIT27.06.2007: Wenn Ihr für die Konsole ein festes "Unterboden-Objekt" baut, und dies für das View-Objekt unzugänglich macht, habt ihr nicht mehr das Problem, dass der View in die Konsole flutscht.
    ________________________________________
    Nachtrag und Schluss:
    Ja es eignet sich ganz super zum scrollen... und auch für ein paar andere Dinge... wenn die erste Demo für mein Spiel draußen ist, werdet ihr sehen, was eure Tipps so alles gebracht haben ;)

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

  • Da es schon 46 Seiten zum Thema View gibt dachte ich mir es ist besser nicht noch einen aufzumachen sondern stattdessen diesen Thread noch um eine Frage zu erweitern.
    Der View funktioniert wie weiter oben beschrieben und ich fixiere zwei Objekte mit dem Code:

    Im Create_Event:
    x_position = x - view_xview[0];
    y_position = y - view_yview[0];

    Im Draw_Event:
    x = view_xview[0]+x_position;
    y = view_yview[0]+y_position;
    draw_sprite_ext(sprite_index,-1,x,y,image_xscale,image_yscale,image_angle,image_blend,image_alpha);

    Das einzige Problem ist hierbei, dass sich das Objekt danach garnicht mehr bewegen lässt.
    Wenn nichts gedrückt wird, soll es fixiert an einer Stelle kleben (auch wenn sich der View bewegt), beim Klicken der linken Maustaste soll es sich um 80 pixel nach rechts bewegen und sich danach sofort dort wieder an dieser Stelle festsetzen.

    >> Antwort: Das "Jump to Position" durch x_position+=80 ersetzen. <<
    Dateien
    • View_Problem.zip

      (45,82 kB, 128 mal heruntergeladen, zuletzt: )

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

  • Benutzer online 1

    1 Besucher