"Hindernisse" überprüfen gml befehl

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

  • "Hindernisse" überprüfen gml befehl

    Hallo Leute =)

    ich bins mal wieder. bin im moment an nem kleinem game am basteln, nur jetzt bin ich auf ein problem gestoßen.
    ich hab ein gegner_object. dieser schießt auch schon auf mich und pässt eigtl alles.

    nur ein problem hab ich. das ganze ist ein topdown game. und der gegner soll nur schießen wenn auch kein anderes object im weg ist, also wenn der weg für seine kugeln in dem moment in dem er schießt frei ist. sonst schießt der gegner ununterbrochen auf mich, obwohl ich ja eigtl. hinter ner mauer bin und er mich garnicht sehen kann.

    wie lautet als dieser besagte befehl? ich hab keine ahnung.. bin nicht wirklich so der gml kenner..
    funzt es evtl. mit collision_line? habs schon probiert aba dann wird garnichtmehr geschossen

    GML-Quellcode

    1. if distance_to_object(Player) < 700
    2. if collision_line(obj_enemy.x,obj_enemy.y,Player.x,Player.y,obj_bullet_enemy,false,true)
    3. if direction = dir{
    4. scr_atk_player();}


    danke schonmal
    sharivari =)
    Dieser Beitrag wurde bereits 1909 mal editiert, zuletzt von »Sharivari« (Morgen, 19:89)

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

  • Du könntest ein unsichtbares Blickfeld für den Gegner als Objekt erstellen, welches immer in die Richtung geht wohin der Gegner schaut. Dann prüfst du, ob dieses Blickfeld mit dem Gegner kollidiert und zugleich nicht mit einer Mauer kollidert, dann soll er schießen.

    ____
    Adventskalender 2010: Blue Smiley
  • collision_line(x1,y1,x2,y2,obj,prec,notme) Diese Funktion prüft, ob eine Kollision zwischen dem Liniensegment von (x1,y1) zu (x2,y2) und Instanzen des Objektes obj vorliegt. Dies ist eine mächtige Funktion. Du kannst sie beispielsweise benutzen, um zu prüfen, ob eine Instanz eine andere Instanz "sehen" kann, indem Du prüfst, ob das Liniensegment zwischen den beiden eine Wand schneidet.

    GML-Quellcode

    1. if (!collision_line(x,y,obj_player.x,obj_player.y,all,true,true)//Was heist prec?
    2. {
    3. //Schuss ausführen
    4. }
    wupto.net/ Nicht meine Seite!
    We love Koalas.

    GM-D-Spam-o-Meter: 32%

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

  • huch seid ihr schnell :D

    das mit dem sichtkegel wär ne lösung.. wenn das andere ned funzt, danke =)

    aba genau das mit dem collision_line hab ich mir auch gedacht.
    nur hat dein gml code nen fehler, aber welchen?
    Dieser Beitrag wurde bereits 1909 mal editiert, zuletzt von »Sharivari« (Morgen, 19:89)
  • @henrik1235: prec heißt präzise überprüfen. Wenn es auf false gestellt wird, wird die Bounding-Box benutzt.
    @Sharivari: wieso? klappt es nicht?
    vielleicht solltest du statt all dein Mauer-Objekt angeben, damitnur dieses berücksichtigt wird, falls du sonst noch andere Objekte im Raum hast.
  • das mit dem sichtkegel wäre doch nicht gegangen, außer ich hätte für jeden einzelnen gegner ein neues object + eigenes sichtkegel objekt erstellt.
    dann wenn ich nun in einem sichtkegel bin, reagieren automatisch alle gegner auf mich, da sie ja alle das gleiche objekt sind.

    habs aber mit dem collision_line hinbekommen, klappt alles.
    dankeschön =)
    Dieser Beitrag wurde bereits 1909 mal editiert, zuletzt von »Sharivari« (Morgen, 19:89)