Windbugs

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

  • Mein Problem ist, dass JOHN (Spieler) wenn er dann neben einem Objekt steht in das Objekt reingedrückt und der Room restartet wird. Wie kann ichs so machen, dass John dann einfach an den Objects (z. B. an einer Wand) einfach runterrutscht (wie z. B. in einigen Jump & Runs, wo man runterrutscht, aber wenn man den Sprungknopf drückt man einen Wandsprung ausführt (will keinen Wandsprung, nur das runterrutschen während dem Wind!))?

    Danke!



    Grüße,


    CinoComeback
  • Ich versteh nur Bahnhof, wie gesagt, wenn Du möchtest, dass man Dir hilft, dann schildere
    Dein Problem etwas genauer und GANZ WICHTIG, zeig den Code her, den Du schon hast und
    markiere die Stelle, wo es hakt.

    Aus Deinem Thread kann ich nicht mal erkennen, ob Du nun die Physik von GM nutzt oder
    Deine eigene oder eine, die Du irgendwo gefunden hast(dann den Link dazu).

    Mal ganz ehrlich unter uns, ich werde auf solche Threads wie, "Es funktioniert nicht, wer
    schreibt mir den Code dazu?", nicht mehr reagieren.


    Miradur
  • Mein Code ist

    GML-Quellcode

    1. if instance_exists(xy quicksand usw.)(JOHN.x +=1;)

    ca.
    also man wird eben jeden Step (30 Sekunden) um einen Pixel(?) nach rechts verschoben.
    Jedoch - wenn man neben einem solid_object steht und dieser "Wind" einen jede Sekunde um einen Pixel(?) verschiebt, wird man sozusagen ja in den Block reingedrückt (normalerweise, wenn man dagegen springt/rennt (ohne Wind) nicht!)...

    Bitte bitte

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von CinoComeback () aus folgendem Grund: Quicksand vergessen. Der Code ist nur eine Darstellung, wie meiner ca. ist

  • Wenn du die X Koordinate einfach verschiebst, greift deine Kollisionsabfrage wahrscheinlich nicht.
    Nutze lieber hspeed und addiere es mit 1.
    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

    GML-Quellcode

    1. if instance blödsinn (xy quicksand usw.)
    2. hspeed += 1;
    ? (ungefährer Code)
    Kann ich dann überhaupt noch nach links laufen?
    Weil ich will, dass der Wind einen verweht, man aber auch nach links laufen kann (dafür langsamer) und das hat beim x funktioniert.
    Ich probiers heute Abend, wenn ich nach Hause komme, aber bitte bestätige mir das, wenns stimmt.

    Danke

    CinoComeback
  • Wichtig ist dabei auch, dass du die Kollisionserkennung mittels hspeed machst. Wenn du eine eigene Variable wie hsp oder hspd oder ähnlivhes nutzt, dann nimm diese. Der Code sollte aber am besten direkt bei John im Step sein.
    So kannst du auch gegen den Wind laufen.

    Wenn der Ansatz nicht funktioniert, sende bitte den Code, mit dem du das versucht hast und wie dein Step (gerade die Kollisionserkennung) aussieht.
    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
  • Da Du ja so und so wieder auf fertigen Code wartest, habe ich hier etwas für Dich
    (und diesmal wirklich das letzte mal):

    Shaun Spalding - Plattformer for Beginner

    Wenn man schon nichts selber programmiert, sollte man wenigstens bei den Besten
    klauen und Shaun ist für mich einer dieser Besten.
    Ich habe dieses Beispiel von ihm nur geringfügig modifiziert, um Deinen Wunsch,
    nach Wind, zu realisieren.
    Erstell Dir einen Player, 32x32, Hotspot in der Mitte und eine Wand ebenso. Dann
    zeichnest Du etwa folgendes in den Raum:

    x................................................. x
    x .................................................x
    x ..................................P............. x
    x ..............................x .................x
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

    X ist die Wand und P ist der Player, dann noch folgenden Code kopieren und los gehts.

    Player Create und Step

    Quellcode

    1. /// @description Init Variablen
    2. windmin = 0.2
    3. wind = 0
    4. grav = 0.2
    5. hsp = 0
    6. vsp = 0
    7. movespeed = 5
    8. jumpspeed = 5
    Alles anzeigen



    Quellcode

    1. /// @description Bewegung Player
    2. key_right = keyboard_check(ord("D")) // keyboard_check(vk_right)
    3. key_left = -keyboard_check(ord("A")) // -keyboard_check(vk_left)
    4. key_jump = keyboard_check_pressed(vk_space)
    5. wind -= windmin // wir stellen den Wind an
    6. wind = clamp(wind, 0, -4) // max. Windstärke 4
    7. // react to inputs
    8. move = key_left + key_right
    9. hsp = move * movespeed
    10. if (vsp < 10) {
    11. vsp += grav
    12. }
    13. if (place_meeting(x, y + 1, oWall)) {
    14. if (key_jump) {
    15. vsp = -jumpspeed
    16. }
    17. }
    18. // horizontal collision
    19. if (place_meeting(x + hsp + wind, y, oWall)) {
    20. while (!place_meeting(x + sign(wind), y, oWall)) {
    21. x += sign(wind)
    22. }
    23. hsp = 0
    24. wind = 0
    25. }
    26. x += hsp + wind
    27. // vertical collision
    28. if (place_meeting(x, y + vsp, oWall)) {
    29. while (!place_meeting(x, y + sign(vsp), oWall)) {
    30. y += sign(vsp)
    31. }
    32. vsp = 0
    33. }
    34. y += vsp
    Alles anzeigen

    Das Wand Objekt benötigt keinen Code, sollte allerdings oWall und der Player sollte
    oPlayer, heißen.

    Wenn Dir der Code gefällt, dann laß ein Like bei Shaun und schau Dir ruhig auch seine
    anderen Videos an, könnte sein, dass Du noch was lernst dabei :) .


    Miradur
  • Husi012 schrieb:

    Wichtig ist dabei auch, dass du die Kollisionserkennung mittels hspeed machst. Wenn du eine eigene Variable wie hsp oder hspd oder ähnlivhes nutzt, dann nimm diese. Der Code sollte aber am besten direkt bei John im Step sein.
    So kannst du auch gegen den Wind laufen.

    Wenn der Ansatz nicht funktioniert, sende bitte den Code, mit dem du das versucht hast und wie dein Step (gerade die Kollisionserkennung) aussieht.
    Wirklich im John-Step und nicht im wind-Step?
    Im wind-Step steht jetzt (diesmal der komplett richtige Code):

    GML-Quellcode

    1. JOHN.hspeed += 7;

    Wenn es unbedingt im John-Step sein muss, wie müsste ich das dann im Code schreiben? Einfach nur

    GML-Quellcode

    1. if instance_exists(wind){
    2. JOHN.hspeed += 7;
    3. }

    ?

    Danke




    CinoComeback
  • Husi012 schrieb:

    Wichtig ist dabei auch, dass du die Kollisionserkennung mittels hspeed machst. Wenn du eine eigene Variable wie hsp oder hspd oder ähnlivhes nutzt, dann nimm diese. Der Code sollte aber am besten direkt bei John im Step sein.
    So kannst du auch gegen den Wind laufen.

    Wenn der Ansatz nicht funktioniert, sende bitte den Code, mit dem du das versucht hast und wie dein Step (gerade die Kollisionserkennung) aussieht.
    Komischerweise - wenn man jetzt nach rechts steuert, wird man wieder "langsamer". Wenn man nichts drückt dann wird man EXTREM schnell nach rechts gedrückt. (habe es jetzt auf 1 heruntergestuft)
    Das Problem ist halt, dass wenn man nach rechts geht, dass JOHN dann langsamer geht als mit Wind. Total unlogisch.
    Ich teste es jetzt gerade.

    EDIT:
    Man wird jede Sekunde um einiges schneller, wenn man nichts drückt. Das ist sowas von hart und seltsam. :/

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von CinoComeback () aus folgendem Grund: Geht nicht...

  • Ich kann Dich verstehen, 2 Zeilen Code würde ich auch nicht so einfach wegwerfen oder
    umschreiben und schon gar nicht, für funktionierenden Code :P .

    Btw., noch niemand hat DEINE Kollisions-Routinen gesehen, oder sind die auch in den
    2 Zeilen, die Du gepostet hast, versteckt?
    Wie auch immer, ich geb Dir noch was auf den Weg, Wind summiert sich nicht unendlich,
    er braucht einen maximalen Wert, den er nicht überschreiten darf und wenn der Player
    kollidiert, also an eine Wand gepresst wird, dann solltest Du den Wind abstellen(das ist
    einfacher zu handhaben).

    Träume Paco, träume weiter deinen Traum, aber mit offenen Augen.


    Miradur

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

  • Ehrlich jetzt, Miradur?
    Der Code, den ich momentan benutze besteht aus 40-50 Zeilen (+ wenige Dinge in D&D). Jetzt wirst du hier schon zickig.
    Du widersprichst dir ja selbst. "Btw., noch niemand hat DEINE Kollisions-Routinen gesehen" -> "Ich kann Dich verstehen, 2 Zeielen Code würde ich auch nicht einfach so wegwerfen".
    Tja...
    Na ja, aber das Problem ist, dass das mit dem Collisionzeug glaube ich mit D&D gemacht wurde und sich hier ja keiner damit auskennt.
  • Dann seh ich ganz ehrlich Hopfen und Malz bei dir verloren. Sry...
    Was soll ich machen wenn du es nichtmal schaffst fertigen Code ins Stepevent zu packen.

    GML-Quellcode

    1. hspeed = (A-D)*MovSpeed + WindSpeed*(instance_exists(obj_wind))

    MovSpeed ist einfach nur 4 oder 8 oder wie schnell dein Typ laufen soll Und Windspeed zB 1.
    Wir sagen Bewege nach links/rchts mit movespeed wenn Taste gedrückt und addiere den Wind darauf wenn obj_wind existiert.

    Das kannst du dir jetzt intensiv zu Gemüte führen und mal versuchen zu verstehen oder lass es halt und quengel weiter rum, in dem Fall bin ich hier jedoch raus. Kann nicht sein das hier jeder Poster anscheinend 5x mehr Zeit reinsteckt als du selber.

    "Das klingt irgendwie etwas herausfordernd... " So Posts sind für den A* . Was sollen wir den jetzt daraus entnehmen. Was ist herausfordernd daran, das könnte man doch wenigstens irgendwie definieren?

    Ich kann sehr wohl verstehen das die anderen auch langsam sikkig werden. Selbst wenn du was mit DragnDrop gemacht hast, du kannst mit EINEM MAUSCLICK die Objektinformationen kopieren und hier einfügen, da steht alles drin was wir wissen müssen, keine Ausrede für deine Faulheit an der Stelle.

    Nochmal, bevor mir gleich alle Gesichtszüge entgleiten, mit obigem Code sollst du NICHT deinen Collisionscode ersetzen, den wir ja eh nicht kennen aber du meintest er funktioniert mit hspeed??! Sondern deinen Bewegungscode für links/rechts mit obiger Zeile im Step ersetzen.

    Und jetzt bündel bitte deine 7 Chakras und V E R S U C H E Z U V E R S T E H E N !
    Over and Out.
    132 little bugs in the code. 132 little bugs. Fix a few, set the compiler to stew, 172 little bugs in the code... :vogel:
  • Okay, versuche es mal zu verstehen und gut zu analysieren.

    Rhazul schrieb:

    Dann seh ich ganz ehrlich Hopfen und Malz bei dir verloren. Sry...
    Was soll ich machen wenn du es nichtmal schaffst fertigen Code ins Stepevent zu packen.

    GML-Quellcode

    1. hspeed = (A-D)*MovSpeed + WindSpeed*(instance_exists(obj_wind))

    MovSpeed ist einfach nur 4 oder 8 oder wie schnell dein Typ laufen soll Und Windspeed zB 1.
    Wir sagen Bewege nach links/rchts mit movespeed wenn Taste gedrückt und addiere den Wind darauf wenn obj_wind existiert.

    Das kannst du dir jetzt intensiv zu Gemüte führen und mal versuchen zu verstehen oder lass es halt und quengel weiter rum, in dem Fall bin ich hier jedoch raus. Kann nicht sein das hier jeder Poster anscheinend 5x mehr Zeit reinsteckt als du selber.

    "Das klingt irgendwie etwas herausfordernd... " So Posts sind für den A* . Was sollen wir den jetzt daraus entnehmen. Was ist herausfordernd daran, das könnte man doch wenigstens irgendwie definieren?

    Ich kann sehr wohl verstehen das die anderen auch langsam sikkig werden. Selbst wenn du was mit DragnDrop gemacht hast, du kannst mit EINEM MAUSCLICK die Objektinformationen kopieren und hier einfügen, da steht alles drin was wir wissen müssen, keine Ausrede für deine Faulheit an der Stelle.

    Nochmal, bevor mir gleich alle Gesichtszüge entgleiten, mit obigem Code sollst du NICHT deinen Collisionscode ersetzen, den wir ja eh nicht kennen aber du meintest er funktioniert mit hspeed??! Sondern deinen Bewegungscode für links/rechts mit obiger Zeile im Step ersetzen.

    Und jetzt bündel bitte deine 7 Chakras und V E R S U C H E Z U V E R S T E H E N !
    Over and Out.