Männchen läuft IN die Wand rein?

  • GM 8

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

  • Männchen läuft IN die Wand rein?

    Handelt sich hierbei um ein 2D Spiel, im Mario-Stil.

    Also ganz simples Problem, immer wenn ich gegen eine Wand laufe, läuft mein Männchen in diese rein.
    Aber ab einem bestimmten Punkt, also wenn es weit genug in der Wand drin ist, springt es plötzlich zurück, also vor die Wand.

    Wäre sehr nett wenn Jemand ein Beispiel posten könnte wie er sowas macht, damit ich das Männchen dementsprechend umändern kann.

    Es geht lediglich ums in die Wand laufen.
    Springen, Laufanimation etc. klappt alles bereits ohne Probleme.
    Geht gerade nur um das Problem mit der Kollision.
    Ich denke dass ich einfach was übersehe, aber ich sehe nicht was...

    Vielen Dank für jede Antwort :thumbsup:
  • versuche den mal im step

    if place_free(x+hspeed,y) == false
    speed=0

    if place_free(x,y+vspeed) == false
    speed=0
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • Also die meiste Zeit hält er jetzt vor der Wand an, nur manchmal, wenn ich grad gesprungen bin geht er doch wieder kurz in sie hinein.
    Außerdem kann ich jetzt wenn ich an Wänden Springen gedrückt halte, an diesen hochklettern.

    Ich glaub ich muss das alles nochmal vom Charakter von vorne anfangen.


    Hm, also ich post mal was ich bisher hatte, wovon ich dachte dass es so bis jetzt immer geklappt hat...

    Also für den Hauptcharakter im Spiel, den man steuert:

    ___________________________________________________
    :event_step: Event:
    :action_code:
    //nach rechts laufen
    if(keyboard_check(vk_right) && !keyboard_check(vk_left)){
    sprite_index = walk;
    //xDir = 1;
    image_xscale = 1;
    x += 8;
    }
    //nach links laufen
    if(!keyboard_check(vk_right) && keyboard_check(vk_left)){
    sprite_index = walk;
    //xDir = -1;
    image_xscale = -1;
    x -= 8;
    }
    //stehen
    if((!keyboard_check(vk_right) && !keyboard_check(vk_left)) ||
    (keyboard_check(vk_right) && keyboard_check(vk_left)))
    sprite_index = front;

    :action_iffree: If a position is collision free 0/1/only solid, relative
    :action_gravity: Set the gravity 270 / 0.9
    :action_else:
    :action_gravity: Set the gravity 270 / 0
    :action_ifvariable: if vspeed is greater than 12
    :action_variable: set variable vspeed to 12
    __________________________________________
    :event_keyboard: <Up> Event:
    :action_ifcollision: If there is a collision at a position 0/4/only solid/relative
    :action_vspeed: set the vertical speed to -19
    __________________________________________
    :event_collision: Wand:
    :action_contact: Move to contact in direction direction / solid objects
    :action_vspeed: Set the vertical speed to 0
    ___________________________________________

    Wenn ich den Code so lasse, wie man ihn hier sieht, dann tritt der Fehler auf, dass das Männchen in die Wand hineinläuft.
    Läuft man allerdings weit genug in die Wand hinein, wird es wieder vor der Wand platziert, also praktisch ein paar Koordinaten weiter vorner hinteleportiert.

    Wäre sehr dankbar wenn ihr mir helfen könntet.
    Hab grad keine Ahnung was ich falsch mache.
    Abgesehen davon, hat das schonmal ohne Probleme geklappt, nur damals hatte ich eine ganz andere Methode benutzt... Und die war sehr schlampig..

    Also wie gesagt, bin sehr dankbar für jede Antwort! :)

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