wieso kann ich nur die erste instance auswählen???

  • GM 8

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • wieso kann ich nur die erste instance auswählen???

    hi hab volgenden code

    GML-Quellcode

    1. if mouse_check_button(mb_left){ //---------------------------------------------
    2. if(position_meeting(mouse_x,mouse_y,self)){ //---------------------------------------------
    3. ausgewaehlt=instance_id; //---------------------------------------------
    4. } //------Auswahl einer Instanz+ gleichzeitiger
    5. else{ //------Abwahl einer vileicht schon aktivierter
    6. ausgewaehlt=0; //------Instanz--------------------------------
    7. } //---------------------------------------------
    8. } //---------------------------------------------
    9. if(ausgewaehlt==instance_id){
    10. if(keyboard_check(vk_up)){
    11. y-=32;
    12. }
    13. if(keyboard_check(vk_down)){
    14. y+=32;
    15. }
    16. }
    Alles anzeigen


    das problem ist jetzt, das der variable "ausgewaehlt" nur eine id zugewiesen wird, wenn ich die erste instance anklicke.

    alle anderen instancen geben den wert 0 zurück... also nicht ausgewählt...

    häng schon 3 tage an den problem.

    gruß gruen


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

  • Probier mal Folgendes:

    GML-Quellcode

    1. var ausgewaehlt, iID;
    2. ausgewaehlt = position_meeting(mouse_x,mouse_y,deinObjekt);
    3. if(mouse_check_button(mb_left)){
    4. if(instance_exists(ausgewaehlt))
    5. iID = ausgewaehlt.instance_id;
    6. else
    7. iID = 0;
    8. }
    9. //Und dein restlicher Code


    Habs nicht getestet.

    MfG

    Albert Einstein schrieb:

    Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.
  • mein problem ist das ich einzelne instanzen schon auswählen kann, und sepperat bewegen kann...

    das problem ist aber das die variable "ausgewaehlt" immer 0 ist außer man klickt die erste instance an...
    vllt. fragt ihr euch warum ich es nicht dabei belasse, weil es ja dennoch funktioniert...
    ich brauche die id der ausgewählten instance für den nächsten schritt den ich programmieren werde.

    ich hab also ausprobiert : ausgewaehlt=id; ausgewaehlt= instance_id. macht aber beides keinen unterschied :(


  • Das Problem dass bei dir immer die erste Id der Instanz übergeben wird liegt vermutlich daran dass instance_id ein Array ist und du in Klammern die Nr der Instanz angeben müsstest.
    instance_id = instance_id[0] = immer die erste instanz

    Wenn du die Id-Übergabe auf
    ausgewählt = id
    änderst, sollte ausgewählt immer die id der aktiven instanz haben.

    Hab deinen Code nur mit dieser Änderung bei mir getestet und es funktioniert ;)

    mfg
    G
  • Also mit id funktioniert es bei mir ohne Probleme:

    GML-Quellcode

    1. if mouse_check_button(mb_left){
    2. if(position_meeting(mouse_x,mouse_y,id)){
    3. ausgewaehlt=id;
    4. }
    5. else{
    6. ausgewaehlt=0;
    7. }
    8. }
    9. if(ausgewaehlt==id){
    10. if(keyboard_check(vk_up)){
    11. y-=32;
    12. }
    13. if(keyboard_check(vk_down)){
    14. y+=32;
    15. }
    16. }
    Alles anzeigen
    Einige meiner Spiele:
  • das bewegen funktioniert auch...

    aber im debug mode wird nur bei der ersten eine id zugewiesen... bei allen anderen die man anklickt bleibt die zahl auf0. paradoxerweise kann man die aber dennoch so auswählen und bewegen. aber das gestaltet sich problematisch in meiner weiteren programmierung... desshalb muss da eine id gespeichert werden.


  • Hallo,
    ich vermute, dass du die id in jeder Instance extra speicherst,(da ist ja auch der bewegen code drin, deshalb funktioniert das)
    aber du schaust immer nur die Variable in der ersten Instance an.

    Ich würde das lösen, indem man die Variable global mach:

    GML-Quellcode

    1. if mouse_check_button(mb_left){ //---------------------------------------------
    2. if(position_meeting(mouse_x,mouse_y,self)){ //---------------------------------------------
    3. global.ausgewaehlt=instance_id; //---------------------------------------------
    4. } //------Auswahl einer Instanz+ gleichzeitiger
    5. /*else{ //------Abwahl einer vileicht schon aktivierter
    6. global.ausgewaehlt=0; //------Instanz--------------------------------
    7. } upps des gehört net hin */ //---------------------------------------------
    8. } //---------------------------------------------
    9. if(global.ausgewaehlt==instance_id){
    10. if(keyboard_check(vk_up)){
    11. y-=32;
    12. }
    13. if(keyboard_check(vk_down)){
    14. y+=32;
    15. }
    16. }
    Alles anzeigen

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von andre111 ()

  • Mit der Lösung solltest du aber auch das

    GML-Quellcode

    1. else{
    2. global.ausgewaehlt=0;
    3. }
    weglassen. Sonst stellen alle anderen Instanzen ausgewaehlt immer wieder auf 0.
    Einige meiner Spiele: