Sichtweite erhöhen?

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

  • Sichtweite erhöhen?

    Hi Leute!
    Ich hab hier folgendes Script meinen Gegner zugewiesen

    z=0;
    view=150;

    Das Resultat sieht so aus (ohne grüne Linien!)


    Ist es irgendwie möglich, den Sichtbereich (also die View) wie in den Bild gezeigt um die grünen Linien zu verlängern (damit er weiter sieht).
    Wenn ich den Wert view von 150 auf zb. 200 verändere, sieht er zwar weiter, jedoch erhöht sich auch der Radius vom Sichtkegel. ?(
  • Ich hab jetzt eine Weile versucht, dich zu verstehen - keine Chance! Was genau meinst du?
    █████ ██ █ ████ everything ███ █████ is █████ ████ ████ fine ████ ███ █ ██████ love.
    █████ ███████ ███ your █████ ████ government.
  • Ohne Code können iwr dir nciht helfen, ich glaube er will machen, das der Gegner weiter sieht, aber der Radius sich nicht erhöht...

    Ohne Code würde ich jetzt mal spontan sagen, änder mal die Länge der roten Linien...
    Falls es Sprites sind die vergrößern, falls Code es dort ändern...
    Aktuelles Projekt: Aufbau - Strategiespiel.
    Aktueller Entwicklungsschritt: Planung | Grundengine entwickeln.

    Wichtig ist nicht, besser zu sein als alle anderen.
    Wichtig ist, besser zu sein als du gestern warst.





  • Quellcode

    1. z=0;
    2. view=150;


    Diesen Code hab ich meinem Gegner zugewiesen. (die roten linien entstanden durch ein draw Event, welches aber nicht nötig ist, ich habs nur gemacht damit ihr den Sichtbereich besser sehen könnt).

    der Gegner weiter sieht, aber der Radius sich nicht erhöht...

    Genau! Aber wenn ich view=150 erhöhe, erhöht sich auch gleichzeitig der Radius ?(
  • Ich glaube dir nicht, dass das der komplette Code ist.
    Das sind nur 2 lokale Variablen ohne vordefinierte Funktion.
    Wie diese Werte weiterverarbeitet werden kann hier also niemand wissen, welcher nicht schon x Semester Wahrsagerei & Kaffeesatz-Lesen studiert hat.

    Daher noch ein letztes Mal die Bitte:
    Sag uns den verwendeten Code.
    Ohne den ist dir nicht zu helfen.
    Hier werden sie geholfen:
    [Regeln] [GML] [Hilfe] [Suche] [Posten] [Duden.de]
    [Wenn das alles nicht mehr hilft] [Dunning-Kruger]


    "Die Vernunft sollte Autorität definieren; nicht umgekehrt!"
    "Selber denken regt das Gehirn an."
    - Niffel f.k.a. Kilik
  • Wenn ich das jetzt richtig verstanden habe, schlage ich dir vor, einfach 2 Objekte zu verwenden. Eins für den kleinen Radius und eins für den großen. Das dürfte momentan die einfachste Lösung sein.
    █████ ██ █ ████ everything ███ █████ is █████ ████ ████ fine ████ ███ █ ██████ love.
    █████ ███████ ███ your █████ ████ government.
  • Also wenn ich dich richtig verstehe soll dein Gegner reagieren wenn der Spieler in sein Sichtfeld kommt. Ich mach das immer indem ich eine Abfrage stelle ob sich der Spieler in einem gewissen Abstand zu dem Gegener befindet (oder umgekehrt wie beliebt). Das ganze kann man dann an eine einfache Mathematische Geometrie binden (z.b. einen Kegel -> siehe Tafelwerk ;) )

    Mal in Pseudo Code: If x,y of Spieler < x+var,y+var of Enemy and x,y of Spieler > x+var,y+var of Enemy then -> Aktion

    in die var setzt du nun entsprechende Werte ein so kannst du einen beliebigen Bereich erschaffen in dem der Gegner auf den Spieler reagiert. Alles andere (Grafischer Sichtradius, Schussweite ec.) kann dann unabhänging davon angepasst werden
    Ist jedenfalls so meine Erste idee dazu wenn es so was ist was du dir wünschst.

    Gruß Iron
  • Das Beispiel benutze ich als "Sichtbereich" (weil ihr ja alle nach den Code fragt)
    gm-d.de/board/attachment.php?attachmentid=1263
    Einfach runterladen und bei den roten Object die Aktionen/events ansehen ist ganz wenig und eigentlich simpel. :D
    Wenn mir bitte dann jemand bitte bitte sagen könnte wie ich (zumindestens in diesem Beispiel) die Reichweite des Kegels erhöhen kann, wäre ich schon dankbar.
  • Na also. Wieso hast du den Code nicht gleich gepostet?
    Die Variable view wird sowohl für die Reichweite, als auch den Winkel verwendet.
    Mach einfach eine zweite Variable range und ersetze die Variable view an folgenden Stellen durch range:

    Create Event:

    GML-Quellcode

    1. z=0;
    2. view=150; // Winkel
    3. range=200; // Reichweite


    Step Event:

    GML-Quellcode

    1. if distance_to_object(obj_player)<=range-10


    Um das ganze auch noch optisch angezeigt zu bekommen, musst du noch 3 Zeilen (sind 3x exakt die gleiche Funktion) im Draw Event ändern:

    GML-Quellcode

    1. draw_line(x,y,x+range,y);


    Natürlich ist es jetzt unsinnig, dass view einen Wert von 150 hat und überall im Code der Wert durch 3 geteilt wird. Da würde es Sinn machen, den Wert auf 50 zu setzen und an den betreffenden Stellen das "/3" wegzustreichen.
    Einige meiner Spiele: