Kollision in einem Script zusammenfassen

  • GM 8
  • Kollision in einem Script zusammenfassen

    Und noch eine Frage :)
    Ich habe versucht die Kollisionen in einen Script zusammenzufassen. Aber es hat nur "halb" funktioniert (der Spieler hat nur an bestimmten Plätzen gestoppt (nur oben und unten)). Da ich nicht immer so viele "Collision"-Events :event_collision: haben möchte, wollte ich sie halt in einem Script zusammengefasst. Wie lautet der Script dafü? Danke schonmal im Vorraus ♥

    MfG Clark

    DigitalClark
  • Hi,

    folgendes wäre ne Variante:

    GML-Quellcode

    1. if ( place_meeting( x, y, obj_blah ) )
    2. {
    3. x = xprevious
    4. //und/oder
    5. y = yprevious
    6. }


    Greetz
    Es gibt viel zu tun, packen wir´s an !!!
    Für Rechtschreibfehler sind die verantwortlich, die sie entdecken :P.
  • Hi,

    Step Event:

    GML-Quellcode

    1. scr_move();


    scr_move:

    GML-Quellcode

    1. //Movement
    2. //Links
    3. if keyboard_check(vk_left) = true
    4. {
    5. x-=sp
    6. }
    7. //Rechts
    8. if keyboard_check(vk_right) = true
    9. {
    10. x+=sp
    11. }
    12. //Hoch
    13. if keyboard_check(vk_up) = true
    14. {
    15. y-=sp
    16. }
    17. //Runter
    18. if keyboard_check(vk_down) = true
    19. {
    20. y+=sp
    21. }
    22. //Collision check
    23. if distance_to_object(wall_parent)< 0.1
    24. {
    25. x=xprevious
    26. y=yprevious
    27. }
    Alles anzeigen


    Das funzt bei mir 100%! Alle Objekte die "wall_parent" als Parent haben, sind nicht durchlaufbar!

    Greetz
    Es gibt viel zu tun, packen wir´s an !!!
    Für Rechtschreibfehler sind die verantwortlich, die sie entdecken :P.
  • Also so wie ich das sehe steht "sp" für die Geschwindigkeit wie schnell sich der Spieler bewegt. Das ist einfach eine Zahl. Ich für meinen Teil nehm als Speed meist 4.. Kannst du aber auch ändern.

    MfG Rodrog
    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Ergo: Je mehr Käse, desto weniger Käse.
  • Hi,

    Rodrog schrieb:

    Also so wie ich das sehe steht "sp" für die Geschwindigkeit wie schnell sich der Spieler bewegt. Das ist einfach eine Zahl. Ich für meinen Teil nehm als Speed meist 4.. Kannst du aber auch ändern.

    MfG Rodrog
    Ganz genau! Ich dachte nicht, dass ich das erklären muss. Im Create Event des Spieler Objekts habe ich:

    GML-Quellcode

    1. //sp steht für Speed
    2. sp = 4

    Wie gesagt bei mir funzt das einwandtfrei. Zudem ging es ja hier nicht um Movement sondern um Collision in einem Script.

    Folgend noch ne "andere" Alternative:
    Wenn du tatsächlich zu viele Collision-Events hast, die eh alle das selbe tun, erstelle einfach ein Parent Objekt(wie ich auch schon erwähnt hatte), und verknüpfe alle Objekte, die der Spieler nich durchgehen darf, mit diesem Objekt(Einzustellen in den Objekt Properties). In diesem Parent Objekt erstellst du einfach ein Collision-Event, dass sich auf das Spieler Objekt bezieht.

    Da machste ein Piece of Code rein:

    GML-Quellcode

    1. //obj_player = Name deines Spieler-Objekts
    2. obj_player.x=obj_player.xprevious
    3. obj_player.y=obj_player.yprevious

    Und es funzt genauso!

    Edit: Hab mal 2 samples hinzugefügt. Ist zwar GM6 aber solltest dennoch öffnen können.

    Greetz
    Dateien
    • collision.zip

      (4,99 kB, 181 mal heruntergeladen, zuletzt: )
    Es gibt viel zu tun, packen wir´s an !!!
    Für Rechtschreibfehler sind die verantwortlich, die sie entdecken :P.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Black-Mask ()

  • Benutzer online 1

    1 Besucher