Outside Room

  • Outside Room

    Hallo,
    ich habe ein Problem wenn mein Player den Rand des Feldes betritt. Ich möchte dass er da nicht mehr wieter kann.
    hört sich einfach an speed auf 0 stellen hat sich die sache, aber wen man immer wieder in die richtung geht
    stehen - ein pixel rein-stehen-ein pixel rein-stehen.......

    Welche aktion brauche ich um in nicht darein zu lassen??

    MFG Calpirinha :?: :?: :?:
  • im key-press right event prüfst du ob x<room_width und wenn das wahr ist, führst du die aktion aus. für left sieht das ganze dann eben so aus: x>0; für up: y>0 und für down y<room_heigth

    © 2008 by Teamgrill Productions
  • Wenn das auch nicht die eleganteste Lösung ist, so Löse ich dieses Problem immer mit unsichtbaren Wänden. D.h. ich habe ein unsichtbares, aber solides Wandobjekt für alles, wo mein Spieler nicht gegen laufen darf, sowie für Fälle, wie du sie beschrieben hast. D.h. ich ziehe ein Gehege aus unsichtbaren Blöcken; wenn auch noch zu sehen sein soll, warum es dort nicht weiter geht, setze ich ein Tile drunter, und wenn ich andere Objekte habe, durch die der Spieler nicht durch soll, dann erben die alle von dem unsichtbaren Block.
    Denn wenn Player und Wand solid sind (evtl reicht auch eins von beidem, bin mir gerade nicht sicher), und die Bewegungsbremse im Kollisionsevent des Players mit der Wand steht, wird die Position des Players bei einer Kollision auf den letzten kollisionsfreien Punkt zurückgesetzt.

    Edit: Und die Methode von MasterXY funktioniert so nicht ganz: Du müsstest bei den Vergleichen von room_width bzw. room_height immer etwas abziehen (Länge und Breite deines Playersprites), da er sonst zum Teil aus dem Bild rauslaufen kann, bevor die if-Abfrage greift.