Mehrere Treffer durch variablen

  • Mehrere Treffer durch variablen

    ich versuche grade Einzustellen das man diverse Gegner öfter treffen muss bevor diese explodieren.

    Dafür habe ich im create event die variable "hits" erstellt und diese auf 5 gesetzt.Als nächstes habe ich im kollisionsevent eingestellt das sich diese variable um 1 verringert und Relativ angekreuzt.

    Dann habe ich wiede im Create Event angegeben das die Figur zerstört werden soll sobald das Hit Variabel "Equal to 0" ist.

    Wenn ich das Spiel dann starten will bekomme ich aber sofort eine Fehlermeldung das die Variable Hits unbekannt ist.

    habe das mit einem früherem Spiel von mir verglichen bei dem ich das genau so gemacht habe wobei das hier funktioniert hat.
    Allerdings war dessen Bewegung nicht ganz so komplex wie bei den jetzigen.



    Information about object: walker

    Sprite: walker
    Solid: false
    Visible: true
    Depth: 1000
    Persistent: false
    Parent: <no parent>
    Mask: <same as sprite>

    Create Event:
    set variable hits relative to 5
    if hits is equal to 0
    start moving in directions 000100000 with speed set to 2
    set Alarm 0 relative to 60
    destroy the instance

    Alarm Event for alarm 0:
    create instance of object walkershoot at relative position (0,0) with speed 0 in direction direction
    set Alarm 0 relative to 90

    Collision Event with object objBullet:
    set variable hits relative to -1
    for other object: destroy the instance

    Collision Event with object links:
    start moving in directions 000100000 with speed set to 2
    set the sprite to walker with scale factor 1

    Collision Event with object rechts:
    start moving in directions 000001000 with speed set to 2
    set the sprite to walker with scale factor 1
  • das liegt daran, das du im create-event eine abfrage eingebaut hast die den "walker" umbringt. du musst im create-event nur dir variable definieren (hitpoints=5; o.ä.)
    dann im step-event eine abfrage wie diese einbauen:

    Quellcode

    1. if hitpoints<=0
    2. {instance_destroy();}


    den fehler hast du bekommen, weil du die variable nicht definiert hast bevor du sie verändern wolltest. das heisst, du musst erst sagen hit=1 bevor du sagen kannst hit=hit-1 (besser wäre natürlich hit-=1).
    du hast aber auch die möglichkeit in den einstellungen des spiels "tread unknown variables as 0" anmachen. das ist aber nicht so galant wie sich seine variablen selbst zu definieren :D
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x

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

  • RE: Mehrere Treffer durch variablen

    Original von Monty

    set Alarm 0 relative to 60
    destroy the instance


    Ähhm..mal was anderes: ich glaube hier kommt Dein nächstes Problem: Du Setzt den Alaerm und dann zerstörst Du die Instanz, Der darauffolgende Text baut dann auf den Alarm auf: Das wird aber glaube ich nicht funktionieren, denn wenn Du den Alarm auf 60 stellst unmittelbar dannach aber die Instanz zerstörst dann wird der alarm "mitzerstört" und es passiert garnichts. Das heist sobald die Instanz zerstört ist wird nicht mehr beachtet was dannach die Instanz eigentlich noch hätte alles tun sollen :)!
  • Okay, ich habe es hinbekommen.
    Logisch gesehen verstehe ich zwar nicht warum das jetzt geht und gestern nicht aber zumindest funktioniert es jetzt.

    Falls in Zukunft mal jemand anders das Problem kriegen sollte, hier zum nachschlagen.

    Information about object: walker

    Sprite: walker
    Solid: false
    Visible: true
    Depth: -1000
    Persistent: false
    Parent: <no parent>
    Mask: <same as sprite>

    Create Event:
    start moving in directions 000100000 with speed set to 2
    set Alarm 0 relative to 60
    set variable hit to 5
    if hit is smaller than 0
    destroy the instance

    Alarm Event for alarm 0:
    create instance of object walkershoot at relative position (0,0) with speed 0 in direction direction
    set Alarm 0 relative to 90

    Collision Event with object objBullet:
    for other object: destroy the instance
    set variable hit relative to -1
    if hit is smaller than 0
    destroy the instance

    Collision Event with object links:
    start moving in directions 000100000 with speed set to 2
    set the sprite to walker with scale factor 1

    Collision Event with object rechts:
    start moving in directions 000001000 with speed set to 2
    set the sprite to walker with scale factor 1


    Grüsse
    Monty
  • Nur am Rande bemerkt: Wieso überprüfst du im Create-Event ob hit kleiner als 0 ist? Das Create-Event wird nur einmal bei Erstellen des Objekts ausgeführt. Außerdem setzt du kurz vorher hit auf 5, also kann hit im selben Event nicht kleiner als 0 sein.
    Einige meiner Spiele:
  • Benutzer online 1

    1 Besucher