Soldat mit Sichtradius

  • GM 7

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

  • Soldat mit Sichtradius

    Hi Leute,
    ich habe da ein Problem mit meinem Topdown shooter,
    ich habe ein Objekt, Enemy und ein Objekt Sichtradius, Nun will ich, dass immer einmal, ein Sichtradius, um je einen Soldaten geht.
    Wie soll ich das machen? Will den Sichtradius NICHT Direkt an das Sprite machen, da das Sichtfeld eine Eigene Funktion hat.
    Hoffe auf Hilfe :thumbsup:
    Dieser Beitrag wurde bereits 2784758.2948 mal editiert, zuletzt von »Culcha« (Übermorgen, 88:99)
  • Wenn dir ein Kreis reicht, kannst du auch ins Draw Event schreiben:

    GML-Quellcode

    1. draw_set_color(c_white); // Farbe (In dem Fall weiß).
    2. draw_set_alpha(0.3); // Transparenz (0=komplett durchsichtig, 1=komplett sichtbar)
    3. draw_circle(x,y,200,false);
    4. // 1./2. Argument: Position
    5. // 3. Argument: Radius
    6. // 4. Argument: Outline (true) oder gefüllt (false)
    7. // Wenn du dein Sprite nicht schon selbst zeichnest:
    8. draw_sprite_ext(sprite_index,-1,x,y,image_xscale,image_yscale,image_angle,image_blend,image_alpha);
    9. // Wenn du Farbe und Transparenz zurücksetzten willst/musst:
    10. draw_set_color(c_black);
    11. draw_set_alpha(1);
    Alles anzeigen

    EDIT: Flüchtigkeitsfehler ausgebessert.

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

  • Sieht Gut aus, nur leider, ist die Sichtwite bei dir kein Objekt.
    Kann also keine Kollision abfragen.... Oder etwa doch? Und wenn ja, wie?

    @LoganTheManster

    Dein COde ist auch Super, aber wie bringe ich da Transparenz rein?
    Ausserdem hat es immer nur eine Sichtweite, auch wenn mehrere Soldaten Existieren
    :)
    Und wenn ich den Soldat mir der Scihtweite Töte Springt der Kreis zum nächsten Soldat ^^
    Dieser Beitrag wurde bereits 2784758.2948 mal editiert, zuletzt von »Culcha« (Übermorgen, 88:99)

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

  • Hey, dein Code ist in Kombination mit dem von Copyboy ja Super, nur leider will ich dass der gegner nicht zum Player geht wenn ier in der Nähe ist,
    Sondern Dass er Stehen bleibt, und dann alle Paat Sekunden ein schuss_obj erstellt welches Richtung Player fliegt, wie soll ich das machen?
    Dieser Beitrag wurde bereits 2784758.2948 mal editiert, zuletzt von »Culcha« (Übermorgen, 88:99)
  • GML-Quellcode

    1. if distance_to_object < 200
    2. {
    3. speed = 0;
    4. a.instance_create(x,y,obj_bullet);
    5. a.direction = point_direction(x,y,obj_enemy.x,obj_enemy.y);
    6. a.speed = 10;
    7. }
    8. else
    9. {
    10. move_towards_point(obj_player.x,obj_player.y,2)
    11. }
    Alles anzeigen

    Wenn du den Code nicht verstanden hast, dann sag es, weil es bringt nichts, ihn einfach zu kopieren.

    edit:
    und dass es alle paar Sekunden fliegt machst du so:

    1. erstelle eine Variable (bsp: can_shoot) und setze sie zu beginn auf 1
    2. frag vorm Schießen noch ab, ob can_shoot 1 ist
    3. wenn ja wirds ausgeführt und zusätzlich auf 0 gesetzt.
    4. Ein alarm event wird dann noch auf die gewünschte Zeit eingestellt
    5. Und im Alarmevent wird can_shoot wieder auf 1 gesetzt.


    Das wars
    Gruß Gamer
  • Spoiler anzeigen
    FATAL ERROR in
    action number 2
    of Step Event
    for object Enemy:

    COMPILATION ERROR in code action
    Error in code at line 4:
    a.instance_create(x,y,schuss_obj);

    at position 11: Variable name expected.


    Wenn du den Code nicht verstanden hast, dann sag es, weil es bringt nichts, ihn einfach zu kopieren.
    Damit hast du natürlich recht, deshalb versuche ich mal zu verstehen. (Sagen wenn was falsch ist)

    GML-Quellcode

    1. if distance_to_object < 200 //Wenn Distanz Keliner als 200 zu Objekt Player ist:
    2. {
    3. speed = 0; //Setze den Speed auf 0
    4. a.instance_create(x,y,obj_bullet); // Erstelle ein Objekt Schuss (obj_bullet muss ich mit dem Namen meines Schussobjektes Austauschen
    5. a.direction = point_direction(x,y,obj_enemy.x,obj_enemy.y); //Richtung = Gegner
    6. a.speed = 10; //Der Schuss hat den Speed 10
    7. }
    8. else = //Wenn der Abstand grösser als 200 ist
    9. {
    10. move_towards_point(obj_player.x,obj_player.y,2) //Gehe Richtung Plyer
    11. }
    Alles anzeigen


    Ist das etwa richtig so?
    Und was ist das Problem vom Error? ?(
    Dieser Beitrag wurde bereits 2784758.2948 mal editiert, zuletzt von »Culcha« (Übermorgen, 88:99)
  • Ich habe den Code jetzt mal berichtigt.


    GML-Quellcode

    1. if (distance_to_object < 200 )
    2. {
    3. speed = 0;
    4. a = instance_create(x,y,obj_bullet); // Gleichheitszeichen!!!
    5. a.direction = point_direction(x,y,obj_enemy.x,obj_enemy.y);
    6. a.speed = 10; //Der Schuss hat den Speed 10
    7. }
    8. else // Hier muss das Gleichheitszeichen weg!
    9. {
    10. move_towards_point(obj_player.x,obj_player.y,2);
    11. }
    Alles anzeigen


    Viele Grüße, maxda
  • Toll nun gehts Danke

    Für alle anderen Leser: Der End-Code ist:

    GML-Quellcode

    1. if (distance_to_object(Player) < 200)
    2. {
    3. speed = 0;
    4. a = instance_create(x,y,schuss_obj);
    5. a.direction = point_direction(x,y,Enemy.x,Enemy.y);
    6. a.speed = 10;
    7. }
    8. else
    9. {
    10. move_towards_point(Player.x,Player.y,2)
    11. }
    Alles anzeigen
    Dieser Beitrag wurde bereits 2784758.2948 mal editiert, zuletzt von »Culcha« (Übermorgen, 88:99)