Treibsand (Aber langsame Bewegung)

    Treibsand (Aber langsame Bewegung)

    Hey, GameMaker-Domäne,
    es tut mir leid, dass ich das nochmal schreibe, aber mein zweiter Thread dazu wurde geschlossen und ich habe
    (dummerweise) vergessen, den wichtigsten Punkt dazuzuschreiben:
    Man soll sich trotzdem noch bewegen können und sehr niedrig springen können, um zu entkommen.
    Ich nutze
    -> vspeed (eingebaute Funktion), hspeed (eingebaute Funktion), grav

    (Bitte löscht meine anderen Threads, das hier ist der komplett Richtige.)


    MfG


    CinoComeback :) :deal:
    Dann musst du deine Bewgungsgeschwindigkeit und Sprungkraft in einer Variable speichern.
    Und diese halbieren wenn man im Kontakt mit Treibsand ist.

    Beim springen also statt "vspeed=-10" dann "vspeed=-sprungkraft"
    und "sprungkraft" legst du im createvent auf 10 oder was auch immer du willst fest.
    Beim Betreten vom Treibsand kannst du "sprungkraft" halbieren und beim verlassen wieder auf den standardwert setzen.

    CinoComeback schrieb:

    Hallo?

    Das Forum ist kein Chat, die Mitglieder dieses Forums helfen anderen Nutzern freiwillig in ihrer eigenen Freizeit mit Ratschlägen und Lösungsansätzen weiter, ohne Gegenleistung.
    In einem anderen Thread hast du erwähnt, dass du kein Anfänger bist und schon 2 Jahre mit dem GameMaker arbeitest, du solltest mit den hier beschriebenen Lösungsansätzen daher eigentlich überhaupt keine Probleme haben.

    Es ist aber vollkommen unhöflich (und gegen die Forenregeln), hier innerhalb von 3 Stunden einen Doppelpost abzusetzen und quasi hektisch eine Antwort zu fordern, am besten immer sofort und als vollständiger Code für Copy & Paste Einlagen.

    TrunX hat dir (geduldig und äußerst hilfsbereit wie man ihn schon immer kannte) auf ein und das selbe Thema in 3 separaten Threads entsprechende Lösungen mit Code gepostet, man kann leider nicht erkennen, dass du wirkliche Anstrengungen unternommen hast, das Gepostete entsprechend selbst anzuwenden.

    Shadowheart schrieb:

    CinoComeback schrieb:

    Hallo?

    Das Forum ist kein Chat, die Mitglieder dieses Forums helfen anderen Nutzern freiwillig in ihrer eigenen Freizeit mit Ratschlägen und Lösungsansätzen weiter, ohne Gegenleistung.
    In einem anderen Thread hast du erwähnt, dass du kein Anfänger bist und schon 2 Jahre mit dem GameMaker arbeitest, du solltest mit den hier beschriebenen Lösungsansätzen daher eigentlich überhaupt keine Probleme haben.

    Es ist aber vollkommen unhöflich (und gegen die Forenregeln), hier innerhalb von 3 Stunden einen Doppelpost abzusetzen und quasi hektisch eine Antwort zu fordern, am besten immer sofort und als vollständiger Code für Copy & Paste Einlagen.

    TrunX hat dir (geduldig und äußerst hilfsbereit wie man ihn schon immer kannte) auf ein und das selbe Thema in 3 separaten Threads entsprechende Lösungen mit Code gepostet, man kann leider nicht erkennen, dass du wirkliche Anstrengungen unternommen hast, das Gepostete entsprechend selbst anzuwenden.


    ganz richtig. es werden auf der hauptseite 19 Themen angezeigt.
    12 Davon sind von dir. Du brichst immer wieder ein neues Thema an und hast das alte noch gar nicht gelöst.

    am ende willst du ja auch sagen können, dass du das spiel programmiert hast und nicht das das forum dir ein spiel programmiert hat, das du dann nur zusammengepuzzelt hast.


    CinoComeback schrieb:

    also sprungkraft soll dann vspeed * JumpKey (keyboard_check_pressed(up)) sein?
    Oder wie meinst du das jetzt?


    Probier es aus. In der Zeit in der du hier auf antworten wartest könntest du soviel über die Funktionsweise des GameMakers oder grundlegende Programmiermechaniken lernen indem du mögliche Lösungen ausprobierst und versuchst zu verstehen wieso etwas nicht funktioniert hat.

    Kann dir nur den Tipp geben einfach mal selber rumprobieren und im beiliegendem Hilfedokument stöbern. Ich kenne auch nicht alle Befehle auswendig und schlag da manchmal nach wenn ich etwas nicht aus dem Kopf weiß ;)
    Edithaus3 sagt: Hab deine VIER Beiträge mit jeweils ein paar Stunden Abstand zwischen ihnen mal zusammengefügt.

    Verstehe das mit der Hilfe (F1) nicht immer, alles in Englisch.
    Aber ich habe das schon inzwischen ausprobiert und es funktioniert iwie nicht, vielleicht habe ich es falsch gemacht.

    Aber wenn ich dann neben einem Block (im Sprung) bin, resettet sich komischerweise der Room. Hilfe?
    Beim Wind. (im Step des Windes ''JOHN.x += 7'')

    ?
    Habe alles probiert.

    Es ist wirklich wichtig.
    Ich möchte an dieser Stelle nochmal unterstreichen, was Shadowheart schon anführte:

    Shadowheart schrieb:

    Es ist aber vollkommen unhöflich (und gegen die Forenregeln), hier innerhalb von 3 Stunden einen Doppelpost abzusetzen und quasi hektisch eine Antwort zu fordern, am besten immer sofort und als vollständiger Code für Copy & Paste Einlagen.


    Dieses Forum programmiert nicht dein Spiel für dich. Ob dir jemand fertigen Code geben will oder nicht, ist dessen freie Entscheidung - kein Anspruch deinerseits. DIr wurde jetzt schon an mehreren Stellen der ein oder andere Ansatz präsentiert, wie man das gewünschte Feature implementieren könnte.
    Aber ich fass gerne nochmal den allgemeinen Ansatz zusammen, den man für jedes neue Spielelement durchgehen sollte:

    1. Was ist "Treibsand" eigentlich?
    Mit Treibsand meinst du ja im Prinzip eigenlich einen bestimmten Typ Boden, der sich anders verhält als normaler Boden. Insbesondere:
    • Läuft man darauf langsamer
    • Versinkt man langsam darin
    • Kann man nicht mehr so hoch springen wie gewöhnlich.
    Jetzt, wo du weißt, worauf es ankommt, kannst du dir die nächste Frage stellen:

    2. Mit welchen bestehenden Spielmechaniken hängt das zusammen?
    Der Unterschied von Treibsand zu normalem Boden kann über zwei unterschiedliche Objekte umgesetzt werden, z.B. obj_floor und obj_quicksand. Auf welchem der beiden dein Spieler grade steht, findet der GM über die Kollisionserkennung schon für dich raus.
    Alles andere ist deine Sache und kann über einfache Programmierung gelöst werden.

    3. Wie code ich das?
    Zu allererst willst du folgendes erreichen: Wenn dein Charakter mit obj_quicksand kollidiert, soll er in den Zustand "Auf Treibsand" übergehen; wenn er wieder aufm Boden ist, soll er aus "Auf Treibsand" raus. Das kannst du zum Beispiel über eine einfache true/false-Variable lösen. Kollidierst du mit Treibsand, setzt du sie auf true, ansonsten auf false.
    Damit kannst du dann in jedem anderen Event abfragen, ob du grad im "Treibsand-Modus" bist.
    Falls ja, reduzierst du die Bewegungsgeschwindigkeit (sei das nun hspeed oder ein eigener Wert, den du einfach immer auf die x-Koordinate draufrechnest), lässt deinen Charakter versinken (über vspeed oder die y-Koordinate) und verringerst die Sprungkraft (ähnlich zur Bewegungsgeschwindigkeit). All das entsprechend in Step- oder Tastendruck-Events.
    Das wars.
    Und nein, ich geb dir keinen fertigen Code dafür - die Erfahrung zeigt deutlich, dass dir das nichts bringt. Stattdessen empfehle ich:

    TrunX schrieb:

    Probier es aus. In der Zeit in der du hier auf antworten wartest könntest du soviel über die Funktionsweise des GameMakers oder grundlegende Programmiermechaniken lernen indem du mögliche Lösungen ausprobierst und versuchst zu verstehen wieso etwas nicht funktioniert hat.


    Es bringt dir rein gar nichts, einfach nur den richtigen Code zu kopieren - du musst auch versuchen zu verstehen, warum dieser Code funktioniert. Und das lernt man am besten, indem man die notwendigen Schritte kennt, aber dann die Implementierung selber macht.
    Wenn du's nicht gleich in dein fertiges Spiel einbauen willst, mach ein neues, kleineres Projekt, in das du nur die grundlegende Steuerung importierst und dann die Treibsand-mechanik einbaust. So kannst du's gleich von Anfang an gescheit machen und machst nix an deinem Spiel kaputt, wenn du dich irgendwo verzettelst.
    Aber gewöhn dir jetzt bitte allgemein endlich mal ein wenig Eigeninitiative an - niemand rügt dich hier fürs Fragen stellen, sondern für diese Einstellung, dass du einfach alles relevante für dein Spiel hier aus dem Forum ziehen kannst und überhaupt nix selbst lernen musst. Und det wird nix, min Jung. Das ist dein Spiel, also musst du es programmieren. Wir greifen dir dabei nur unter die Arme, wir nehmen dir nicht die Hauptarbeit ab.