event das eintritt wenn eine taste nicht gedrueckt ist

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

  • event das eintritt wenn eine taste nicht gedrueckt ist

    Moin Moin

    ich habe folgendes Problem...


    mein ball soll folgendermaßen gestäuert werden:

    wenn ich pfeil hoch druecke dann soll vspeed -= 0.2
    wenn ich pfeil links druecke dann soll hspeed -= 0.2
    wenn ich pfeil rechts druecke dann soll hspeed += 0.2

    wenn die drei jetzt nicht gedrückt sind , dann soll der ball halt runtergehen. zuerst hab ich das ins event geschrieben das eintritt wenn keine taste gedrueckt wird aber das ist eine schlechte lösung, da dann sobald ich irgendeine taste außer den dreihen druecke, der ball seine mometane richtung und geschwindigkeit beibehält und nicht mehr weiter fällt. Damit wird er sehr leicht zu stäuern und das Spiel langweilig.

    gibt es also irgendein Event, das eintritt wenn genau eine Taste nicht gedrueckt wird oder muss ich das im Step Event abfragen?

    grazie in anticipo
    Philosophie bedeutet, in einem stockdunklem raum nach einer pechschwarzen katze zu suchen, die gar nicht existiert ;) :D
    ------------------------------------
    Mein Projekt: >>>>>>>>>>>>>>>>>>>> DER EINSAME SCHLORK <<<<<<<<<<<<<<<<<<
  • GML-Quellcode

    1. if keyboard_check(vk_up) //up\down u.s.w.
    2. {
    3. vspeed=-0.2;
    4. }
    5. else
    6. {
    7. vspeed=0;
    8. }


    Glaube so.Weiß es aber gerade net.

    Wenn du else net kennst:

    Esle tritt immer ein, wenn die if abfrage nicht eintritt b.z.w. falsch ist.Mit falsch meine ich NICHT false.

    Weil z.b.

    if diesda = false
    {
    ...
    }
    else
    {
    ...
    }

    geht auch ;)

    Edit:
    Man kann das ja net so im raum stehen lassen.GML Fehler berichtigt.

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von Slim_Jim ()

  • ok danke sehr genau den code für den tastendruck meinte ich^^

    dann mach ich das jetzt nämlich einfach ins anykey event^^
    tja manchmal ist das genaue gegenteil der bisherigen versuche die lösung is schon komisch :D

    danke sehr
    Philosophie bedeutet, in einem stockdunklem raum nach einer pechschwarzen katze zu suchen, die gar nicht existiert ;) :D
    ------------------------------------
    Mein Projekt: >>>>>>>>>>>>>>>>>>>> DER EINSAME SCHLORK <<<<<<<<<<<<<<<<<<
  • hab' mir ma die zeit genommen dir dat zu scripten, ich glaube so wolltest du das:

    GML-Quellcode

    1. if keyboard_check(vk_up)
    2. {
    3. if (vspeed>0)
    4. {
    5. vspeed = -0.2
    6. }
    7. else
    8. {vspeed-=0.2}
    9. }
    10. if keyboard_check(vk_left)
    11. {
    12. hspeed -= 0.2
    13. }
    14. if keyboard_check(vk_right)
    15. {
    16. hspeed += 0.2
    17. }
    18. if !keyboard_check(vk_up) && !keyboard_check(vk_left) && !keyboard_check(vk_right)
    19. {
    20. if (vspeed<0)
    21. {
    22. vspeed = 0.2
    23. }
    24. else
    25. {vspeed+=0.2}
    26. }
    Alles anzeigen


    hoffe es ist richtig, bei mir hatte es geklappt

    ciao :P
    €dit:
    hab nen fehler enddeckt
    €dit²:
    da war wer schneller... naja, sry hatte den thread offengelassen un war essen un son kram ;)
    mööp

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

  • GML-Quellcode

    1. if keyboard_check(vk_up)
    2. {}
    3. else
    4. {if keyboard_check(vk_left)
    5. {}
    6. else{if keyboard_check(vk_right)
    7. {}
    8. else
    9. {
    10. vspeed += geschwindigkeit;
    11. }
    12. }
    13. }
    Alles anzeigen


    das hab ich im any_key event und dann hab ich für die drei pfeile oben, links, rechts noch mal das event genommen. so funzt es ohne fehler und so wie ich es haben will aber dankt euch bin ich drauf gekommen danke sehr.
    Philosophie bedeutet, in einem stockdunklem raum nach einer pechschwarzen katze zu suchen, die gar nicht existiert ;) :D
    ------------------------------------
    Mein Projekt: >>>>>>>>>>>>>>>>>>>> DER EINSAME SCHLORK <<<<<<<<<<<<<<<<<<
  • Sacht ma was habt ihr eigentlich für komplizierte und unübersichtliche bewegungskripte? o_O
    Das tuts auch:

    GML-Quellcode

    1. if keyboard_check(vk_up)
    2. {
    3. vspeed=-0.2;
    4. }
    5. if keyboard_check(vk_down)
    6. {
    7. vspeed=0.2;
    8. }
    9. if keyboard_check(vk_right)
    10. {
    11. hspeed=0.2;
    12. }
    13. if keyboard_check(vk_left)
    14. {
    15. hspeed=-0.2;
    16. }
    17. if keyboard_check(vk_nokey)
    18. {
    19. hspeed=0
    20. vspeed=0
    21. }
    Alles anzeigen
  • dein script ist toll für ne einfache bewegung^^ aber du hast nicht ganz gesehen wie ich es will denke ich^^ was aber auch wie ich zugebe nicht klar ersichtlich war ;) :D

    ich will es so das er schneller wird solang ich eine taste drücke und automatisch beginnt zu fallen solange weder oben links oder rechts gedrückt wird und das geht so wie bei dir nicht, da man da leider nicht während man die taste "oben" drückt nciht auch noch nach links oder rechts drücken kann^^ bzw drücken kann man schon es tut sich nur nichts und das währe verhängnisvoll für die steuerung :D
    Philosophie bedeutet, in einem stockdunklem raum nach einer pechschwarzen katze zu suchen, die gar nicht existiert ;) :D
    ------------------------------------
    Mein Projekt: >>>>>>>>>>>>>>>>>>>> DER EINSAME SCHLORK <<<<<<<<<<<<<<<<<<
  • Dann mach das so:

    GML-Quellcode

    1. //ins Create Event
    2. //Alle Variblen auf 0 setzen
    3. acc = 0.3//acc = Beschleinigung
    4. accup = 0
    5. accdown = 0
    6. accleft = 0
    7. accright = 0
    8. accfallen = 0

    GML-Quellcode

    1. //ins Step event
    2. x += accright
    3. x -=accleft
    4. y+=accdown
    5. y-=accup
    6. //vielleicht habe ich da etwas vertauscht, also dass der nach links statt nach rechts geht, glaube ich aber nich
    7. if keyboard_check(vk_up)
    8. accup+=acc
    9. if keyboard_check(vk_down)
    10. accdown +=acc
    11. if keyboard_check(vk_right)
    12. accright +=acc
    13. if keyboard_check(vk_left)
    14. accleft +=acc
    15. if keyboard_check_released(vk_left)
    16. accleft = 0
    17. if keyboard_check_released(vk_right)
    18. accright = 0
    19. if keyboard_check_released(vk_up)
    20. accup = 0
    21. if keyboard_check_released(vk_down)
    22. accdown = 0
    23. //So müsste das gehen, habe leider net den GM da, um es zu testen
    24. //Wenn man nix drückzt, dann fällt der Charakter.. Also is accdown irgendwie nutzlos xD
    25. if accdown = 0 and accup = 0 and accleft = 0 and accright = 0
    26. {
    27. //FALLEN
    28. accfallen +=acc
    29. y+= accfallen
    30. }
    31. else
    32. accfallen = 0
    Alles anzeigen


    Edit: Habe was vertauscht xD

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

  • Ja dann machs doch so^^:

    GML-Quellcode

    1. if keyboard_check(vk_up)
    2. {
    3. if vspeed > -4
    4. {
    5. vspeed-=0.2;
    6. }
    7. }
    8. if keyboard_check(vk_down)
    9. {
    10. if vspeed < 4
    11. {
    12. vspeed+=0.2;
    13. }
    14. }
    15. if keyboard_check(vk_right)
    16. {
    17. if hspeed < 4
    18. {
    19. hspeed+=0.2;
    20. }
    21. }
    22. if keyboard_check(vk_left)
    23. {
    24. if hspeed > -4
    25. {
    26. hspeed-=0.2;
    27. }
    28. }
    29. if keyboard_check(vk_nokey)
    30. {
    31. if hspeed > 0
    32. {
    33. hspeed-=0.2
    34. }
    35. if hspeed < 0
    36. {
    37. hspeed+=0.2
    38. }
    39. if vspeed > 0
    40. {
    41. vspeed-=0.2
    42. }
    43. if vspeed < 0
    44. {
    45. vspeed+=0.2
    46. }
    47. }
    Alles anzeigen


    €dit: Kleiner Rechtschreibefehler im Code^^

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

  • is doch schon alles gelöst^^

    es funzt einwandreif ich hab von jeder lösung ein bischen genommen und jetzt fliegt er so wie ich will^^

    ich wollt einfach nur noch mal schreiben das das schon gelöst ist weil mit den neuen beiträgen sieht das ja fast so aus als bestände das Problem noch^^

    und man soll ja die übersicht behalten^^

    also danke :D
    Philosophie bedeutet, in einem stockdunklem raum nach einer pechschwarzen katze zu suchen, die gar nicht existiert ;) :D
    ------------------------------------
    Mein Projekt: >>>>>>>>>>>>>>>>>>>> DER EINSAME SCHLORK <<<<<<<<<<<<<<<<<<