Jump 'n Run - Durch Block hindurch fallen

  • GM 8

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

  • Jump 'n Run - Durch Block hindurch fallen

    Hallo alle zusammen!
    Ich hab da mal ne Frage.
    Mein Jump 'n Run Spiel baut auf der Platform Engine von Thodd auf und ich möchte, dass es Blöcke gibt durch die man durchfallen kann, wenn eine bestimmte variable gesetzt wird. Ich weiß dass ich für diesen Zweck einfach "Solid" an, bzw. aus stellen kann, jedoch sollen noch andere Spieler darüber laufen können. Die Abfrage, die verhindert dass man durch einen Block durchfällt ist folgende:

    GML-Quellcode

    1. if (place_free(x,y + max(global.gravitySpeed,global.gravityForce)))//if there is no object beneath

    Ich Denke dass man die irgendwie um eine Variablenabfrage erweitern müsste, jedoch weiß ich beim besten Willen nicht, wie ich von diesem Objekt aus auf die Variable des anderen zugreifen kann, da ich ja nicht Pauschal eine ID angeben kann, da es ja für alle Objekte auf denen man laufen kann gelten soll.
    Ich hoffe das war jetzt einigermaßen verständlich.
    Vielen Dank für jegliche hilfe!
    Partik.
  • Es gibt die Funktion instance_place(x,y,obj). Damit kannst du genau die ID (nicht zu verwechseln mit dem "index" einer Objektart!) des Blocks an der angegebenen Stelle ausgeben lassen und abfragen ob dieser Block für das Spieler-Objekt durchlässig ist oder nicht.

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • Das ist... PERFEKT! Dankeschön, ich probiers gleich mal aus!
    EDIT: Ich hab mir mal die hilfe dazu durchgelesen, und hab eine Frage. Wenn ich da eine Abfrage mache à la "instance_place(5,5,objX)" gibt er dann nur eine ID zurück, wenn eine Instanz von objX auf der Position (5,5) liegt, oder auch wenn das zugewiesene Sprite noch bis zu dieser Position reicht?

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

  • Soweit ich das verstanden habe ja. Die Funktion nutzt die kolisions-masken bzw. die Sprites der Objekte und simuliert also so dass die aufrufende Instanz an der angegebenen Position wäre und gibt aus mit welcher anderen Instanz kolidiert.
    Alternativ kannst du es mit der Funktion instance_position(x,y,obj) versuchen. Diese funtioniert unabhängig vond em Sprite der aufrufenden isntanz und gibt einfach die Id der Instanz an dem übergebenen Punkt an.

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • Habs eingebaut, und funktioniert! Dankeschön DragonGamer
    Also, funktionieren tut es zwar, jedoch nur teilweise. Sind nun mehrere Blöcke auf einer Position, die jeweils für einen anderen Spieler durchlässig sind, kommt es zum Chaos!
    Da die Funktion"instance_place" nur die erste gefundene Instanz berücksichtigt fallen Spieler durch Böden, die für sie eigentlich undurchdringbar sein sollten. Hat jemand eine Idee wie ich das lösen kann?

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

  • Hm, du könntest entweder das machen und unterschiedliche Objekte für jeden SPieler verwenden... Oder die Sache umdrehen und anstelle im SPieler nach dem Block abzufragen, fragst du einfach im Block ob über ihn grad der Spieler steht. Mit dem with-statement kannst du denn beim spieler eine Variable setzen die dafür sorgt dass der Spieler nicht auf dem Block stehen kann.

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • Partik schrieb:

    Gibt es denn eine möglichkeit, Alle Instanzen einer Position abzufragen?

    Leider nicht (so direkt).
    Was du machen kannst ist mit with durch alle Blöcke durchzu loopen und dann jeweils abzufragen ob sie sich selbst an der bestimmten position befinden. Dazu kannst du die position_meeting(x,y,obj) verwenden da du anstelle des obj-Arguments die einzigartige id des Blocks selbst eingeben kannst.
    Je nachdem wie viele Blöcke jedoch im Raum sind, kann dies viel rechenleistung kosten!

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • Benutzer online 1

    1 Besucher