Ergebnis 1 bis 13 von 13

Thema: Explosion

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1

    Users Awaiting Email Confirmation

    Explosion

    Wie kann ich es machen zum Beispiel mit einem Raketenwerfer ,
    dass wenn ich mit ihm Schiesse nicht nur auf dem Feld wo der Raketenwerfer explodiert Schaden für Held und Gegner entsteht ,
    sondern das um dem Feld auch Schaden entsteht . Da muss man glaub ich doch was mit Radius und so machen ..

    Bitte Code Posten .

  2. #2
    Das geht meines Wissens nach nur über Variablen. Du musst über "Change Variable" die x und y Koordinate des Einschlags ermitteln, sowie aller Personen Gegenstände (events halt) die davon möglicherweise betroffen werden. Mit diesen Variablen kannst du dann die Entfernung des jeweiligen Events zur Explosion errechnen (aufwendig), und dann entsprechende den Schaden zuweisen.

    Wenn jemandem eine leichtere Methode einfällt, würde mich das auch interessieren

  3. #3
    Speichere die Einschlagskoordinate in 2 Variablen, also X und Y. Dann ziehst du 2 vom x Wert ab und fragst per Fork condition ab ob des helden Position X einen höheren Wert als der X des Einschlagswertes hat. Ist dies der Fall dann zählst du 4 zum X Wert des Einschlages hinzu und fragst diesmal ab, ob der Held-X kleiner ist als diese Einschlagskoordinate-X. Wenn dies ebenfalls so ist, den Y Wert der Einschlagskoordinate -2, dann abfragen ob der Held_y einen größeren Wert als die Y Variable des einschlages hat. Ist dies so dann noch den Y Wert + 4 nehmen und abfragen ob der Hero_Y Wert kleiner als dieser Y-Einschlagswert ist. Am ende dieser 4 Forks musst du nur noch die HP abziehen und eventuell den Hero aufflashen lassen. Das ganze kannst du dann auch noch mit den Gegnern machen.

    Das ganze funktioniert so, dass du eine art Kasten aufbaust durch die Variablen, indem der held sein muss um getroffen zu werden.


    x = Einschlagswert
    - = Die Y Abstände des KLastens
    | = Abstand X des Kastens


    Code:
    ---------------
    ---------------
    --------------- 
    |  |  |X|  |  |
    ---------------
    ---------------
    ---------------
    Das heißt also, der X-Einschlagswert des Geschosses minus 2 muss immer noch kleiner als des Helden X sein, dann befindet sich der Held schonmal rechts vom linken Rand. Jetzt muss das eingegrenzt werden und der Held X darf nicht größer als die Rechte Grenze sein, also die Einschlagskoordinate + 2. Somit ist der Held horizontal schonmal zischen den beiden Rändern, also höchstens 2 Felder von der Explosion entfernt. Aber er könnte ja auch 20 Kästchen darüber oder unter dem Feld stehen, daher muss auch noch Y geprüft werden dass er nicht höher oder tiefer als 2 Kästchen vom Einschlgaspunkt entfernt steht.

  4. #4

    Users Awaiting Email Confirmation

    Muss ich die Forks jeweils in ELSE Cases reintun ?

  5. #5
    Nein, du hängst die 4 Forks alle aneinander, weil ja alle 4 Stimmen müssen. Du musst rechts von der Grenze links stehen, dennoch links von der Grenze Rechts, und tiefer von der grenze oben, dennoch höher als die Grenze unten. So, den Code kann ich hier leider nicht posten da das ein wenig viel Arbeit wäre. Ich denke aber mit dieser Anleitung müsste es wohl klappen.

  6. #6

    Users Awaiting Email Confirmation

    Ist es als Common-Event besser oder als Map-Event ?

  7. #7
    Besser als event in der Map, denn es muss ja jeder Gegner auf der Map getestet werden ob er im sprengbereich steht. Und wenn es common wäre würden manche Maps fehler rpoduzieren wenn es dort keine gegner gibt aber ein solches Event verlangt ist... Also für jede Map individuell.

  8. #8

    Users Awaiting Email Confirmation

    Meinst du das mit den Forks so :
    <>Fork Con : Hero X BIGGER Einschlag X
    <>Variablechange : Einschlag X +4
    <>Fork Con : Hero X SMALLER Einschlag X (In der Fork davor Drin)
    <>Variablechange : Einschlag Y -2
    <>Fork Con : Hero Y BIGGER Einschlag Y (In der Fork davor Drin)
    <>Variablechange : Einschlag Y +4
    <>Fork Con : Hero Y SMALLER Einschlag Y (In der Fork davor Drin)
    <>??????????
    <>Endcase
    <>...

  9. #9
    Fast richtig, nur muss am Anfang die X-Variable des Einschlages noch - 2 genommen werden, damit dis dann die linke Grenze bildet. So wie du es jetzt geschrieben hast wird genau der Aufschlagpunkt mit der X Position des Helden verglichen, und danach 4 Stellen weiter rechts, das ganze würde dann zwar auch ein Quadrat bilden, aber dieses ist nich genau um den Einschlagspunkt sondern eben rechts davon und endet genau beim Einschlagspunkt. Daher eben erst -2 die X Koordinate des Einschlges, damit der Kasten bei 2 weiter links beginnt.

  10. #10

    Users Awaiting Email Confirmation

    <>Variablechange : Einschlag X -2
    <>Fork Con : Hero X BIGGER Einschlag X
    <>Variablechange : Einschlag X +4
    <>Fork Con : Hero X SMALLER Einschlag X (In der Fork davor Drin)
    <>Variablechange : Einschlag Y -2
    <>Fork Con : Hero Y BIGGER Einschlag Y (In der Fork davor Drin)
    <>Variablechange : Einschlag Y +4
    <>Fork Con : Hero Y SMALLER Einschlag Y (In der Fork davor Drin)
    <>??????????
    <>Endcase
    <>...

    So ? ...

  11. #11
    Genau so muss die Abfrage aussehen. Wichtig ist, dass der EInschlag-x nicht genau auf "minus 2" gesetzt wird sondern der Wert wo er aufschlägt muss "minus 2" genommen werden. Das gleiche natürlich auch bei den anderen Veränderungen, immer hinzuzählen oder abziehen, nie die direkte Zahl einschreiben.
    Aber du musst die Position den Helden noch ganz oben drüber in 2 variablen speichern. Also in X und Y. Die Variablen des Vergleichsobjektes, hier der Held, später der Gegner müssen immer über diesen Forks stehen, damit die Positionen recht neu sind und er sich nicht mehr in der Zeit der Berechnung bewegen kann. Wenn du die Position weiter oben prüfst, bei dem Schussbefehl oder so, dann kann es sein dass der Held laut Variable noch da steht, aber als Spielfiugur selbst schon weg ist. Daher immer kurz vor der Abfrage die Heldenkoordinaten und später die der Gegner neu speichern.

    So, ja also das ist für den Hero. So sollte es funktionieren, als Test kannst du ja mal einen Sound abspielen lassen wenn man in dm 4ten Fork drinne ist (also alle anderen davor auch, somit in Explosionsreichweite), dann wirst du schon merken ob es soweit geht. Das ganze musst du dann auf jeder Karte für jeden Gegner machen, am besten bleiben die Event IDs der Gegner immer gleich, dann musst du nicht immer auf die jeweiligen Events umstellen. ALso dass Gegner 1 immer Event # 1 ist, 2 = 2 und sowas. Wobei die Zahlen letztendlich egal sind, hauptsache diese bleiben von Map zu Map immer gleich.

  12. #12

    Users Awaiting Email Confirmation

    Also wie soll ich das als Map Event denn machen ?
    Ich hab da erstens einen Switch und einen Paralellprozess .
    Wenn man die Rakete abfeuert , aber ich Set Events Place [Einschlag]
    bei Rakete X und Y gemacht . Vor der BA habe ich den Switch auf ON geschaltet . Aber als ich mich "Selbstermorden" wolle , passierte einfach nichts ...
    Wie sollte ich es am Besten machen ß

  13. #13
    Was hast du denn als Effekt, wenn man innerhalb der Reichweite steht? Mach mal einen Soundeffekt zum testen. Und wenn das nicht funktioniert hast du irgend etwas vergessen. Hast du die Position des helden gespeichert bevor die Forks kommen? oder wird die EInschlagsvariable noch irgendwo verändert? Schau mal in der Console (F9 drücken im Spiel) nach ob die Einschlagskoordinaten wirdklich die richitgen sind oder ob sich bei der Errechnung ein Bug eingeschlichen hat. Jetzt musst du das nur noch Bugfrei machen, mehr kann ich da auch nicht machen, das System sollte so funktionieren, umsetzen musst du es nun.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •