Variablen-Problem

  • Variablen-Problem

    Folendes szenario:

    Ich will ein Objekt (path_ufo) entlang eines Pfads entlang gleiten lassen und nach 3 Treffern (zusätzlich läuft eine Zeitschleife, damit sich das Objekt farblich verändert) will ich das Objekt vernichtet haben.

    Gebe ich jetzt dem Objekt eine Variable (im Create_Event) in Form von

    {
    HP = 99;
    }

    als "Execute a piece of Code" und im "Collision"-Event des Objekts ebenfalls als "Execute a piece of Code" folgendes ein:

    {
    HP -= 33;

    if (HP <= 0)
    instance_destroy();
    }

    dann zerstört sich das Teil sofort beim ersten Treffer. In der Hilfe steht aber genau diese Aussage. Wo liegt mein Denk-Fehler?
    Keine Ahnung, was ich hier tue, aber ich mach´s einfach mal!
  • Variablen-Problem

    Das "Geschoss" ist in diesem Fall ein Ball und der darf nicht gelöscht werden, in dem Raum sind noch andere Objekte, die zerstört werden müssen.
    Irgendwie blick ich das mit den Variablen nicht:
    Selbst wenn ich die dinger in "Set Variable" und "If a Variable has a Value" eingebe stimmt es nicht. Beim ersten Kontakt mit dem Ball löst sich das Teil in Luft auf...
    Keine Ahnung, was ich hier tue, aber ich mach´s einfach mal!
  • Kann man das irgendwie umgehen? - Bei dem Spiel handelt es sich um eine "Bricks" - Art, also man muss verschiedene Steine und andere Objekte mit dem Spielball zerstören um weiter zu kommen.

    Hab mal aufgrund von Windapple (Danke dir übrigens!) die Zerstörungsrate der HP´s auf 13 zurückgesetzt, aber jetzt ist die Trefferzahl relativ: Es können 2 oder auch vier treffer sein, bis der Effekt eintrifft...
    Keine Ahnung, was ich hier tue, aber ich mach´s einfach mal!
  • Du musst dem Ufo nur einen Cooldown geben!

    Ufo create event:
    cooldown = 0
    Ufo step event:
    if cooldown >0 then cooldown -= 1
    Ufo collision event:
    if cooldown = 0
    {
    HP -= 33;
    cooldown = 30
    }
    if (HP = 0)
    instance_destroy();

    Bei room speed 60 dauert es dann eine Sekunde bis das Ufo kaputt ist.
  • Klasse! - Das funktioniert.

    Auch wenn ich jetzt nervig werde, ich würde das gerne verstehen:

    das Ufo bekommt jetzt eine Variable namens "cooldown".
    Bei jedem Schritt (step) wird ihm jetzt ein punkt abgezogen, falls es grösser als 0 ist.
    Bei einer Collision wird geprüft, ob cooldown inzwischen 0 ist und falls ja, werden dem Ufo 33 HP abgezogen und gleichzeitig wieder 30 cooldown-punkte gegeben, damit nicht sofort (sondern erst nach 30 weiteren schritten) wieder abgezogen wird.

    Hab ich das so richtig kapiert?


    (Ob ich das jemals richtig blicken werde, wird sich noch zeigen... :headtouch: )
    Keine Ahnung, was ich hier tue, aber ich mach´s einfach mal!
  • Benutzer online 1

    1 Besucher