Random Spawner[Erledigt]

  • GM 8

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

  • Random Spawner[Erledigt]

    Hey
    Ich habe ein Problem mit meinem random Enemy spawner und zwar hab ich ein Objekt Names obj_spawner 5 mal auf der Map verteilt und mochte das immer random ein obj_enemy_1 gespawnt wird aber irgendwie erstellt er den ersten gegner immer bei den selben obj_spawner und nicht random.


    in Arlam[0] steht:
    instance_create(x,y,obj_enemy_1);
    alarm[0] = irandom_range(250,350)

    kann mir einer verraten warum er immer bei der selben stelle zuerst einen spawnt? und die kommenden spawnen immer in eine Reihenfolge und nie random. (von links nach rechts und wieder von vorne immer mit den selben muster)

    Hoffe einer kann mir helfen , danke :)

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

  • //EDIT

    Ich hab das mal nachgemacht. Und tatsächlich funktioniert das nicht.
    Das Objekt spawnt immer an der gleichen Stelle.

    obj_enemy
    CREATE :event_create:

    GML-Quellcode

    1. randomize();
    2. x = choose(100,300,500);
    3. y = 100;
    4. alarm[0] = 300;


    ALARM[0] :event_timer:

    GML-Quellcode

    1. instance_create(x,y,obj_enemy);
    2. alarm[0] = 300;

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von Michaelp800 ()

  • kann mir einer verraten warum er immer bei der selben stelle zuerst einen spawnt? und die kommenden spawnen immer in eine Reihenfolge und nie random. (von links nach rechts und wieder von vorne immer mit den selben muster)

    Weil du genau das dem Spawner vorgeschrieben hast zu tun ;)

    GML-Quellcode

    1. instance_create(x,y,obj_enemy_1);
    2. alarm[0] = irandom_range(250,350)


    Er spawnt genau an der Stelle wo du den Spawner platziert hast.

    Wenn du willst, dass er wo anders spawnt musst du bei instance_create die x und y Koordinate ändern.

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

  • Funcestor schrieb:

    kann mir einer verraten warum er immer bei der selben stelle zuerst einen spawnt? und die kommenden spawnen immer in eine Reihenfolge und nie random. (von links nach rechts und wieder von vorne immer mit den selben muster)

    Weil du genau das dem Spawner vorgeschrieben hast zu tun ;)

    GML-Quellcode

    1. instance_create(x,y,obj_enemy_1);
    2. alarm[0] = irandom_range(250,350)


    Er spawnt genau an der Stelle wo du den Spawner platziert hast.

    Wenn du willst, dass er wo anders spawnt musst du bei instance_create die x und y Koordinate ändern.

    Ich hab es auch mit dem Code von Michaelp80042 versucht aber er spawnt die Gegner immer in eine Reihenfolge und nicht Random
  • Michaelp800 schrieb:

    //EDIT

    Ich hab das mal nachgemacht. Und tatsächlich funktioniert das nicht.
    Das Objekt spawnt immer an der gleichen Stelle.

    obj_enemy
    CREATE :event_create:

    GML-Quellcode

    1. randomize();
    2. y = 100;
    3. alarm[0] = 300;


    ALARM[0] :event_timer:

    GML-Quellcode

    1. instance_create(choose(100,300,500),y,obj_enemy);
    2. alarm[0] = 300;


    So besser?

    (Da die x-Koordinate im Create Event nur einmal als random definiert wurde, und im Alarm - Event von dieser Koordinate ausgegangen wird - kann das Ergebnis einfach nicht anders sein als die bereits gesetzte x Koordinate)
  • Fin schrieb:

    Michaelp800 schrieb:

    //EDIT

    Ich hab das mal nachgemacht. Und tatsächlich funktioniert das nicht.
    Das Objekt spawnt immer an der gleichen Stelle.

    obj_enemy
    CREATE :event_create:

    GML-Quellcode

    1. randomize();
    2. y = 100;
    3. alarm[0] = 300;


    ALARM[0] :event_timer:

    GML-Quellcode

    1. instance_create(choose(100,300,500),y,obj_enemy);
    2. alarm[0] = 300;


    So besser?

    (Da die x-Koordinate im Create Event nur einmal als random definiert wurde, und im Alarm - Event von dieser Koordinate ausgegangen wird - kann das Ergebnis einfach nicht anders sein als die bereits gesetzte x Koordinate)

    Nööp. Das hab ich auch schon ausprobiert. Geht nicht. :D
  • Schon mal so probiert?

    GML-Quellcode

    1. yy = 100
    2. xx = choose(100,300,500)
    3. instance_create(xx, yy ,obj_enemy);
    4. alarm[0] = 300;


    Edit: Gerade gesehen das es geschafft hast :) Wie den nun?

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

  • Mit Parents und switch:

    obj_spawner_settings:
    Create event:
    wave = 1
    global.spawned = 0


    Step event
    switch (wave)
    {
    case 1:
    if global.spawned = 0{
    timer=irandom_range(250,350)+irandom(50)
    alarm[0]= timer
    global.spawned = 1
    }
    break;
    }


    alarm 0 :
    randomize()
    spawner_point = irandom_range(1,3)
    switch (spawner_point)
    {
    case 1:
    e = instance_create(obj_spawn_point.x,obj_spawn_point.y,obj_enemy_1)
    global.spawned = 0
    break;
    case 2:
    e = instance_create(obj_spawn_point2.x,obj_spawn_point2.y,obj_enemy_1)
    global.spawned = 0
    break;
    case 3:
    e = instance_create(obj_spawn_point3.x,obj_spawn_point3.y,obj_enemy_1)
    global.spawned = 0
    break;



    EDIT: ODER


    spawner[0] = obj_spawn_point
    spawner[1] = obj_spawn_point2
    spawner[2] = obj_spawn_point3
    spawner[3] = obj_spawn_point4

    enemy[0] = obj_enemy_1
    enemy[1] = obj_enemy_2
    -------------------------------------------------
    randomize()
    e = instance_create(spawner[irandom_range(0,3)].x,spawner[irandom_range(0,3)].y,enemy[irandom_range(0,1)])
    global.spawned = 0


    Game Start Event:
    randomize()


    und halt 3 leere obj_spawn_point - obj_spawn_point3 mit dem parent ->obj_spawner_settings
    Ist recht umständlich ,hab mehreres versucht, aber so funktioniert es wenigstens wie ich es haben wollte :D
    Muss nur noch eine random Objekt spawn Funktion einbauen (das ist kein Problem).

    Danke trotzdem für eure Hilfe :)

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