Solid / 32px Schritte mit Sprite/Player

  • GM 8

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

  • Solid / 32px Schritte mit Sprite/Player

    Guten Abend,

    Ich bin hier so ziemlich neu und hab soweit versucht alles allein hinzubekommen wie ich kann.
    Leider hat jeder Grenzen, also hoffe ich hier eure Hilfe zu bekommen ( :

    Und zwar:

    Ich habe einen Player [32x32], soweit eingestellt, dass der in alle Richtungen läuft
    und bei festen Objekten nicht weiter gehen kann.

    Zum testen habe ich einen Baum [64x64] in 4 mal [32x32] unterteilt. Die Sprite mit dem Baumstamm
    ist "solid" eingestellt. Da sollte der Player möglichst bei der ganzen Sprite .. also [32x32] nicht
    weiterlaufen können.
    Bei einem Test kann dieser leider bis zum Rand des Baumstamms laufen.
    Was kann ich machen?

    Ein weiteres Problem habe ich bei der Bewegung des Players.
    Ist es möglich, dass der Player 32px Schritte läuft?

    Beispiel:
    Rechte Richtungstaste gedrückt = Player läuft normal.
    Rechte Richtungstaste losgelassen = Player läuft die restlichen 32px zuende.

    [So nebenbei: ich denke das könnte auch mein erstes Problem lösen, da das Objekt Player
    x pixel in der laufrichtung überprüft ob ein Hinderniss vorhanden ist. Wenn ich aber weiter
    überlege müsste ich in dem Fall x auf 32 setzen und diese prüfung nur nach jedem 32px schritt
    machen, da die Hindernisse verschiedene Koords in einer Sprite gepixelt sein können.]


    Ich hoffe ich verlange nicht zuviel, ich fordere auch nicht unbedingt fertige scripts.
    Bis jetzt habe ich nicht sehr viel mit scripts gearbeitet. Ich hoffe ihr könnt mir trotzdem
    helfen^^


    Mit freundlichen Grüßen,
    Unistyle
  • Hmn, ich glaube ich habe mich zu ungenau ausgedrückt ... also soweit, dass der 32px
    in der Richtung nach "Solid" abcheckt hab ich ja.

    Ich meinte nicht, dass der sich immer um 32px verschiebt (Der soll sich ja noch flüssig bewegen).
    Beim laufen soll der Player nicht auf genau dem Platz stehen bleiben, es sei denn
    er bleibt in einem 32px schritt stehen.

    Rrrr ... wenn ich jetzt weiter schreibe verwirr ich mich nur selbst ^^
    Ich zeig euch mal ein Video von einem 2D Mmorpg, welches ich mir als Beispiel nehme: Tibia-Video

    Das Video wurde ein bisschen schneller aufgenommen als es eigentlich ist, aber ich hoffe
    damit kann ich das Prinzip was ich meine deutlicher machen.


    mfg

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

  • Unistyle schrieb:

    Hmn, ich glaube ich habe mich zu ungenau ausgedrückt ... also soweit, dass der 32px
    in der Richtung nach "Solid" abcheckt hab ich ja.

    Ich meinte nicht, dass der sich immer um 32px verschiebt (Der soll sich ja noch flüssig bewegen).
    Beim laufen soll der Player nicht auf genau dem Platz stehen bleiben, es sei denn
    er bleibt in einem 32px schritt stehen.

    Rrrr ... wenn ich jetzt weiter schreibe verwirr ich mich nur selbst ^^
    Ich zeig euch mal ein Video von einem 2D Mmorpg, welches ich mir als Beispiel nehme: Tibia-Video

    Das Video wurde ein bisschen schneller aufgenommen als es eigentlich ist, aber ich hoffe
    damit kann ich das Prinzip was ich meine deutlicher machen.


    mfg

    Fail? Wenn ich auf den Link des Videos klicke komme ich auf den Anfang der Seite. xD
  • Sry, dass ich bis jetzt nicht geantwortet habe, aber hatte einiges zu tun^^

    @up
    Ja, so hab ich mir das vorgestellt, nur kann man bei deinem script leider bei mehreren
    freien Feldern die Richtung ändern, bevor der Player 32 px gelaufen ist.
    Der Ansatz hat mir trotzdem geholfen, danke :)

    Zu meiner Lösung, falls jemand wissen möchte wie das geht:

    Create Event:
    :action_code:

    GML-Quellcode

    1. bewegen=0;
    2. weg=0;
    3. blocken=0;


    Step Event:
    :action_code:

    GML-Quellcode

    1. if bewegen=1
    2. {
    3. if weg=32
    4. {
    5. bewegen=0;
    6. speed=0;
    7. weg=0;
    8. blocken=0;
    9. }
    10. else
    11. {
    12. weg+=1;
    13. }
    14. }
    Alles anzeigen


    Keyboard Event for <left> key:
    :action_ifvariable: If speed is equal to 0
    :action_iffree: x: -32 | y: 0
    :action_begin:
    :action_code:

    GML-Quellcode

    1. if blocken=0
    2. {
    3. direction=180;
    4. speed=1;
    5. bewegen=1;
    6. blocken=1;
    7. }

    :action_jumpposition: x: -2 | y: 0
    :action_end:

    Dazu müsst ihr die anderen Richtungen dementsprechend kopieren und umändern ^___^
    Soviel dazu ... ich hoffe das hilft einigen, wenn sie das selbe versuchen :p


    mfg
  • Oh du hast Recht das darf natürlich nicht passieren! Ich wundere mich nur weil ich ja dafür Extra die Variable Blocker eingebaut habe. xD
    Wenn ich wieder an meinem PC bin der GM drauf hat werde ich mal kucken was ich machen kann.
    MFG Rohkar

    PS: 7 Leute haben es gedownloadet ... ich finde das lustig! xD
  • Naja, ich weiß auch nicht wies deins nicht funktioniert hat.
    Bis auf eine Sache hat es das ja eig. :p

    Also ich habs jetzt hingekriegt, aber wenn du deins überarbeiten willst,
    mach das ^'^
    Hehe, schon lustig xD
    Haben sich wohl mehrere dafür interessiert ;D


    mfg