if image_angle = 0 then (abprallen)

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

  • if image_angle = 0 then (abprallen)

    Hallo.
    Meine Jump'n'run Hauptfigur kann auf einem Knopfdruck einen kompletten Salto ausführen(image_angle). Wenn sie(die Hauptfigur) jedoch auf den Boden fällt und nicht gerade steht(image_angle = 0)
    soll sie wieder abprallen. Falls man von oben drauffällt, glaubt das auch meistens. Wenn man jedoch seitlich kommt bleibt man so gut wie immer stecken. Obwohl es viele Möglichkeiten gibt, frei zu kommen(kleiner werden, drehen, springen) beeinflusst es entweder den Spielfluss oder man bleibt auf ewig stecken.
    Weiß einer, wie ich das beseitigen könnte (ohne den Salto zu streichen :D)?

    Bisheriger Code:

    GML-Quellcode

    1. if (vspeed > 0 && not place_free(x,y+vspeed) ) && other.solid = true//Standardcode. Der hat mit meinem Problem an sich nichts zu tun
    2. {
    3. if frac(image_angle / 360) != 0// da ich nicht bei 360° wieder auf 0° setze rechne ich aus, ob image_angle kein Bruchteil von 360 ist.
    4. {
    5. {
    6. y += 1//hier versuche ich den Helden herauszuziehen
    7. vspeed = -5//und hier springt er
    8. }
    9. }
    10. else
    11. {
    12. move_contact(270);//Standardcode. Der hat mit meinem Problem an sich nichts zu tun
    13. vspeed = 0;//Standardcode. Der hat mit meinem Problem an sich nichts zu tun
    14. hspeed = 0;//Standardcode. Der hat mit meinem Problem an sich nichts zu tun
    15. }
    16. }
    Alles anzeigen

    Edit: Drücke ich mich seltsam aus oder wieso hilft mir bei meinen meisten Fragen keiner ;)?
    Edit2: Oder bin ich zu ungeduldig :D

    Sinnvolles Edit: Habe mir die Meeresfruuuuucht(genug u?)-Engine angeguckt. da bleibt die Frucht ja auch nicht stecken, trotz Image_angle. Jedoch gibt es dort keine Abfrage(image_angle = 0) und Bruchteile hinausziehen hat auch nicht funktioniert :(
    Sinnvolles Edit2: Habe den Code ein bisschen erklärt.

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von woku ()

  • Wenn deine Figur stecken bleibt, solltest du dem Player-Objekt eine Mask verpassen. Es bleibt höchstwahrscheinlich hängen, weil der Sprite sich bei der Berührung mit der Wand dreht und somit sich quasi in die Wand hinein bohrt.
    █████ ██ █ ████ everything ███ █████ is █████ ████ ████ fine ████ ███ █ ██████ love.
    █████ ███████ ███ your █████ ████ government.
  • Original von mauge
    Wenn deine Figur stecken bleibt, solltest du dem Player-Objekt eine Mask verpassen. Es bleibt höchstwahrscheinlich hängen, weil der Sprite sich bei der Berührung mit der Wand dreht und somit sich quasi in die Wand hinein bohrt.

    Die Mask macht das Ganze noch schlimmer. :(
    Dann bleibt man sogar stecken, wenn man die Wand noch nicht mal berührt hat.
    Edit: /*Die Raupe/der Wurm selbst braucht sonst keine Mask, weil sein Körper unten eine komplette Linie zieht.*/

    Das mit dem Hineinbohren habe ich auch schon vermutet. Dieses image_angle erschwert Kollisionen ja leider ungemein.

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

  • Nimm einfach einen Kreis als Mask, der die gesamte Rotationsanimation abdeckt. Ausserdem ist dein Code viel zu kompliziert, zumindest für das, was du damit bezwecken willst. Ich versteh auch das Sytem nicht so ganz. Kannst du das nochmal genauer beschreiben?
    █████ ██ █ ████ everything ███ █████ is █████ ████ ████ fine ████ ███ █ ██████ love.
    █████ ███████ ███ your █████ ████ government.
  • Ja, aber manchmal muss man eben solche Aktionen starten, um zu testen, woran es liegt.

    Ok, was heisst "den Helden herausziehen"? Ausserdem fehlt ja dann in diesem Code das Collision Event? ?(
    █████ ██ █ ████ everything ███ █████ is █████ ████ ████ fine ████ ███ █ ██████ love.
    █████ ███████ ███ your █████ ████ government.
  • Ups sorry...
    Der Code ist im Kollisionsevent

    Den Helden herausziehen soll heißen: Ist er dann doch stecken geblieben, lassen wir hin einen Pixel aus dem Teil heraus, bis er komplett weg ist.

    Ergebnis der Mask: Also... feststecken tu ich jetzt nicht mehr in den Wänden... aber dafür wenn ich ca.16 Pixel entfernt bin!
    (der Held ist 32x32 groß. Als Mask habe ich einen 64x64 großen Kreis mit dem origin im Center eingestellt)

  • So, damit ist schonmal sichergestellt, dass es tatsächlich am rotierenden Sprite liegt. Jetzt würd ich an deiner Stelle die Mask auf eine günstige Grösse einschränken und jedesmal ausschalten, wenn die Figur sie nicht braucht. Sobald sie dann einen Salto ausführt, setzt du Mask wieder.
    █████ ██ █ ████ everything ███ █████ is █████ ████ ████ fine ████ ███ █ ██████ love.
    █████ ███████ ███ your █████ ████ government.
  • / - o \____/\_
    | (_) ____°_°|
    \___/
    :top:!
    Es geht! WUHU!

    Es gab nur noch ein Problem: Wenn ich in der Nähe von einem Block stand und dann einen Salto vollführte, blieb ich sofort stecken. Jetzt wird einfach eine Sperre eingeführt.
    "Du kannst nur einen Salto machen, wenn die Bahn frei ist."

    Danke für deine Bemühungen, mauge.

    Edit: @unter mir: lol, dann musst du dich ja eher bei mir bedanken ^^
    Edit2: Oh Gott! Ich muss in die Schule!!!^^

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von woku ()

  • Gern geschehen.. Irgendwie muss man ja seine Zeit auf Arbeit totschlagen.^^
    █████ ██ █ ████ everything ███ █████ is █████ ████ ████ fine ████ ███ █ ██████ love.
    █████ ███████ ███ your █████ ████ government.
  • Benutzer online 1

    1 Besucher