View bewegen je nach Sichtweise des Players

  • GM 8

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

  • View bewegen je nach Sichtweise des Players

    Hallo Leute,

    ich würde es in meinem Spiel gerne so machen, dass wenn der Player nach rechts guckt sich der View nach rechts bewegt bis der player in der linken Seite des Views steht, der Player also quasi in den Raum reinschaut. Das selbe natürlich auch wenn er nach links schaut.

    Hab folgendes im Step-Event des Players:

    Anmerkung:
    global.facing=-1 -> Player guckt nach rechts
    global.facing=1 -> Player guckt nach links


    GML-Quellcode

    1. // View bewegen je nach sichtweise
    2. if (global.facing=-1)with (view_xview[0]) motion_set(0,3)
    3. if (global.facing=1)with (view_xview[0]) motion_set(180,3)


    Das funktioniert aber leider nicht, der View bleibt stehen, egal in welche Richtung er guckt.
    Hat jemand ne Ahnung woran das liegt?

    Vielen Dank im Voraus!

    Gruß,
    Pascal

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

  • Meinst du in etwa so?

    GML-Quellcode

    1. var view_speed, view_wborder;
    2. view_speed = 3; //Die Geschwindigkeit mit der sich der View bewegt.
    3. view_border = 32; //Der Rand der zwischen dem Spieler und dem View bleibt.
    4. view_xview -= global.facing*view_speed; //Bewegt den View
    5. //Stoppt den View wenn er den Rand erreicht.
    6. if(view_xview >= x-view_border)
    7. view_xview = x-view_border;
    8. if(view_xview <= x+view_border-view_wview)
    9. view_xview = x+view_border-view_wview;
    Alles anzeigen

    Muss im Step Event vom Spieler stehen.
  • Chris987 schrieb:

    Meinst du in etwa so?

    var view_speed, view_wborder;


    view_speed = 3; //Die Geschwindigkeit mit der sich der View bewegt.
    view_border = 32; //Der Rand der zwischen dem Spieler und dem View bleibt.

    view_xview -= global.facing*view_speed; //Bewegt den View

    //Stoppt den View wenn er den Rand erreicht.
    if(view_xview >= x-view_border)
    view_xview = x-view_border;

    if(view_xview <= x+view_border-view_wview)
    view_xview = x+view_border-view_wview;

    Muss im Step Event vom Spieler stehen.
    Ja sowas hab ich gesucht! Vielen Dank! :thumbup:
  • Ich hätte doch noch eine Frage dazu:

    hiermit


    GML-Quellcode

    1. view_xview -= global.facing*view_speed // view_speed=3



    wird der View ja immer 3 px in die jeweilige Richtung versetzt. Ich musste den Wert auf 20 erhöhen, damit das etwas schneller geht. Aber dadurch das er nun sozusagen immer 20 px weiterspringt sieht die Bewegung etwas abgehackt/ruckelig aus. Könnte man das so hinkriegen das er sich etwas "softer" bewegt?
  • Speed bedeutet immer die Anzahl der Pixel, die sich etwas (in deinem Fall das view) pro step bewegt. Der Bildschirm wird nur einmal in jedem step erneuert. Normal ist das 30mal pro Sekunde, abhängig vom room_speed. Das bedeutet, dass die Bewegung nur flüssiger wird, wenn du den room_speed erhöhst. Allerdings wird dann auch alles andere schneller. Wenn dir das zu schnell ist, müsstest du eben den room_speed erhöhen und dann alles außer view_speed langsamer machen. Das ist natürlich sehr aufwendig.
  • zyniker schrieb:


    Speed bedeutet immer die Anzahl der Pixel, die sich etwas (in deinem Fall das view) pro step bewegt. Der Bildschirm wird nur einmal in jedem step erneuert. Normal ist das 30mal pro Sekunde, abhängig vom room_speed. Das bedeutet, dass die Bewegung nur flüssiger wird, wenn du den room_speed erhöhst. Allerdings wird dann auch alles andere schneller. Wenn dir das zu schnell ist, müsstest du eben den room_speed erhöhen und dann alles außer view_speed langsamer machen. Das ist natürlich sehr aufwendig.
    Ja das ist in der Tat sehr aufwendig! ;)

    Und man kann dem view nicht irgendwie sagen "beweg Dich 20 px nach rechts mit einem speed von 1 px pro step" ?
  • zyniker schrieb:


    Dafür müsstest du view_speed auf 1 setzen, aber das wäre wirklich extrem langsam. Leider kann er nicht mehrmals als einmal pro Step einen Sprung (Bewegung) vollziehen.
    Mh irgendwie ändert sich nichts wenn ich view_speed auf 1 setze. Wo muss ich das denn hinschreiben?

    Muss ich

    view_xview -= global.facing*view_speed // view_speed=3

    dadurch ersetzen oder zusätzlich verwenden?
  • Das view_speed=3 in der Zeile

    GML-Quellcode

    1. view_xview -= global.facing*view_speed // view_speed=3
    ist nur ein Kommentar (erkennbar durch die beiden Schrägstriche und die grüne Farbe). Du musst das view_speed in der Zeile

    GML-Quellcode

    1. view_speed = 3; //Die Geschwindigkeit mit der sich der View bewegt.
    verändern.
  • zyniker schrieb:


    Das view_speed=3 in der Zeile

    view_xview -= global.facing*view_speed // view_speed=3

    ist nur ein Kommentar (erkennbar durch die beiden Schrägstriche und die grüne Farbe). Du musst das view_speed in der Zeile


    view_speed = 3; //Die Geschwindigkeit mit der sich der View bewegt.

    verändern.
    Achso jetzt weiß ich was Du meinst. :D

    Hatte dich nur falsch verstanden, dachte ich müsste irgendwo "view_speed=1" hinschreiben... ^^