Maus und view ändern doch wie?

  • GM 8

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

  • Maus und view ändern doch wie?

    Hallo heute habe ich mal wieder ein größeres Problem bei den ich ohne euch nicht weiter komme. Ich möchte das Meine maus wie eine Kamera Geht dazu habe ich meinen Mauszeiger in ein Bildschirm großes viereck umgewandelt. Gut das geht wahrscheilich noch deutlich besser da alle blidschirme ja unterscgiedlich groß sind aber das ist nicht mein größtes Problem.


    Das Wichtigste ist das ich möchte das der Blidschrim sich nur dann bewegt, wenn sich auch wirklich die Maus bewegt und nicht das ewig alles in eine Richtung geht nur weil die Maus kurz angestoßen wurde. Ich weiß aber beim besten willen nicht wie?

    Also Hilfe wer echt toll.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Bin Doch Neu ()

  • Es gibt sicherlich elegantere Methoden, aber ich hatte durch die Gegebenheiten in einem meiner Projekte ein Cursor Objekt, anstatt eines geänderten Cursor Sprites. Das Objekt springt immer zu mouse_x und mouse_y und die eingestellte View folgt diesem Objekt.


    Vorzeitiger Edit^^

    Mit

    GML-Quellcode

    1. view_xview[0] -= (display_mouse_get_x() - (display_get_width()/2))/10
    2. view_yview[0] -= (display_mouse_get_y() - (display_get_height()/2))/10

    funktionierts auch wunderbar statt mit dem /10 kannst du die Sensitivität einstellen, je höher desto langsamer bewegt sich die View

    out now: KNOSSOS auf itch.io
    ancient-pixel.com <<< ich freue mich über einen Besuch! ^^
  • ich nütze das hier ist ein Super Multiplayer ersatz wenn mann nur eien PC hat gmc.yoyogames.com/index.php?showtopic=575963 und so habe nun 2Mäuse aber ich möchte nun die eine in diesen spiel mal nur als Kamera nützen.Da es aber nur das Pad am Laptop ist möchte ich aber das die Maus nicht wie bei jeden RTS endlos nach links geht oder Endlos nach Rechts. Nein sie soll nur wander mit den Bildschirm auschnitt und der anderen normalen Maus darin. Darum auch die IDE mit den Viereck hatte leide noch keien besseren Plan. Doch ein Prof wie du weiß sicher was besseres, wie ich es schaffe das der Blidschrim sich trotzdem verschiebt aber halt nur wenn man über das PAD zieht.
  • Also für die Maus die die Kamera bewegt brauchst du im end Step Event von zB deinem Control Objekt oder einem Spieler in etawa so etwas.

    GML-Quellcode

    1. mouse_xprevious = mouse_x
    2. mouse_yprevious = mouse_y


    Jetzt kannst du mit

    GML-Quellcode

    1. if mouse_xprevious != mouse_x or mouse_yprevious != mouse_y
    2. {
    3. view_xview[0] -= (display_mouse_get_x() - (display_get_width()/2))/10
    4. view_yview[0] -= (display_mouse_get_y() - (display_get_height()/2))/10
    5. }

    verhindern dass wenn die maus still sitzt sich die View bewegt, allerdings kannst du dann nicht mehr die maus frei bewegen ohne dass sich die View bewegt. Also würde ich soetwas drumrumbauen

    GML-Quellcode

    1. if mouse_check_button(mb_right)
    2. {
    3. //Kamerabewegung
    4. }


    Spoiler anzeigen

    das funktioniert nicht mit über das Pad drüber fahren mit dem finger
    Hui, sonst würde sich vielleicht eine dritte methode anbieten, die ich noch nie verwendet habe, nämlich dass du abcheckst ob mouse_x und mouse_y kleiner bzw größer als display_get_width() und display_get_height() mit einem gewissen Rahmen sind. In etwa so:

    GML-Quellcode

    1. if mouse_x < display_get_width() and mouse_x > display_get_width()-32
    2. {
    3. view_xview[0] += 16
    4. }
    5. if mouse_x > display_get_width()-display_get_width() and mouse_x < display_get_width()-display_get_width()+32 //das wird wohl eher ein disaster aber das prinzip sollte klar sein^^
    6. {
    7. view_xview[0] -= 16
    8. }

    Für mouse_y genauso mit entsprechenden werten. display_get_width() - display_get_width() deswegen weil 0 ja die Koordinate 0 wäre. Ich weiss grad nicht obs da irgendeine andere Konstante gibt um den linken und den unteren Bildschirmrand zu bekommen.


    Ok, damit jedenfalls die zweite maus mit der Kamera mitkommt musst du mouse2_x und mouse2_y (oder wie auch immer man an die Koordinaten der zweiten Maus rankommt) zum selben punkt in der View springen (wenn! sie sich bewegt) wie vorher auch.

    GML-Quellcode

    1. mouse2_sprungx = view_xview + mouse2_x
    2. mouse2_sprungy = view_yview + mouse2_y
    3. if viewwirdbewegt = 1 //die variabel muss sich verändrn wenn mouse1 sich bewegt 1=bewegt 0 = mouse_x = mouse_xprevious
    4. {
    5. mouse2_x = mouse2_sprungx
    6. mouse2_y = mouse2_sprungy
    7. }


    Ich bin kein Profi und ich hoffe dass das eine funktionierende Methode ist.... es fühlt sich ein bisschen wie eine Frankensteinkreation an^^

    out now: KNOSSOS auf itch.io
    ancient-pixel.com <<< ich freue mich über einen Besuch! ^^