Instanz eines Objekts relativ zum Spieler via GML

  • GM 8

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

  • Instanz eines Objekts relativ zum Spieler via GML

    Hallo Community,

    ich habe mir vor einigen Tagen den GM8 gekauft und habe bereits Erfahrung mit anderen Tools wie DX Studio und Torque. Ich habe auch einiges an Erfahrung mit C++ ( +SFML) und C# (+XNA). Allerdings ist mir das alles viel zu zeitaufwändig geworden, seitdem ich arbeiten gehe :(. Daher bin ich dann irgendwann auf Autorensysteme wie eben DX Studio und Torque umgestiegen. Beide lassen sich aber nur schwer für 2D Spiele verwenden. Deswegen nun der GameMaker, der wirklich vielversprechend aussieht.

    Soweit zu mir (damit ihr in etwa einschätzen könnt, wieviel Fachjargon ihr mir zumuten könnt ;)), nun zu meiner Frage:
    Ich bin gerade dabei die Steuerung für mein Spiel zu realisieren. Allerdings bin ich noch nicht so ganz dahintergestiegen, wie die GML aufgebaut ist, etc. .

    Die Figur soll in 8 Richtungen laufen, soweit kein Problem. Wenn man Space drückt, soll sie entsprechend "zuschlagen". Dafür will ich extra Objekte verwenden, die dem Gegner dann, bei einer Kollision, Energie abziehen/diese töten.
    Größtenteils habe ich jetzt alles via Drag and Drop gemacht, allerdings stößt man da relativ schnell an diverse Grenzen. Ich denke, dass es dafür besser wäre das alles per Script zu realisieren.
    Nur habe ich hierbei ein Problem:

    Wie kann ich auf die aktuelle Position des Objektes/Spielers zugreifen ( Press Space -> Execute Script), sodass ich das Objekt immer an der Position des Spielers erzeugen kann?
    combobreaker.de - Indiegame Blog, News und Tests
  • Die aktuelle Position einer Instanz ist immer in den Variablen x und y (beide vom GM vorgegeben) gespeichert. Position 0:0 ist immer die linke obere Ecke, x wird also nach rechts größer, y nach unten. Wenn dein Script im Spieler-Objekt ausgeführt wird, reicht es einfach, zu schreiben instance_create(x,y,dein_objekt), wenn das Script von einem anderen Objekt ausgeführt wird, kannst du mit obj_player.x und obj_player.y auf die Variablen des Objektes obj_player zugreifen (die konkreten Objektnamen müssen natürlich angepasst sein).
    Das Ganze geht eigentlich auch mit Drag&Drop, da du beispielsweise im Fenster von create instance bei x: auch eine Funktion oder Variable statt einer einfachen Zahl eingeben kannst.