Ergebnis 1 bis 20 von 31

Thema: [RM2K3] Brauche Hilfe: Sprung-Script a la Golden Sun

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Also ich habe etwas Ähnliches für Altered Royalty vor, allerdings soll das erst mit einem Item möglich sein. Da soll das zwar auf Tastendruck der Shifttaste geschehen (die für die Items ist), wenn das Item ausgerüstet ist, aber im Prinzip muss ich mir auch was überlegen.

    An jede Stelle dann ein Event zu platzieren, wo man umherspringen kann, würde den Rahmen sprengen, gerade bei meinem Projekt, da man auch (mit dem Item) dann wie bei Zelda (2D Teile) von nicht allzu hohen Bergen runterspringen kann.

    Bei mir wird es aber Parallax Mapping geben und Terrain IDs als Ebenen, einfach damit ich eine künstliche 3D Kollisionsberechnung machen kann, aber dein Skript dürfte nicht allzu kompliziert sein.

    Pass auf, ganz einfach: Du bestimmt per Terrain ID, ob du an einer Kante stehst. Per Terrain ID wird bestimmt, ob das eine nach Norden, Süden, Westen, Osten, NO, NW, SW oder SO gerichtete Kante ist. Bei den Diagonalen Richtungen, kann man z.B nach oben und unten springen. Je nach Chispet hast du auch eine Platform die 1x1 groß ist, in dem Fall kann man theoretisch in jede Richtung springen. Dann bestimmst du, ob zwei Felder weiter in der Richtung eine Kante liegt, auf die man draufspringen kann. Ich gehe mal davon aus, dass man keine Abgründe, die breiter als ein Feld sind, überspringen kann Ist das so, leitest du die Abfrage mit dem Tastendruck ein

    Geändert von Drakee (30.08.2015 um 21:48 Uhr)

  2. #2
    Zitat Zitat von Drakee Beitrag anzeigen
    Also ich habe etwas Ähnliches für Altered Royalty vor, allerdings soll das erst mit einem Item möglich sein. Da soll das zwar auf Tastendruck der Shifttaste geschehen (die für die Items ist), wenn das Item ausgerüstet ist, aber im Prinzip muss ich mir auch was überlegen.

    An jede Stelle dann ein Event zu platzieren, wo man umherspringen kann, würde den Rahmen sprengen, gerade bei meinem Projekt, da man auch (mit dem Item) dann wie bei Zelda (2D Teile) von nicht allzu hohen Bergen runterspringen kann.

    Bei mir wird es aber Parallax Mapping geben und Terrain IDs als Ebenen, einfach damit ich eine künstliche 3D Kollisionsberechnung machen kann, aber dein Skript dürfte nicht allzu kompliziert sein.

    Pass auf, ganz einfach: Du bestimmt per Terrain ID, ob du an einer Kante stehst. Per Terrain ID wird bestimmt, ob das eine nach Norden, Süden, Westen, Osten, NO, NW, SW oder SO gerichtete Kante ist. Bei den Diagonalen Richtungen, kann man z.B nach oben und unten springen. Je nach Chispet hast du auch eine Platform die 1x1 groß ist, in dem Fall kann man theoretisch in jede Richtung springen. Dann bestimmst du, ob zwei Felder weiter in der Richtung eine Kante liegt, auf die man draufspringen kann. Ich gehe mal davon aus, dass man keine Abgründe, die breiter als ein Feld sind, überspringen kann Ist das so, leitest du die Abfrage mit dem Tastendruck ein
    Du kommst genau zum richtigen Zeitpunkt Drakee
    Mir ist auch aufgefallen, dass ich mit der Map-Event Methode viel zu viel Chaos auf der Map auslöse..
    Das Prinzip hab ich soweit verstanden - nur weiß ich leider nicht wie ich bestimmen kann ob zwei Felder ein weiter "bespringbares" Feld ist. Kurzer Tipp?
    Könnte an der Uhrzeit liegen aber ich komm gerade nicht klar
    Danke im Voraus!

    PS: Ich hatte ebenfalls angedacht, den Helden auf kleine Erhöhungen springen zu lassen bzw. von dort runter. Muss mir noch überlegen wie ich das umsetze. Wahrscheinlich auch über Terrain ID's, dann nur mit einem anderen Move-Set?

  3. #3
    Zitat Zitat von Exas Beitrag anzeigen
    Das Prinzip hab ich soweit verstanden - nur weiß ich leider nicht wie ich bestimmen kann ob zwei Felder ein weiter "bespringbares" Feld ist. Kurzer Tipp?
    In etwa so (Pseudocode):
    Speichere die Position des Actors in Variablen.
    Speichere die TerrainID anhand der Position des Helden in eine weitere Variable.

    Wenn die TerrainID der "Kante Oben" entspricht & der Actor nach oben schaut
    Rechne Actor Y Pos - 2 (+ für unten)
    Überprüfe nun, ob die Terrain ID einer Kante entspricht, auf die man springen kann, indem die Terrain ID anhand der Position des Actors erneut gesetzt wird.
    Wird die Pfeiltaste oben eine Zeit lang gedrückt, so lasse den Helden zwei Felder nach oben springen, sofern die vorherige Bedingung erfüllt.

    Analog für Unten.

    Wenn die TerrainID der "Kante Rechts" entspricht & der Actor nach rechts schaut
    Rechne Actor X Pos + 2 (- für links)
    Überprüfe nun, ob die Terrain ID einer Kante entspricht, auf die man springen kann, indem die Terrain ID anhand der Position des Actors erneut gesetzt wird.
    Wird die Pfeiltaste oben eine Zeit lang gedrückt, so lasse den Helden zwei Felder nach links springen, sofern die vorherige Bedingung erfüllt.

    Analog für Links

    Bei einer Kante mit zwei oder bei einer Platform mit vier möglichen Richtungen setzt du innerhalb der Bedingung für die Terrain ID noch die entprechenden einzelnen Bedingungen für die FaceDir des Helden.

    Zitat Zitat von Exas Beitrag anzeigen
    PS: Ich hatte ebenfalls angedacht, den Helden auf kleine Erhöhungen springen zu lassen bzw. von dort runter. Muss mir noch überlegen wie ich das umsetze. Wahrscheinlich auch über Terrain ID's, dann nur mit einem anderen Move-Set?
    Im Prinzip ähnlich. Nur muss der Maker wissen, ob du vor einer Wand stehst. Dann musst du halt eine Abfrage machen, bei der die Terrain ID des Feldes vor dem Helden bestimmt wird.
    Also noch eine Terrain ID für "Wand" bestimmen. Dann müsstest du nur abfragen, wenn du vor einer Wand stehst, ob ein Feld darüber direkt ein begehbares Feld ist, das musst du leider auch per Terrain ID bestimmen.
    Also nicht passierbare Tiles sollte man dann noch per Terrain ID extra bestimmen


    Ich kann mich ja selbst mal an das Problem heransetzen, dürfte nicht so extrem lange dauern.

    Geändert von Drakee (31.08.2015 um 00:45 Uhr)

  4. #4
    Zitat Zitat von Drakee Beitrag anzeigen
    In etwa so (Pseudocode):
    Speichere die Position des Actors in Variablen.
    Speichere die TerrainID anhand der Position des Helden in eine weitere Variable.

    Wenn die TerrainID der "Kante Oben" entspricht & der Actor nach oben schaut
    Rechne Actor Y Pos - 2 (+ für unten)
    Überprüfe nun, ob die Terrain ID einer Kante entspricht, auf die man springen kann, indem die Terrain ID anhand der Position des Actors erneut gesetzt wird.
    Wird die Pfeiltaste oben eine Zeit lang gedrückt, so lasse den Helden zwei Felder nach oben springen, sofern die vorherige Bedingung erfüllt.

    Analog für Unten.

    Wenn die TerrainID der "Kante Rechts" entspricht & der Actor nach rechts schaut
    Rechne Actor X Pos + 2 (- für links)
    Überprüfe nun, ob die Terrain ID einer Kante entspricht, auf die man springen kann, indem die Terrain ID anhand der Position des Actors erneut gesetzt wird.
    Wird die Pfeiltaste oben eine Zeit lang gedrückt, so lasse den Helden zwei Felder nach links springen, sofern die vorherige Bedingung erfüllt.

    Analog für Links

    Bei einer Kante mit zwei oder bei einer Platform mit vier möglichen Richtungen setzt du innerhalb der Bedingung für die Terrain ID noch die entprechenden einzelnen Bedingungen für die FaceDir des Helden.



    Im Prinzip ähnlich. Nur muss der Maker wissen, ob du vor einer Wand stehst. Dann musst du halt eine Abfrage machen, bei der die Terrain ID des Feldes vor dem Helden bestimmt wird.
    Also noch eine Terrain ID für "Wand" bestimmen. Dann müsstest du nur abfragen, wenn du vor einer Wand stehst, ob ein Feld darüber direkt ein begehbares Feld ist, das musst du leider auch per Terrain ID bestimmen.
    Also nicht passierbare Tiles sollte man dann noch per Terrain ID extra bestimmen


    Ich kann mich ja selbst mal an das Problem heransetzen, dürfte nicht so extrem lange dauern.
    Ahhhh Erleuchtung at its best! Danke! Ich probiers aus, sobald ich wieder genügend Schlaf intus hab und melde mich dann wieder mit Ergebnissen/Problemen ^^
    Wäre cool wenn du Zeit findest um es zu testen, bin mega gespannt

  5. #5
    Also ich bin grad fleißig am Skripten ^^ Funktioniert sogar, wenn man auf der Kante die Taste gedrückt hält

  6. #6
    Zitat Zitat von Drakee Beitrag anzeigen
    Also ich bin grad fleißig am Skripten ^^ Funktioniert sogar, wenn man auf der Kante die Taste gedrückt hält
    Bei mir funktioniert's auch einwandfrei
    War erst 'n bisschen viel Arbeit die einzelnen Terrain-ID's abzufragen, aber jetzt klappt's tadellos.
    Dazu kam ja noch die Wie-lange-halte-ich-welche-Richtungstaste-Abfrage von MagicMaker, die sich ebenfalls bestens integrieren lässt.

    Ich hab vorher noch ein Renn-Script gebaut, welches 1. die Position des Actors und 2. die Terrain ID abfragt
    (1. um zu checken ob der Held sich nicht mehr bewegen kann weil Wand, und dadurch in seine Standard-Pose wechselt und 2. für Laufgeräusche bei Gras, Schnee usw.)
    und sowohl das Renn- als auch das Sprung-Skript kommen sich bei den Abfragen nicht in die Quere.

    Bin gerade dabei das ganze jetzt für einen Sprung auf eine höher gelegene Ebene zu scripten, hoffe das klappt auch so gut

    Nochmal für alle: die Vorschläge von MagicMaker und Drakee sind genial *Credit gib*
    Ist anfangs ein bisschen Arbeit aber es erspart den Maps ne Menge unnötige Events.

  7. #7
    Naja, bei mir habe ich gerade einen Bug produziert gekriegt. Aber ich hab das Skript für das überspringen von Lücken und das Skript für das Hochspringen/Runterspringen an Kanten gesondert. Die kommen sich in die Quere, denk ich mal

    Bei dem Hochspringen an eine Kante ist es wie gesagt ähnlich, nur dass im Vornhinein die X/Y Coordinate des Felds um eins in die Blickrichtung des Helden abgefragt wird. Das muss man nicht in ein extra Skript tun, aber in eine extra Variable. Dann kann man bei einer Wand eine weitere Abfrage starten, ob ein weiteres Feld weiter ein begehbares Tile liegt

  8. #8
    Ich bin so glücklich dass es funktioniert Das hat mir echt Kopfschmerzen, ja, fast schlaflose Nächte bereitet
    Gut, dann achte ich darauf die beiden Dinge voneinander zu trennen.
    Muss ins Bett, aber ich melde mich sobald wie möglich mit weiteren Ergebnissen

  9. #9
    Also, so schwer war das doch jetzt nicht, oder? xD

    Ist auf jeden Fall besser, als jedes Mal Map Events zu benutzen. Auf diese Weise ist es halt einfach alles automatisiert und wenn man das wirklich so wie in Golden Sun haben will, dann will man ja überall, wo es möglich ist, Lücken überwinden und auf höhergelegene Kanten springen können. So braucht man nur zu mappen und das entsprechende Common Event regelt alles von alleine Man muss halt beim Mappen nur ein bisschen drauf achten, dass man das nicht so designt, dass man auf einmal dann doch irgendwo hinspringt wo es von der aktuellen Position aus nicht geht.

    Und von welchen Zusätzen da MagicMaker geredet hat, versteh ich auch nicht

  10. #10
    Im Endeffekt war's jetzt nicht so schwer, das stimmt Ich hatte zwar eine ungefähre Vorstellung davon, wie es umsetzbar wäre, aber mir fehlte der nötige Anstoß in den Details, da ich jetzt wirklich nicht so krass technisch begabt bin.^^
    Die Automatisierung macht das System für mich so attraktiv. Ich könnte mir vorstellen das es dem Spieler auch etwas mehr Freiheit bietet und in ihm vielleicht sogar eine Entdecker-Ader geweckt wird. Zu oft hatte ich schon Spiele gespielt (auch "professionelle") bei denen ich einfach nur durch gehechtet bin, weil die Maps, auch wenn sie vielleicht optisch ganz nett gestaltet waren, keine Tiefe geboten haben. Dazu dann noch die technische Einschränkung dass man sich eh kaum bewegen kann.

    Zitat Zitat von Drakee Beitrag anzeigen
    Man muss halt beim Mappen nur ein bisschen drauf achten, dass man das nicht so designt, dass man auf einmal dann doch irgendwo hinspringt wo es von der aktuellen Position aus nicht geht.
    Das sollte glaube ich ganz gut funktionieren, sicher gehen die ersten 5 Maps daneben und man irgendwo solche Stellen, aber das sollte mit etwas Ordnung in den Tilesets gut gehen

    Wo wir vorher von Bugs gesprochen haben:
    Ich hab jetzt komischerweise Weise den Fehler, wenn der Actor sich noch im Move-Befehl befindet
    (Slip Through ON, Start Jump, Move Up, Move Up, End Jump, End Slip Through usw.)
    und ich währenddessen schon eine andere Richtungstaste drücke, dann geht zwar alles ganz gut aber der Slip Through ist dann für einen kurzen Moment aktiv und ich gerate in Tiles rein, aus denen kein Entkommen mehr ist. Hast du eine Idee woran das liegen könnte?

  11. #11
    Die Bewegung lässt den Rest vom Event nicht warten und wenn es vorbei ist, kann man wieder Eingaben tätigen.

    Könnte man auf einige Arten lösen. Die Gummihammermethode wäre z.B., das Event am Schluss so lange in einer
    kleinen Warteschleife einzufangen, bis am Ende der Kette an Bewegungsanweisungen ein Switch umgelegt wird,
    was man zum Glück direkt mit in Move einbauen kann.

    Code:
    <>Loop Start
     <>If s[0001] == ON
      <>Set Switch: [0001] = OFF
      <>Break Loop
      <>
     : EndIf
     <>Wait: 0.0s
     <>
    : Loop End
    <>

  12. #12
    Danke MagicMaker! Ich probiers gleich aus
    EDIT: Frage vergessen: Was bewirkt dieses kleine lustige Wait?

    Geändert von Exas (31.08.2015 um 23:26 Uhr)

Stichworte

Berechtigungen

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