Variablen und die Spielerkontrolle

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

  • Variablen und die Spielerkontrolle

    Guten Tag allerseits,

    Ich will 3 - 4 Objekte machen die ich mit der "X" taste abwechselnd kontrollieren will.
    Dazu hab ich ein folgenden Code geschrieben:
    Die Sache ist die, dieser Code funktioniert jeweils nur für 2 Objekte, und wenn ich das mit 3 versuche bewegt sich
    das erste normal und dann 2 und 3 gemeinsam.

    Nochmal Schilderung des Problems:


    Objekt[1] Kontrolle -> X gedrückt -> Objekt[2] Kontrolle -> X gedrückt -> Objekt[3] Kontrolle -> X gedrückt Objekt[4] Kontrolle BZW Objekt[1] wieder Kontrolle.

    Wenn jemand eine Ahnung hat wie ich diesen Code verbessern kann bzw was ich machen kann / sollte bitte reinposten :)


    GML-Quellcode

    1. Objekt [1]
    2. // Create
    3. can_move = 1
    4. // any key
    5. if keyboard_check_pressed(ord("X"))
    6. {
    7. if can_move = 1
    8. can_move = 0
    9. else can_move = 1
    10. }
    11. if can_move = 1
    12. {
    13. if keyboard_check(vk_left)
    14. x -= 4
    15. if keyboard_check(vk_right)
    16. x += 4
    17. }
    18. Objekt [2]
    19. // Create
    20. can_move = 0
    21. // any key
    22. if keyboard_check_pressed(ord("X"))
    23. {
    24. if can_move = 0
    25. can_move = 1
    26. else can_move = 0
    27. }
    28. if can_move = 1
    29. {
    30. if keyboard_check(vk_left)
    31. x -= 4
    32. if keyboard_check(vk_right)
    33. x += 4
    34. }
    Alles anzeigen
  • Ist doch klar.
    Wenn du bei jedem Objekt programmierst, dass canmove bei 0 1 wird und umgekehrt,
    werden ALLE Objekte, die canmove 0 haben auf 1 gesetzt. Du musst also einbauen, dass
    wenn Objekt 1 canmove=1 hat und x gedrückt wird nur Objekt 2 auf canmove=1 gesetzt
    wird.

    Magical dream time!
  • Ich würde da vorschlagen, die Scripte nicht auf den Objekten selbst laufen zu lassen, sondern auf einem Controller, der das ganze überwacht.

    Create des Controllers

    GML-Quellcode

    1. active=1
    2. playercount=instance_number(players) //Am besten dafür ein Parent nehmen


    Step des Controllers

    GML-Quellcode

    1. if keyboard_check_pressed(ord("X"))
    2. {
    3. active+=1
    4. if active>playercount active=1
    5. }




    Step (der jeweiligen Objekte)

    GML-Quellcode

    1. if controller.active=1/2/3 //je nachdem
    2. {
    3. if keyboard_check(vk_left) x-=4
    4. if keyboard_check(vk_right) x+=4
    5. }


    Das sollte die Aufgabe erfüllen. Ich hoffe, ich konnte dir helfen :)


    Edit: (P.S.)
    "playercount" ist dazu da, um das System flexibler zu machen - damit kannst du nämlich nicht nur drei, sondern beliebig viele Objekte einbauen. Wenn du nicht mehr als drei willst, ersetze playercount einfach durch die Zahl 3 und entferne es aus dem Create-Event.

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

  • Benutzer online 1

    1 Besucher