Der View

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

    • Hier mal eine Variante für die Positionierung des View relativ zu einer Spielfigur.
      Mit dieser könnt ihr bestimmen wie schnell der View seine Grundposition gegenüber der Spielfigur einnehmen soll. ob sofort, schnell bis ganz träge.

      Den unten geschriebenen Code schmeißt ihr in ein unsichtbares, unsolides Objekt und platziert das dann innerhalb eures Raumes.
      Es bietet sich an, das Objekt gleich persistent zu machen. Vergeßt nicht im Raum das Object follwoing zu deaktivieren, sonst geht es nicht

      Um so träger sich der Bildschirm der Figur hinterherbewegen soll, desto höher muß auch die Schrittanzahl gewählt werden.

      Momentan hat der Code noch einen kleinen Fehler. Wenn man an den Rand des Raumes kommt, ist die Ansicht nicht ganz korrekt. Daß heißt aber nur, daß der Vektor zum linken oberen Punkt nicht ganz korrekt ist, was in den meisten Fällen nicht stören sollte und wahrscheinlich nicht einmal auffällt. Das Errechnen der richtigen Punktes is och wieder ne etwas fiesere Mathematik.

      in den CreateEvent

      GML-Quellcode

      1. Centerobjekt = character;
      2. schritte = 20; // Roomspeed: 40 schritte:45
      3. x_rel_center = 0; // relativ horizontal von der Mitte des Bildschirmes (0 ist Mitte)
      4. y_rel_center = 0; // relativ vertical von der Mitte des Bildschirmes (0 ist Mitte)
      5. // Qualifizierung
      6. if (x_rel_center>view_wview/2) {x_rel_center=view_wview/2;}
      7. if (y_rel_center>view_hview/2) {y_rel_center=view_hview/2;}


      In den DrawEvent:

      GML-Quellcode

      1. pos_x2 = view_xview[view_current]; // aktueller Bildschirmpunkt links oben X-Koordinate
      2. pos_y2 = view_yview[view_current]; // aktueller Bildschirmpunkt links oben Y-Koordinate
      3. cent_x = Centerobjekt.x - view_wview/2 + x_rel_center; // Neuer Bildschirmpunkt links oben X-Koordinate
      4. cent_y = Centerobjekt.y - view_hview/2 + y_rel_center; // Neuer Bildschirmpunkt links oben X-Koordinate
      5. // Ansicht innerhalb des Raumes halten
      6. if (cent_x<0) {cent_x = 0;}
      7. if (cent_x>room_width-view_wview[view_current]) {cent_x = room_width-view_wview[view_current];}
      8. if (cent_y<-Centerobjekt.sprite_height) {cent_y = -Centerobjekt.sprite_height;}
      9. if (cent_y>room_height-view_hview[view_current]){cent_y = room_height-view_hview[view_current];}
      10. /*
      11. * A Neuer Punkt Sternchenlinie ist die, auf der sich
      12. * |\* der l.o. Punkt der Ansicht bewegen muß.
      13. * | \ * Neuer zu aktuellem Punkt B ----> A
      14. * | \ *
      15. * | \ *
      16. * | \ *
      17. * +-----\---------------B Aktueller Punkt
      18. * \
      19. * O Centerobjekt
      20. *
      21. */
      22. new_angle = point_direction(cent_x,cent_y,pos_x2,pos_y2); // Winkel zwischen neuem Bildschirmpunkt und aktuellem
      23. new_abstand = point_distance(cent_x,cent_y,pos_x2,pos_y2); // Abstand zwischen neuem Bildschirmpunkt und aktuellem
      24. // Verschieben des Views
      25. view_xview[view_current] -= lengthdir_x(new_abstand,new_angle) / schritte;
      26. view_yview[view_current] -= lengthdir_y(new_abstand,new_angle) / schritte;
      Alles anzeigen


      Als Beispiel die Rohfassung meines JumpNRun-Codes mit einem Dummy als Spielfigur.

      links/rechts/hoch/runter = Bewegung
      Shift + links/rechts = rennen
      Strg + links/rechts = schleichen
      Alt + links/rechts = kriechen
      Runter + links/rechts = rollen
      Return + links/rechts/hoch/runter = Umherschauen
      Runter = Hocken
      hoch = springen / klettern


      Viel Spaß

      Archiv ist zweigeteilt
      Dateien
      Bevor ich nicht ganz sicher bin, sage ich lieber gar nichts. ?(

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von vereiser ()