object_add benutzen

  • GM 8
  • object_add benutzen

    Hey :D Ich hab schon in der Hilfe nachgeschaut, aber hier meine Frage:
    Wie kann man

    GML-Quellcode

    1. object_add()
    benutzen (Objekt Namen geben, Mit "instance_create" nutzen, Duplizieren, Löschen). Ich wollte nämlich, wenn man mit der Maus klickt, dass dann ein Objekt mit dem Namen "instance" + 1 (also wenn man denn ein zweites mal klickt soll es instance2 heißen), dass es ein bestimmtes Sprite hat (dass kan ich ja mit "object_set_sprite(ind,spr)" machen) und halt Events hinzufügen kann. Außerdem möchte ich das Objekt auch noch duplizieren, aber da es kein "object_duplicate(instance1, instance1 + 1) gibt, möchte ich nach alternativen fragen.
    MfG Das Pony das rückwärts rennt :huh:
  • object_add funktioniert ungefähr so wie file-Funktionen.
    Du gibst eine Variable an, die das Objekt "enthält", also z.b.: instance1=object_add()
    Ab dem Punkt existiert ein Objekt namens instance1. Du musst aber darauf achten, da es eine Variable ist, dass du den Typ der Variable berücksichtigst. In dem Bsp von gerade eben, müsstest du wenn du auf "instance1" per objekt-Funktion zugreifen willst, immer den Namen von dem Objekt, von dem du das Objekt createt hast, und den .-Operator anhängen, also z.B.: object_set_sprite(object.instance1,sprite1)
    Deswegen empfiehlt es sich, dafür globale Variablen zu benutzen.

    Ich hoffe ich konnte es einigermaßen verständlich erklären ^^
  • Trixt0r schrieb:

    Echt ma, benutze die Suche oder die Doku auf Yoyogames (klick).
    object_event_add(object_index, eventtype, eventtype, codestring) ist das was du suchst.

    MfG


    Ja ich kenn den code...
    Gleich geht's weiter aber lasst mich einmal was sagen: Das nervt, wenn man Fragen stellt und auch Hilfe bekommt, aber immer gleich angemotzt wird, wenn einer ein Anfänger ist. Nurmal so.
    Darf ich ein Beispiel haben?
  • GML-Quellcode

    1. object_event_add(ind,evtype,evnumb,codestr)

    "ind" steht für den Name von dem betreffenden Objekt.

    "evtype" steht für den Typ des Events. Eine Liste der Events in GML gibts hier .

    "evnumb" steht für ein "Unterpunkt" von "evtype",
    z.B. um Alarm0 anzugeben, würde bei "evtype" ev_alarm und bei "evnumb" 0 stehen. Bei Kollisionen würde bei "evnumb" das Objekt stehen, mit dem man kollidiert.
    Wenn es kein Unterpunkt gibt, schreibt man einfach 0 hin.

    "codestr" ist der Code, der hinzugefügt wird (muss ein String sein)


    Beispiel:

    GML-Quellcode

    1. globalvar objektneu;
    2. objektneu=object_add()
    3. object_event_add(objektneu,ev_create,0,"sprite_index=sprite1")
    4. object_event_add(objektneu,ev_step,ev_step_normal,"x+=1")
    5. object_event_add(objektneu,ev_collision,obj_collision,"instance_destroy()")
  • -$Marvin$- schrieb:

    GML-Quellcode

    1. object_event_add(ind,evtype,evnumb,codestr)

    "ind" steht für den Name von dem betreffenden Objekt.

    "evtype" steht für den Typ des Events. Eine Liste der Events in GML gibts hier .

    "evnumb" steht für ein "Unterpunkt" von "evtype",
    z.B. um Alarm0 anzugeben, würde bei "evtype" ev_alarm und bei "evnumb" 0 stehen. Bei Kollisionen würde bei "evnumb" das Objekt stehen, mit dem man kollidiert.
    Wenn es kein Unterpunkt gibt, schreibt man einfach 0 hin.

    "codestr" ist der Code, der hinzugefügt wird (muss ein String sein)


    Beispiel:

    GML-Quellcode

    1. globalvar objektneu;
    2. objektneu=object_add()
    3. object_event_add(objektneu,ev_create,0,"sprite_index=sprite1")
    4. object_event_add(objektneu,ev_step,ev_step_normal,"x+=1")
    5. object_event_add(objektneu,ev_collision,obj_collision,"instance_destroy()")

    BAM! Danke das ist klasse! Kann man auch irgendwie

    GML-Quellcode

    1. object_event_add(objektneu,ev_create,0,"sprite_index=sprite1|instance_destroy()")
    machen, damit man mehrere Codes einfügen kann?
  • Tice schrieb:

    Du kannst mehrere Anweisungen in einer Zeile schreiben mit Leerzeichen oder einem ;

    GML-Quellcode

    1. object_event_add(objektneu,ev_create,0,"sprite_index=sprite1; instance_destroy()";)


    Ach deswegen muss man immer ";" machen :D
    Epic.
    P.S.:


    EDIT: Und noch eine Frage: Kann man ein Objekt irgendwie aktivieren und deaktivieren, sodass es wartet bis z.B. irgendeine Taste gedürckt wurde. Donkey.

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

  • Zuerst mal zu deiner Frage: Deaktivieren geht natürlich, aber die Reaktivierung müsstest du dann über ein anderes Objekt handhaben - eine deaktivierte Instanz führt keinerlei Code mehr aus und kann sich deswegen auch nicht eigenständig reaktivieren.

    Und nun mal was nebenbei: Hier meckert bestimmt niemand rum, weil du Anfänger bist. Es kommen hier in (mehr oder weniger) regelmäßigen Zeitabständen Anfänger rein und die werden ja auch nicht angemeckert. Wofür du hingegen generell immer angemeckert wirst, ist das Fehlen von Eigenständigkeit. Grade beim Programmieren ist es nämlich ziemlich hinderlich, sich nur immer komplett auf die Arbeit anderer zu verlassen und nichts selbst zu machen. Dein Verhalten weiter oben entsprach genau diesem Muster. Du hast dich erst zufrieden gegeben, als Marvin dir den Code vorgekaut hat. Wie die Reaktionen auf sowas in der Regel ausfallen, weißt du ja nun.
    Ein Problemchen, für das du in der Hilfedatei auch gut die passenden Funktionen findest, selbst zu lösen hat noch niemandem das Rückgrat gebrochen. ;)

    Und P.S.
    Wär's vielleicht drin, den TF2-Spam ein bisschen zurückzufahren? Ist ein klasse Spiel, schon klar, aber in den lösungsorientierten Technikthreads behindert sowas nur die Lesbarkeit - bedenke bitte, dass gelöste Fragen als Lektüre für nachkommende User dienen, die ähnliche Probleme haben. Dein Thread könnte also in 3 Jahren jemand anderem von der Suchfunktion ausgespuckt werden und der würde sich dann erstmal ne neue linke Augenbraue ranoperieren lassen müssen, weil er sie so weit hochgezogen hätte, dass sie ihm senkrecht von der Stirn geschossen wäre. Bildlich dargestellt.
    Alles klar? Na dann.
  • Benutzer online 1

    1 Besucher