Problem mit Spawmnpunkten bzw. dem Verhalten der erstellten Objekte..

  • GM 8

    Problem mit Spawmnpunkten bzw. dem Verhalten der erstellten Objekte..

    Moin,

    ich habe folgendes Problem:

    ich habe mir manuell Objekte erstellt welche sich von oben nach unten bewegen.
    Wenn ich auf die Maustaste drücke bewegen sich diese nicht mehr. So soll es auch sein!

    kugel.create

    GML-Quellcode

    1. globalvar kweiss;
    2. kweiss = 1; // wenn dieses auf 1 steht dürfen sich die Kugeln bewegen.. wenn es auf 0 steht dann nicht!
    3. vspeed = 8;


    und der switch dazu:

    GML-Quellcode

    1. if (kweiss == 1 ) {
    2. vspeed = 8;
    3. visible = true //sichtbar
    4. }
    5. else
    6. {
    7. if (kweiss == 0)
    8. {
    9. vspeed = 0;
    10. visible = false //unsichtbar
    11. }
    12. }


    und dazu habe ich eben noch eine Funktion welche die 1 mit einer 0 austauscht bzw. umgekehrt.



    Wenn ich diese Objekte aber nun in einen selbst gebauten Spawmner stecke bewegen sich diese trotzdem weiter auch wenn sie es eig. gar nicht dürfen.

    OBJ_spam_kleine_quadrate:

    GML-Quellcode

    1. //if (global.kweiss == 1) { ///Hier habe ich versucht den spawmner auszuschalten aber ich bekomme eine Fehlermeldung, dass die globale variabel nicht gefunden wird? zumindest interpretiere ich das da raus..
    2. //
    3. if (counter > 0 ){
    4. counter -=1;
    5. }else{
    6. var spawn;
    7. spawn = choose(0,1,2,3);
    8. if (spawn = 0) {instance_create(-32,random(room_height),obj_weisse_kugel)};
    9. if (spawn = 1) {instance_create(random(room_width),-32,obj_weisse_kugel)};
    10. if (spawn = 2) {instance_create(room_width+32,random(room_height),obj_weisse_kugel)};
    11. if (spawn = 3) {instance_create(random(room_width),room_height+64,obj_weisse_kugel)};
    12. counter = 40;
    13. }
    14. //}
    15. //else
    16. //{
    17. //counter = 40;
    18. //}


    Ich denke, dass ich das Problem mit der globalen Variabel lösen könnte.. wenn es denn funktionieren würde wie ich es mir vorstelle... oder? Aber er erkennt diese einfach nicht.. k.A. was ich falsch mache.

    Wäre lieb wenn mir jemand auf die Sprünge hilft. :)
    Es könnte sein, dass es daran liegt, dass du die Variable etwas komisch initialisiert hast. Es sollte gehen, wenn du anstatt

    GML-Quellcode

    1. globalvar = kweiss
    2. kweiss = 1

    GML-Quellcode

    1. global.kweiss = 1
    schreibst. Muss aber nicht stimmen...
    GML lernen geht leicht :)
    1. http://www.gm-d.de/help/ (deutsch)
    2. gm-d.de/wbb/index.php/Thread/2270/ (Einsteiger-Referenz)
    3. docs.yoyogames.com/ (Hilfe auf Englisch von GM:S)
    Nope, das funktioniert leider auch nicht. :(
    Hab beide Varianten schon versucht..


    GML-Quellcode

    1. ############################################################################################
    2. FATAL ERROR in
    3. action number 1
    4. of Step Event0
    5. for object obj_spam_kleine_quadrate:
    6. Push :: Execution Error - Variable Get -5.kweiss(100000, 0)
    7. at gml_Object_obj_spam_kleine_quadrate_Step_0 (line 1) - if (global.kweiss == 1)
    8. ############################################################################################
    Zum Beispiel, ich würde jetzt konkret den Wert von deiner Variable zeichnen. Mach es so, dass du es erkennst.
    Debugging ist so ziemlich das Wichtigste, was man verstehen muss, und das verstehen die Meisten wohl nicht.
    Uhm.... ich versuche das gerade zu überprüfen mit folgendem Code:


    GML-Quellcode

    1. if (variable_global_exists("kweiss")) {
    2. show_message("BLABLABLALBLALBA");
    3. }



    das habe ich in ein neues Objekt gepackt und dann in ein Drawevent ... angeblich gibt es "variable_global_exist (ob mit oder ohne s) nicht. Allerdings steht das unter Hilfe als mögliche Funktion .. was ist denn da los?

    €: ahh.. die wird wohl nicht mehr unterstützt. Okay..

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Ice21“ ()

    Okay hab es jetzt hiermit gemacht:

    GML-Quellcode

    1. draw_text(view_xview+32, view_yview+32, global.kweiss)


    und er stürzt nicht ab + zeigt mir den Wert an... d.h. er kann auf die global.kweiss aus dem anderen Objekt zugreifen.
    Wie kann es aber sein, dass die andere Funktion es nicht kann?

    €:


    GML-Quellcode

    1. ############################################################################################
    2. FATAL ERROR in
    3. action number 1
    4. of Draw Event
    5. for object object6:
    6. Push :: Execution Error - Variable Get -5.kweiss(100000, 0)
    7. at gml_Object_object6_Draw_0 (line 1) - draw_text(view_xview+162, view_yview+142, global.kweiss)
    8. ############################################################################################



    Hab jetzt beide Funktionen wieder reingepackt und nun findet er auf einmal den Wert nicht.

    €2: also im Drawevent findet er den Wert auf einmal nicht mehr. :O


    €3:

    GML-Quellcode

    1. // wechsel der Farbe von den "Projektilen" Weiß
    2. if device_mouse_check_button_pressed (0, mb_left) {
    3. if (kweiss = 0)
    4. {
    5. kweiss = 1;
    6. }
    7. else {
    8. kweiss = 0;
    9. }
    10. }


    So sieht übrigens mein Switch aus..

    €4: kann es damit etwas zu tun haben?
    hab dort ein Zerstörungsevent eingesetzt.. hab das praktisch einmal mit den weißen Kugeln die von oben nach unten gehen und einmal mit den schwarzen welche von links nach rechts fliegen.

    GM 8 Objekte gleichzeitig zerstören bei Kollision

    €5:

    wenn ich den schwarzen Spawnern folgenden Code gebe

    GML-Quellcode

    1. if (kschwarz == 1)
    2. {
    3. if (counter > 0 ){
    4. counter -=1;
    5. }else{
    6. var spawn;
    7. spawn = choose(0,1,2,3);
    8. if (spawn = 0) {instance_create(-32,random(room_height),obj_schwarze_kugel)};
    9. if (spawn = 1) {instance_create(random(room_width),-32,obj_schwarze_kugel)};
    10. if (spawn = 2) {instance_create(room_width+32,random(room_height),obj_schwarze_kugel)};
    11. if (spawn = 3) {instance_create(random(room_width),room_height+64,obj_schwarze_kugel)};
    12. counter = 60;
    13. }
    14. }
    15. else
    16. {
    17. }


    welche auch folgende Funktion in der einzelnen schwarzen Kugel besitzen:

    GML-Quellcode

    1. if device_mouse_check_button_pressed (0, mb_left) {
    2. hit = instance_place(x,y, obj_weisse_kugel);
    3. if (hit != noone )
    4. {
    5. with(hit)instance_destroy()
    6. instance_destroy();
    7. score+=1;
    8. sound_play(sound_score);
    9. }
    10. }


    und ich dann einen Linksklick mache

    GML-Quellcode

    1. ___________________________________________
    2. ############################################################################################
    3. FATAL ERROR in
    4. action number 1
    5. of Step Event0
    6. for object obj_steuerrung2:
    7. Push :: Execution Error - Variable Get -5.kweiss(100000, 0)
    8. at gml_Object_obj_steuerrung2_Step_0 (line 17) - if (kweiss = 0)
    9. ############################################################################################


    passiert das.

    Ich denke, dass das passiert weil die Variabel für einen kurzen Moment gelöscht wird?

    €: und Line 17 in der Steuerung ist genau das hier:

    GML-Quellcode

    1. // wechsel der Farbe von den "Projektilen" Weiß
    2. if (kweiss = 0)
    3. {
    4. kweiss = 1;
    5. }
    6. else {
    7. kweiss = 0;
    8. }


    Hab die Funktion momentan nur für die schwarzen Spawner drinne und nicht mehr für die Weißen!

    €€€€€:

    hab gerade nochmals 20 Minuten geguckt wo der Wurm vergraben liegt und ich glaube ich habe die Lösung gefunden.. (muss diese morgen noch einfügen und intensiv testen):

    In der Zeit in der, der Spawner kein Objekt erstellt hat, gibt es die globale Variabel nicht da diese erst mit dem erstellen des Objekts vorhanden ist. D.h. ich lager das ganze in ein extra Objekt aus und somit müsste auch der ganze

    GML-Quellcode

    1. if (kweiss == 0) {
    2. <anderer code hier>
    3. }


    komplett überflüssig sein da sich alle immer an einer aktuellen Variabel orientiert welche nie verschwindet. :)

    Dieser Beitrag wurde bereits 8 mal editiert, zuletzt von „Ice21“ ()