Player verlässt den Raum nicht

  • GM 8

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

  • Player verlässt den Raum nicht

    Hi

    Hab (wie immer) ein Problem/ eine Frage:

    Ich hab so ein Labyrinth-Spiel gemacht. Da ist aber nicht genug Platz für eine Aussenwand (also 32x32px (oder kleiner) Blöcke rundherum).

    Gibts da irgendwo einen ... hmm ... Schalter, oder ein Event oder irgendetwas, damit der Player den Raum nicht mehr verlässt?

    Danke schon mal

    Goldendragon
    Schul-Abschlussarbeit: Gamesammlung

    Made with: Game Maker 8 Pro
    Fertigstellung: Frühling 2011


    Fortschritt:
    Games: 5/20 (voraussichtlich 20)
    Gameübersicht-Fortschritt: 0%
  • du könntest ja jedesmall beim gehen eines felds prüfen, ob du außerhalb des Rooms bist. Wenn nicht, bewegst du den Spieler einfach an die jeweilige stelle, wenn nein, dann bleibt er einfach stehen udn rührt sich nicht.

    also z.B für den Linken rand des raumes:

    GML-Quellcode

    1. if (keyboard_check(vk_left)){
    2. if not (player.x -5 < 0){ //wenn Playerkoordinate + bewegungsvariable nicht kleiner sind als 0 (giltet für den //linken Rand des raumes)
    3. player.x+=-5; //bewege den Spieler um diesen wert.
    4. }
    5. }


    Das ist nur mal schnell dahingecoded. (Keine Garantie für Fehler.) Müsste aber funktionieren.
    Um jetzt den Raum rechts abzufragen:

    GML-Quellcode

    1. if (player.x + 5 > room_width){ //das gleiche wie oben, nur wird hier die größe des raumes abgefragt.
    2. player.x+=+5;
    3. }

    hier wird halt geprüt ob der Spieler den Raum übertreten würde wenn er sich um 5 Pixel weiterbewegen würde.
    Da du ja ein grid benutzt musst du deine Werte halt nach dem Grid anpassen.

    Hoffe ich konnte dir einigermaßen helfen. ;)
  • Falls du mit Speed/Motion arbeitest

    GML-Quellcode

    1. if bbox_left<0 && hspeed<0
    2. hspeed=-hspeed;
    3. if bbox_right>room_width && hspeed>0
    4. hspeed=-hspeed;
    5. if bbox_top<0 && vspeed<0
    6. vspeed=-vspeed;
    7. if bbox_bottom>room_height && vspeed>0
    8. vspeed=-vspeed;
    9. while bbox_left<0 x+=1;
    10. while bbox_right>room_width x-=1;
    11. while bbox_top<0 y+=1;
    12. while bbox_bottom>room_height y-=1;
    Alles anzeigen
    :saint:
  • Rohkar's Lösung erscheint mir am einfachsten, zwar nicht gerade am elegantesten, aber am einfachsten, und es funktionert! Und wass will man denn da noch mehr?

    Gruss und Danke an alle

    Goldendragon
    Schul-Abschlussarbeit: Gamesammlung

    Made with: Game Maker 8 Pro
    Fertigstellung: Frühling 2011


    Fortschritt:
    Games: 5/20 (voraussichtlich 20)
    Gameübersicht-Fortschritt: 0%
  • Goldendragon schrieb:

    Rohkar's Lösung erscheint mir am einfachsten, zwar nicht gerade am elegantesten, aber am einfachsten, und es funktionert! Und wass will man denn da noch mehr?


    Schlechteste lösung von allem , sorry.
    Aber es ist deine entscheidung :P
    Ausserdem wird es bei größeren räumen eh nervig die ganzen object ausserhalb zu setzten.
    Ausser du bastelst dir n script zusammen das für dich die arbeit erledigt..
    :saint:
  • Hmm, es funktioniert.
    Klar wird es nervig, aber: dafür gibts n Script?
    Ich hab keinen blassen Schimmer wie das gehen soll, und ich will auch nicht, dass irgendjemand sich dafür jetzt den ***** aufreisst, aber falls jemand so etwas hat, nehm ichs gern!
    Schul-Abschlussarbeit: Gamesammlung

    Made with: Game Maker 8 Pro
    Fertigstellung: Frühling 2011


    Fortschritt:
    Games: 5/20 (voraussichtlich 20)
    Gameübersicht-Fortschritt: 0%
  • Hab ich nicht getestet!
    create event

    GML-Quellcode

    1. var xx,yy;
    2. xx=-32;
    3. yy=-32;
    4. repeat (room_width/32) {
    5. instance_create(xx,yy,obj_wall);
    6. xx+=32;
    7. }
    8. xx=-32;
    9. repeat (room_height/32) {
    10. instance_create(xx,yy,obj_wall);
    11. yy+=32;
    12. }
    13. yy=room_height+32
    14. repeat (room_width/32) {
    15. instance_create(xx,yy,obj_wall);
    16. xx+=32;
    17. }
    18. xx=room_width+32;
    19. yy=-32;
    20. repeat (room_height/32) {
    21. instance_create(xx,yy,obj_wall);
    22. yy+=32;
    23. }
    Alles anzeigen
    :saint:
  • Thx ich werds dann mal ausprobieren.
    (bin zurzeit mit fast 10 Projects beschäftigt (ich mags mit vielen Projects gleichzeitig zu Arbeiten :D)
    Schul-Abschlussarbeit: Gamesammlung

    Made with: Game Maker 8 Pro
    Fertigstellung: Frühling 2011


    Fortschritt:
    Games: 5/20 (voraussichtlich 20)
    Gameübersicht-Fortschritt: 0%
  • Benutzer online 1

    1 Besucher