Versch. Instanzen (aber gleiches Objekt) schießt nach unterschiedlicher Zeit

  • GM 7

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

  • Versch. Instanzen (aber gleiches Objekt) schießt nach unterschiedlicher Zeit

    Hi, ich möchte, dass das gleiche Objekt, aber unterschiedliche Instanzen davon, nach einer zufälligen Zeit ein Objekt losschiessen, ich weiß, dass ich das mit variablen und Alarmen machen kann, aber es gibt ja nicht unbegrenzt versch. Alarme und das wär auch sonst ziemlich aufwendig, deswegen wollte ich fragen, ob es da ne Alternative gibt?

    Bsp:

    Es gibt Instanz1, Instanz2, ..., Instanz5 von einem bestimmten Objekt.

    - Instanz 1 schiesst nach zufällig 2-5 Sekunden
    - Instanz 2 schiesst nach zufällig 5-8 Sekunden
    - Instanz 3 schiesst nach zufällig 1-4 Sekunden
    - Instanz 4 schiesst nach zufällig 7-10 Sekunden
    - Instanz 5 schiesst nach zufällig 9-12 Sekunden

    Weiß jemand wie man das so einfach wie möglich macht?
    Gruß Gamer
  • Was mir dazu einfallen würde, wäre das du es so machst, das du ein Event machst, das innerhalb von 5 frames die 5 Objekte nacheinander macht.Das sieht dann so aus als wären sie schon immer da.

    Die einzelnen Instancen lässt du prüfen als wievielte sie gemacht wurde, indem du sobald eine gemacht wird eine globale variable immer um eins erhöhst.Vor der Erhöhung lässt du den Timer auf die Zeit einstellen die du den Events zuweist:



    Im Objekt:



    {

    if global.instanznummer = 0

    {

    alarm[0] += 5

    global.instanznummer += 1

    }

    if global.instanznummer = 1

    {

    alarm[0] += 8

    global.instanznummer += 1

    }

    if global.instanznummer = 2

    {

    alarm[0] += 4

    global.instanznummer += 1

    }

    if global.instanznummer = 3

    {

    alarm[0] += 10

    global.instanznummer += 1

    }

    if global.instanznummer = 4

    {

    alarm[0] += 12

    global.instanznummer += 1

    }
  • Mach einfach ein neues Objekt und lass von dem aus die Instanzen erstellen.

    GML-Quellcode

    1. var i,inst;
    2. i=2
    3. repeat (5)
    4. {
    5. inst=instance_create(x,y,obj);
    6. inst.stime=i;
    7. i+=3;
    8. }


    Damit hast du jeder Instanz eine Andere Startzeit zugewiesen den Rest kannst du dann in den Instanzen regeln indem du eben stime abfragst bzw miteinbeziehst.

    © 2008 by Teamgrill Productions
  • stime ist die schussfrequenz

    um das ganze ein wenig abzuschlacken:
    hier im beispiel sind mindestens 6 sekunden + 6 weitere sekunden die variieren können (also 6-12 sekunden)

    GML-Quellcode

    1. // beim erstellen des objektes
    2. schussfrequenz = 6 + random(6)


    Dann machst du einfach einen Alarm welcher sich mit dieser zeit zurücksetzt
  • Ich blicks irgendwie nicht richtig, also ich hab das so verstanden:

    Code von MasterXY
    Es wird 5 mal des gleiche Objekt erstellt und bei jedem mal wird das i um 3 erhöht, also das erste objekt schießt nach 3, dann das 2. nach 6, dann 9, usw.

    Stimmt das so?

    Aber ich blick nicht, was das mit dem Code von Durean zu tun hat und wie muss ich da ein Alarm-Event machen??


    Sorry, aber ich blicks grad irgendwie nich.
    Gruß Gamer
  • mach im objekt den alarm[0]=1 und im alarm[0] schreib dann

    GML-Quellcode

    1. alarm[1]=(stime+random(3))*room_speed

    das bewirkt dass es in sekunden gezählt wird und im alarm[1] musst du dann eben den Schusscode ausführen.

    © 2008 by Teamgrill Productions
  • MasterXY schrieb:

    ja aber im create event is die variable noch net verfügbar.
    Wieso nicht?


    Muss der Code nicht ins Create Event:

    MasterXY schrieb:

    GML-Quellcode

    1. var i,inst;
    2. i=2
    3. repeat (5)
    4. {
    5. inst=instance_create(x,y,obj);
    6. inst.stime=i;
    7. i+=3;
    8. }

    Gruß Gamer
  • welche variable ist im create event noch nocht verfügbar?

    mach einfach im create event alarm[0]=random(...); was dau hal willsd,

    und im alarm event:

    {

    schuss.... was du hal brauchst

    alarm[0]=random(...) was du hal brauchst

    }
  • Wenn du im Create Event des Controllers, der die Instanzen erstellt, diesen Code ausführst, erstellt er die Instanzen und übergibt ihnen eine Variable. Da die Variable erst nach dem erstellen übergeben wird, ist sie im Create Event der erstellten Instanz noch nicht aufrufbar und deshalb setzt man den alarm[0] auf 1, damit nach 1 Step erst die Variable überprüft wird.

    © 2008 by Teamgrill Productions
  • ja das gleiche objekt aber nicht die gleiche instanz !

    verstehst du das nicht? oder hab ich nen denkfehler?

    er will nehm ichmal an dass verschiedene gegner schießen, und zwar sind alle gegbner vom typ obj_gegner oder so , aber natürlich sind die instanzen verschieden, völlig logisch, 2 instanzen vom selben objekt sind deswegen nicht auch gleich.

    und jede instanz führt im create event mein code aus, der im ein und dem selben object geschrieben steht.

    und das hat mit objekte erstellen nichts zu tun, das gilt für genau DIE instanzen mei code die schon existieren, ein weiteres erstellen von objekten ist doch garnicht nötig.

    dein satz: "..zu festgelegten unterschiedlichen zeiten..." trifft völlig zu auf mienen code wenn man (ich weiß j anicht so genau was er will) im create event das random() in eine variable speichert und diese dann im alarm - event benutzt statt erneutes random()
  • ja aber für meine code völlig unnötig, man muss ja nur um "cool" zu sein einen controller erstellen de rnutzlose sachen rechnet, nützliche sachen darf er natürlich rechnen aber unnötige sachen?

    also wenn mir jmd sagt mein code ist falsch weil er kein controlelr objekt hat dann ist das völliger schwachsinn! für andere gründe warum mein code als falsch oder nciht-funktionierend angesehen wird bin ich sehr offen, aber nicht für gründe wie "weils hal spasß macht n controller zu haben"
  • Er will aber dass sie zu einer bestimmten Zeit schießen und nur Random eingeschränkt benutzen. Lies mal seinen ersten Post genau durch vll verstehst du es dann. ein Random im Create Event bewirkt nicht, dass die erste Instanz nach 2-5 Sekunden schießt und die zweite nach 5-8 usw. Darum muss man über ein Controllerobjekt den Instanzen eine Variable zuweisen die bestimmt wie lang die Schusspause dauern soll.

    © 2008 by Teamgrill Productions