Bessere Steuerung?

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

  • Bessere Steuerung?

    Hey Leute,
    ich arbeite gerade an einem TopDown-Spiel, dass mit der Tastatur gespielt wird. Ich habe mich in letzter Zeit mit kleineren Sachen befasst, die das Spiel etwas aufpolieren sollen beschäftigt.
    Nun wollte ich die Steuerung angenehmer machen. Die Illusion, dass der Spieler nicht ganz "abgehackt" geht, habe ich mittels View erschaffen, der etwas nachzieht. Jedoch fehlt mir dieses ganz leichte Rutsch-Gefühl beim gehen. Meine Wunschvorstellung wäre eine Bewegung wie bei The Binding of Isaac(falls ihr das Spiel nicht kennen solltet, könnt ihr die Flash-Demo im Browser spielen(einfach googeln)). Ich habe gehört ,dass das mit friction oder sowas gehen soll, bin mir aber nicht sicher. Dazu wär es vielleicht erwähnenswert, dass mein Spiel in größtenteils 16x16 Grafiken benutzt, weil vielleicht der Effekt bei solch einer kleinen Grafikgröße gar nicht zur Geltung kommt.

    Hier mein View-Code (nur falls ihr nicht wisst was ich mit nachziehen meine)

    GML-Quellcode

    1. ///STEP EVENT
    2. view_xview[0] += ((x-(view_wview[0]/2)-view_xview[0]))*.125
    3. view_yview[0] += ((y-(view_hview[0]/2)-view_yview[0]))*.125
    4. ///END STEP EVENT
    5. if instance_exists(oSpieler)
    6. {
    7. x = oSpieler.x;
    8. y = oSpieler.y;
    9. }
    Alles anzeigen


    Und hier zum eigentlich wichtigen Teil, dem Movement:

    GML-Quellcode

    1. ///STEP EVENT
    2. //++WASD Gehen++//
    3. //Oben
    4. if keyboard_check(global.obenTaste) && !keyboard_check(global.untenTaste) && !keyboard_check(global.rechtsTaste) && !keyboard_check(global.linksTaste)
    5. {
    6. y=y-global.spd
    7. image_xscale = 1
    8. sprite_index = gehenO
    9. global.richtung = "oben"
    10. }
    11. //Unten
    12. if keyboard_check(global.untenTaste) && !keyboard_check(global.obenTaste) && !keyboard_check(global.rechtsTaste) && !keyboard_check(global.linksTaste)
    13. {
    14. y=y+global.spd
    15. image_xscale = 1
    16. sprite_index = gehenU
    17. global.richtung = "unten"
    18. }
    19. //Rechts
    20. if keyboard_check(global.rechtsTaste) && !keyboard_check(global.untenTaste) && !keyboard_check(global.obenTaste) && !keyboard_check(global.linksTaste)
    21. {
    22. x=x+global.spd
    23. image_xscale = 1
    24. sprite_index = gehenR
    25. global.richtung = "rechts"
    26. }
    27. //Links
    28. if keyboard_check(global.linksTaste) && !keyboard_check(global.untenTaste) && !keyboard_check(global.rechtsTaste) && !keyboard_check(global.obenTaste)
    29. {
    30. x=x-global.spd
    31. image_xscale = -1
    32. sprite_index = gehenR
    33. global.richtung = "links"
    34. }
    35. //++Diagonal gehen++//
    36. //LinksOben
    37. if keyboard_check(global.obenTaste) && !keyboard_check(global.untenTaste) && !keyboard_check(global.rechtsTaste) && keyboard_check(global.linksTaste)
    38. {
    39. y=y-global.spd/1.5
    40. x=x-global.spd/1.5
    41. image_xscale = 1
    42. sprite_index = gehenO
    43. global.richtung = "oben"
    44. }
    45. //LinksUnten
    46. if keyboard_check(global.untenTaste) && !keyboard_check(global.obenTaste) && !keyboard_check(global.rechtsTaste) && keyboard_check(global.linksTaste)
    47. {
    48. y=y+global.spd/1.5
    49. x=x-global.spd/1.5
    50. image_xscale = 1
    51. sprite_index = gehenU
    52. global.richtung = "unten"
    53. }
    54. //RechtsOben
    55. if keyboard_check(global.rechtsTaste) && !keyboard_check(global.untenTaste) && keyboard_check(global.obenTaste) && !keyboard_check(global.linksTaste)
    56. {
    57. y=y-global.spd/1.5
    58. x=x+global.spd/1.5
    59. image_xscale = 1
    60. sprite_index = gehenO
    61. global.richtung = "rechts"
    62. }
    63. //RechtsUnten
    64. if keyboard_check(global.rechtsTaste) && keyboard_check(global.untenTaste) && !keyboard_check(global.linksTaste) && !keyboard_check(global.obenTaste)
    65. {
    66. y=y+global.spd/1.5
    67. x=x+global.spd/1.5
    68. image_xscale = -1
    69. sprite_index = gehenU
    70. global.richtung = "links"
    71. }
    72. //Stehenbleiben
    73. if keyboard_check(vk_nokey)
    74. {
    75. image_speed = .04
    76. switch (global.richtung)
    77. {
    78. case "oben":
    79. sprite_index = argument1
    80. image_xscale = 1
    81. break;
    82. case "unten":
    83. sprite_index = argument0
    84. image_xscale = 1
    85. break;
    86. case "rechts":
    87. sprite_index = argument2
    88. image_xscale = 1
    89. break;
    90. case "links":
    91. sprite_index = argument2
    92. image_xscale = -1
    93. break;
    94. }
    95. }
    Alles anzeigen


    Kurze Zusammenfassung meines Wunsches:

    -leichten Rutscheffekt beim Gehen
    -am besten wie bei The Binding of Isaac
  • Ja mit friction geht das ganz leicht. Statt x = x + global.spd nimmtst du speed und direction. Also speed = global.spd, direction = 0 beim nach rechts gehen. Und dann machst du friction z.B. auf 0.1. Dann wird dem speed immer 0.1 abgezogen bis speed 0 ist. Damit hast du den Rutscheffekt.

    25 Views und ich bin der erste der bei so einer leichten Sache antwortet. Sehr merkwürdig. Vielleicht hast es aber jetzt schon längst alleine hinbekommen und friction einfach ausprobiert.