Schwert soll neben der Spielfigur erscheinen

  • GM 8

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

  • Schwert soll neben der Spielfigur erscheinen

    Hi, ich bin 1234 und neu auf diesem Forum.
    Ich möchte ein Adventure-Spiel machen, im Stil des ersten Zeldas (für NES)
    Ich habe bereits vier Objekte für die Spielfigur erstellt, eines mit Sicht nach Norden und drei andere, die nach osten, etc. schauen.
    Die Spielfigur bewegt sich, bleibt stehen, wechselt das Objekt, das funktioniert alles reibungslos.
    Jetzt will ich aber, dass sie bei Drücken der Leertaste ein Schwert zückt, dafür habe ich vier Schwert-Objekte erstellt, eines für jede Richtung. Jetzt muss ich aber die Koordinaten für das Schwert eingeben und hier kommt meine Frage:

    Wie sorge ich dafür, dass das Schwert immer über (bzw. rechts, links von) der Spielfigur erscheint, egal, wo diese gerade steht?

    Ich hoffe, mir kann jemand helfen ^^

    LG
    1234 (und nein, mir fällt wirklich kein besserer Name ein)
  • du wechsetst einfach das entsprechnede Sprite mit direction kannst du die Blickrichtung abfragen

    GML-Quellcode

    1. if (direction==0) {
    2. sprite_index=name des sprites
    3. }
    4. else if (direction==90) {
    5. sprite_index=name des sprites
    6. }
    7. if (direction==180) {
    8. sprite_index=name des sprites
    9. }
    10. if (direction==360) {
    11. sprite_index=name des sprites
    12. }
    Alles anzeigen


    Name des Sprites musst du durch rechts, links usw. ersetzen nähesres dazu in der Hilfe
  • @jürgen2009: wäääh... nimm doch das switch-Statement, anstatt diese ekelhaften Abfragen:

    GML-Quellcode

    1. switch(direction){
    2. case 0: sprite_index = name_des_sprites; break;
    3. case 90: sprite_index = name_des_sprites; break;
    4. case 180: sprite_index = name_des_sprites; break;
    5. case 360: sprite_index = name_des_sprites; break;
    6. }


    MfG

    Albert Einstein schrieb:

    Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.
  • @jürgen bzw Trixt0r (weil du es gleich zitiert hast:D)
    nur so btw, 360° = 0° :D
    wenn dann 270 ;)

    @1234

    mach nicht für jede blickrichtung ein objekt!
    du kannst den sprite_index (quasi das aussehen des Spielers) alles in einem objekt haben.

    wie das geht haben dir schon die 2 ober mir gezeigt :p

    hast du ein schwert für alle 4 richtungen gemacht oder ein schwert mit dem spieler?

    wenn du ein schwert mit dem spieler gemacht hast kannst dus so machen (eine variante)

    :event_create:

    GML-Quellcode

    1. //bei der methode verwendet man (ich) eine variable um festzustellen, ob das schwert gezogen ist. diese eine Variable muss zuerst definiert werden
    2. schwertgezogen = false; //das schwert ist nicht standardmäßig gezogen


    :event_step:

    GML-Quellcode

    1. if (keyboard_check_pressed(vk_space)) //wenn man auf space drückt...
    2. {
    3. if (schwertgezogen == false) //wenn das schwert nicht gezogen ist...
    4. {
    5. schwertgezogen = true; // ... wird es jetzt gezogen (variable wird auf "wahr" gesetzt)...
    6. }
    7. else
    8. {
    9. schwertgezogen = false; //wenn diese bereits auf "wahr" war, so wird diese wieder falsch -> das schwert ist nichtmehr gezückt
    10. }
    11. }
    12. if (schwertgezogen == false) //wenn das schwert NICHT gezogen ist -> der code ersparrt dir deine anderen objekte
    13. {
    14. switch(direction)
    15. case 0:
    16. sprite_index = dein_sprite_welches_nach_rechts_sieht; //da veränderst du den index vom sprite... steckt im wort:D
    17. break; //dieses break gehört immer zu einer switch funktion
    18. case 90:
    19. sprite_index = dein_sprite_welches_nach_oben_sieht; //gleich wie oben...
    20. break;
    21. case 180:
    22. sprite_index = dein_sprite_welches_nach_rechts_sieht; //...
    23. break;
    24. case 270:
    25. sprite_index = dein_sprite_welches_nach_rechts_sieht; //ebenso
    26. break;
    27. }
    28. //jetzt sehen die sprites in die richtige richtung
    29. //jetzt kommt der teil wenn das schwert gezückt ist
    30. if (schwertgezogen == true) //wenn es gezogen ist...
    31. {
    32. switch(direction)
    33. case 0:
    34. sprite_index = dein_sprite_welches_nach_rechts_sieht_MIT_waffe; //das gleiche wie oben, nur eben mit dem schwert.
    35. break; //dieses break gehört immer zu einer switch funktion
    36. case 90:
    37. sprite_index = dein_sprite_welches_nach_oben_sieht_MIT_waffe;
    38. break;
    39. case 180:
    40. sprite_index = dein_sprite_welches_nach_rechts_sieht_MIT_waffe;
    41. break;
    42. case 270:
    43. sprite_index = dein_sprite_welches_nach_rechts_sieht_MIT_waffe;
    44. break;
    45. }
    Alles anzeigen


    hoffe ich konnte helfen und es passt alles :p
    mfg Salmi
  • Falls es dich noch interessiert:

    Du kannst das Ganze auch mit D&D machen (GML lohnt sich aber auf jeden Fall und lernt sich schnell):

    :event_draw:
    :action_ifvariable: var: direction = value: 0
    :action_begin:
    :action_drawsprite: sprite: dein rechts-sprite x: 0 y: 0 relative: yes
    :action_drawsprite: sprite: dein schwert-sprite x: -8 y: 0 relative: yes
    :action_end:
    :action_ifvariable: var: direction = value: 90
    :action_begin:
    :action_drawsprite: sprite: dein hoch-sprite x: 0 y: 0 relative: yes
    :action_drawsprite: sprite: dein schwert-sprite x: 0 y: -8 relative: yes
    :action_end:
    :action_ifvariable: var: direction = value: 180
    :action_begin:
    :action_drawsprite: sprite: dein links-sprite x: 0 y: 0 relative: yes
    :action_drawsprite: sprite: dein schwert-sprite x: 8 y: 0 relative: yes
    :action_end:
    :action_ifvariable: var: direction = value: 270
    :action_begin:
    :action_drawsprite: sprite: dein unten-sprite x: 0 y: 0 relative: yes
    :action_drawsprite: sprite: dein schwert-sprite x: 0 y: 8 relative: yes
    :action_end:

    Die 8ten beim Schwert bewirken nur, dass das Schwert etwas versetzt ist, das kannst du auch ändern.

    maxda

    P.S. Wie immer ungetestet und ohne Gewähr (sollte aber (ungefähr) so funktionieren).