Top Down Shooter HILFE!!!

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

  • Top Down Shooter HILFE!!!

    Ja ich bin´s wieder und zwar arbeite ich grad an einem top down shooter. Aber an einer stelle komme ich nicht weiter.
    Ich habe Gegner die mich verfolgen und zufällig im raum spawnen. Das Problem ist jetzt, dass wenn die Gegner aufeinander treffen, dass die manchmal stehen bleiben. Darum habe ich das gemacht:

    wenn der Gegner auf Gegner trifft dann soll er weg bouncen;

    natürlich im Code Format.
    Das geht aber nicht ganz so richtig. Ich möchte es gern so haben, dass wenn die Gegner aufeinander treffen, dass die dann einen anderen weg nehmen um mich zu erreichen.

    Ich hoffe ihr habt mein Problem verstanden und könnt mir helfen.
  • Habe ich das folgendermaßen richtig verstanden?
    Du lässt Gegner spawnen, die sollen aber nicht auf einem anderen gegener drauf spawnen?
    wenn ja, dann hilft folgendes:
    x1 & y1 seien hier die Koordinaten an denen der neue Gegner spawnen soll

    obj=instance_nearest(x1,y1,gegnerobjekt)
    while(point_distance(x1,y1,obj.x,obj.y)<50)
    {
    x1 und y1 neu zufällig bestimmen lassen (z.B. mit x1=random(room_width); y1=random(room_height); )
    obj=instance_nearest(x1,y1,gegnerobjekt);
    }
  • Ich glaube eher, er meinte die gegner sollten nicht ineinanderlaufen wenn sie den Player verfolgen, sondern von einander abprallen und nen neuen weg zum player suchen.

    Vll solltest du beim bewegen lassen des gegners vorher prüfen lassen ob der platz auch frei is, wo der gegner als nächstes hinläuft?

    Schau dir mal den befehl place_free(x, y) an.
  • Ich habe jetzt im step event vom Gegner das geschrieben:

    GML-Quellcode

    1. ​if (global.pause) exit;
    2. if instance_exists(obj_charakter)
    3. {
    4. if place_free(x,y)
    5. {
    6. move_towards_point(obj_charakter.x,obj_charakter.y,2)
    7. image_angle=point_direction(x,y,obj_charakter.x,obj_charakter.y)
    8. }
    9. }
    10. if hp <= 0
    11. {
    12. global.kill += 1
    13. instance_destroy()
    14. global.money += earnMoney
    15. }
    Alles anzeigen


    aber ich denke nicht, dass das richtig ist was ich geschrieben habe, weil ich nicht genau weiß wo ich jetzt place_free(x,y,) verwenden muss.

    sorry bin halt noch Neuling.
  • das funktioniert so nicht, da du so nur überprüfst, ob der Platz frei ist auf dem der Enemy gerade steht.
    Probier statt place_free(x,y)
    mal folgendes:

    dir=point_direction(x,y,obj_charakter.x,obj_charakter.y);
    if place_free(x+lengthdir_x(2,dir),y+lengthdir_y(2,dir))
    {
    move_towards_point(obj_charakter.x,obj_charakter.y,2)
    image_angle=point_direction(x,y,obj_charakter.x,obj_charakter.y)
    }

    Das überprüft, ob der Platz frei ist, den du als nächtes betreten willst