Ergebnis 1 bis 20 von 106

Thema: "Colors of Damnation" [Entwicklertagebuch] RM2K3

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #19
    Zitat Zitat von Itaju Beitrag anzeigen
    Wäre zu kompliziert, weil im Script noch ne ganze Reihe anderer Sachen versteckt sind (z.B. sollen Projektile über Wasser fliegen, durch Verbündete hindurch gehen und an Wänden explodieren).

    Nochmal etwas detailierter.

    Bevor das Geschoss abgefeuert wird, musst du die Blickrichtung einstellen, dann platzierst du es in ein Feld vom Helden in dessen Blickrichtung entfernt.
    Du machst aus dem Geschoss einen parallelen Prozess, der erst aktiviert wird, nachdem das Geschoss platziert wird.
    Innerhalb eines Zyklus (einmaligem Durchlaufen des Parallelen Prozesses) machst Du folgendes.

    Koordinaten des Projektils nehmen.
    Wenn das Projektil nach oben "schaut", dann wird die Y-Koordinate -1 genommen, nach rechts X-Koordinate +1, etc.
    Du schaust jetzt, ob sich auf diesem Feld ein Gegner befindet (du musst von jedem einzelnen Gegner die X und Y Koordinaten nehmen und schaun, ob sie mit den (veränderten) des Projektils übereinstimmen).
    Wenn nicht, dann bewegt sich das Geschoss ein Feld weiter in seine Sichtrichtung (Move Event: Step Forward), wait von 0,1 +0,0*2 Sekunden (oder länger, je nachdem, wie schnell Dein Geschoss ist) und das ganze geht von vorne los.
    Wenn da ein Gegner ist, dann killst ihn, ziehst ihm leben ab, machst blut, etc, was immer passiert, lässt das Geschoss noch ein Feld weiter fliegen (mit Phasing Mode ON, damit es in den Gegner "hineinfliegt") und es danach verschwinden.
    Das löst Panetranz Prolem nicht, kann ich dir jetzt schon schon sagen. Der maker bewegt events schneller, als Sprites und da kann es nunmal passieren, dass das Schuss-Event und das gegner Event aneinander vorbei ziehen, wenn sie sich ungefähr gleichzeitig bewegen. Optisch trifft der Schuss dann, aber die koordinaten der Events stimmt nicht überein, also fliegt der Schuss durch den Gegner durch.
    Du prüfst lediglich ein feld früher, ob dort ein gegner steht. Das verhindert aber nicht, dass sich Events simultan aneinander vorbei bewegen.




    Ich würde das problem folgendermaßen Lösen:


    Platziere über jedem Hinderniss, dass einen Schuss abfangen Soll, ein Event, das auf "Above hero" eingestellt ist.

    Dann platzierst du ein unsichtbares Dummy-Event, das ebenfalls Above hero ist, und sich exakt so, wie der intendierte Schuss verhällt. D.H. es bewegt sich mit maximaler geschwindigkeit und Bewegungsrate vom Helden weg. Dabei bewegst du das Event aber mit "Move Event" befehlen, und zwar mit Maximal so vielen Moves, wie die Karte lang oder breit ist. Moves, die das Event nicht ausführen kann, MÜSSEN übersprungen werden.
    Das führt zu folgendem: Das "abgeschossene" Event fliegt die Flugbahn entlang. Da Events auf der selbene Ebene nicht aneinander vorbei können, bleibt das Event an anderen "Above Hero" events hängen und eventuell verbliebene Moves werden ignoriert. Nach dem "Move Event" speicherst du EINMAL die Koordinate, die das Event in dem Augenblick hat. Jetzt hast du die koordinate, bis zu welcher der Schuss maximal fliegen kann. Aus dieser Koordinate, sowie der Koordinate, die die Spielfigur hat, ergibt sich die Flugbahn des geschosses.

    Steht der held etwa auf 10/1 und das geschoss fliegt bis 10/10 und bleibt dort hängen, können alle felder zwischen 10/1 und 10/10 getroffen werden. Jetzt überpfüfst du mit einer schleife, ob auf einem der Felder zwischen diesen beiden Punkten ein gegner steht. Wenn ja , weißt du sofort, auf welchem feld der gegner getroffen wird und spielst du eine Animation auf dem gegner ab. Wenn kein gegner da ist... passiert nichts.

    Auf diese Art und weise hast du zwar kein sichtbares Geschoss, aber der gegner kann dem Schuss nicht mehr ausweichen.

    Geändert von caesa_andy (23.09.2012 um 15:03 Uhr)

Berechtigungen

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