und wieder probleme mit Variablen, diesmal 3-Wege Schuss

  • und wieder probleme mit Variablen, diesmal 3-Wege Schuss

    Ich versuche grade der Figur aus meinem Spiel "Gunner Runner" ein paar Extras zu spendieren hänge aber grade an dem 3 Wege Schuss.


    Hierfür habe ich ein Extraobjekt erstellt welches später unsichtbar im Raum erscheinen soll sobald man das dementsprechende Objekt eingesammelt hat.

    press A-Key: Create Instance of an object Bullet (dir. 330)
    Create Instance of an object Bullet (dir. 30)


    Dies hat einwandfrei funktioniert, es sind beide Schüsse, inkl. des Standard Schusses erschienen.
    Das Problem an der Sache war das der Ober und Unterschuss nun mit Dauerfeuer belegt war so das man nur noch den A Knopf gedrückt halten musste und es kamen die Schüsse in Massen.

    Da dies das Spiel doch zu stark vereinfacht und ich den Spieler auch nicht zur Faulheit animieren wollte (also immer schön selber ballern) wollte ich die Dauerfeuerfunktion deaktivieren.

    Dazu habe ich variabeln benutzt welches dann so aussah.


    Create: Set Variabel scatter (scatter ist der schuss) to 1 (relative off)

    Press A-Key: If scatter is equal to 1
    Create Instance of an object Bullet (dir. 330)
    Create Instance of an object Bullet (dir. 30)
    Set variable scatter to -1 (relative an)

    Nach meiner Logik müsste der jetzt nach dem ersten Schuss leer sein und der Schuss dürfte erstmal nicht funktionieren bis ich dem was anderes sage.
    Der untere Schuss ist jetzt gar nicht mehr vorhanden und der Obere hat immer noch Dauerfeuer.
    Ich habe mal die beiden Create Instance... Befehle vertauscht mit dem Ergebnis das nun der obere Schuss fehlte statt des unteren ansonsten das gleiche Problem.


    Ich poste hier mal die komplette Übersicht,



    Information about object: 3way

    Sprite: 3way
    Solid: false
    Visible: false
    Depth: 0
    Persistent: true
    Parent: <no parent>
    Mask: <same as sprite>

    Create Event:
    set variable scatter to 1

    Keyboard Event for A-key Key:
    if scatter is equal to 1
    for all objPlayer: create instance of object objBullet at relative position (0,0) with speed 6 in direction 330
    for all objPlayer: create instance of object objBullet at relative position (0,0) with speed 6 in direction 30
    set variable scatter relative to -1
  • Create: Set Variabel scatter (scatter ist der schuss) to 1 (relative off)

    Press A-Key: If scatter is equal to 1
    Create Instance of an object Bullet (dir. 330)
    Create Instance of an object Bullet (dir. 30)
    Set variable scatter to -1 (relative an)

    So bezieht sich die If-abfrage nur auf die nächste Action, die zweite create-instance-action wird jedesmal ausgeführt. Du musst wenn du die beiden Instanzen nur erstellen willst wenn scatter 1 ist, beide in einen block verpacken also so:
    reate: Set Variabel scatter (scatter ist der schuss) to 1 (relative off)

    Press A-Key: If scatter is equal to 1
    <hier Start of a Block-action rein> (unter "control" zu finden)
    Create Instance of an object Bullet (dir. 330)
    Create Instance of an object Bullet (dir. 30)
    <hier End of a Block-action rein>
    Set variable scatter to -1 (relative an)
  • Okay, hab das auf Key Press umgestellt war schon fast zu einfach.
    Peinlich, hab da ewig dran gesessen und das fiel mir dann nicht auf.
    Okay, schieben wir das am besten zu der Kategorie absolute NOOB Probleme.
    :no:


    :D


    Die Ausführung von Xiebel ist allerdings auch recht praktisch, brauch ich zwar für das jetzige Beispiel nicht aber werd ich vermutlich für irgendein anderes Problem mal brauchen.

    Danke!
  • Allerdings gibt es Fälle, in denen nur das Umstellen auf Key Press nicht ausreicht. Zum Beispiel, wenn du verhindern willst, dass du durch schnelles Hämmern auf die Tasten schneller schießen kannst.
    Wenn also immer ein bestimmtes Zeitintervall verstrichen sein soll bis man wieder schießen kann, dann verfolge ruhig weiter den Weg mit der Variablenabfrage.

    Quellcode

    1. Create: Set Variabel scatter (scatter ist der schuss) to 1 (relative off)
    2. Press A-Key: If scatter is equal to 1
    3. <hier Start of a Block-action rein> (unter "control" zu finden)
    4. Create Instance of an object Bullet (dir. 330)
    5. Create Instance of an object Bullet (dir. 30)
    6. Set variable scatter to 0 (relative aus)
    7. Set Alarm 0 to 10
    8. <hier End of a Block-action rein>
    9. Alarm 0:
    10. Set variable scatter to 1 (relative aus)
    Alles anzeigen
    Einige meiner Spiele:

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

  • Original von Monty
    Okay, hab das auf Key Press umgestellt war schon fast zu einfach.
    Peinlich, hab da ewig dran gesessen und das fiel mir dann nicht auf.


    Peinlich is das doch nicht, ich kenn das, wenn man soo in seinem Projekt drinsteckt dass man wirklich vor lauter Bäumen den Wald nicht mehr sieht :]!
    Doof ist nur dass Du jetzt schon soviel Zeit und Energie in den Code gesteckt hast, den Du jetzt doch nicht brauchst, aber hast bestimmt auch einiges dabei gelernt - es ist eben kein Fehler umsonst 8)!
  • Benutzer online 1

    1 Besucher