sprite wechseln abhängig von aktuellem sprite und subimage (sprite_index und image_index check)

  • GM 8

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

  • sprite wechseln abhängig von aktuellem sprite und subimage (sprite_index und image_index check)

    Hallo,
    ich habe hier ein walking Sprite zum Laufen und mehrere shoot_walking Sprites also fürs schießen während des Laufens.

    Das walking Sprite besteht aus 10 Subimages.
    Für jedes walking Subimage,
    gibt es ein shoot_walking Sprite.
    Das sieht aus wie das jeweilige Subimage +Schuss und besteht selbst aus 3 Subimages.
    Das shoot_walking Sprite wird dann so schnell abgespielt, wie ein Subimage in dem walking Sprite.

    Wie kriege ich es jetzt hin, das walking Sprite bei einem bestimmten Subimage zu ersetzten?
    also z.B

    GML-Quellcode

    1. if
    2. sprite_index=walking_sprite
    3. and
    4. image_index=0
    5. {
    6. sprite_index=shoot_walking0
    7. }
    8. if
    9. sprite_index=walking_sprite
    10. and
    11. image_index=1
    12. {
    13. sprite_index=shoot_walking1
    14. }
    15. usw
    Alles anzeigen


    Das "and" scheint das Problem zu sein.
    Ich kriege nämlich immer das erste shoot_walking sprite,
    als würde ich immer nur sprite_index=walking_sprite checken

    Danke für die Hilfe! :D
    Ware wa messiah nari! Hahaha
  • Mh, dafür würde ich den switch-Operator benutzen, also folgendermaßen:

    GML-Quellcode

    1. if sprite_index != walking_sprite
    2. { exit; } //Falls der Sprite nicht dem Laufsprite entspricht, wird der Code abgebrochen
    3. switch image_index
    4. { case 0:
    5. sprite_index = shoot_walking0;
    6. image_index = 0;
    7. break;
    8. case 1:
    9. sprite_index = shoot_walking1; /*... usw.*/ }
    Alles anzeigen

    Allerdings habe ich das Gefühl, das dein Problem darin liegt, das du image_index nicht wieder auf 0 setzt; D.h. das wenn du deinen Sprite mit, sagen wir mal, image_index = 5 wechselst und dein neuer Sprite nur 3 Subimages hat, ist die Animation natürlich sofort beendet.

    Nur so am Rande: Eine Option, den Code zu verkürzen, wäre folgende:

    GML-Quellcode

    1. if sprite_index != walking_sprite
    2. { exit; }
    3. execute_string ("sprite_index = shoot_walking" + string (i));

    Aber damit darfst du dich hier nicht sehen lassen; Das ist so ziemlich der langsamste und unflexibelste Code, den man schreiben kann ^^'
  • Phoenix schrieb:

    Mh, dafür würde ich den switch-Operator benutzen, also folgendermaßen:

    GML-Quellcode

    1. if sprite_index != walking_sprite
    2. { exit; } //Falls der Sprite nicht dem Laufsprite entspricht, wird der Code abgebrochen
    3. switch image_index
    4. { case 0:
    5. sprite_index = shoot_walking0;
    6. image_index = 0;
    7. break;
    8. case 1:
    9. sprite_index = shoot_walking1; /*... usw.*/ }
    Alles anzeigen

    Allerdings habe ich das Gefühl, das dein Problem darin liegt, das du image_index nicht wieder auf 0 setzt; D.h. das wenn du deinen Sprite mit, sagen wir mal, image_index = 5 wechselst und dein neuer Sprite nur 3 Subimages hat, ist die Animation natürlich sofort beendet.

    Nur so am Rande: Eine Option, den Code zu verkürzen, wäre folgende:

    GML-Quellcode

    1. if sprite_index != walking_sprite
    2. { exit; }
    3. execute_string ("sprite_index = shoot_walking" + string (i));

    Aber damit darfst du dich hier nicht sehen lassen; Das ist so ziemlich der langsamste und unflexibelste Code, den man schreiben kann ^^'
    OK, ich probiers morgen mal aus ;D
    Danke für die Hilfe erstmal :D
    Ware wa messiah nari! Hahaha
  • Hi

    Windapple hat in der "GML - Tutorial für Anfänger" folgendes dafür geschrieben

    GML-Quellcode

    1. GML
    2. //Skript subimage_cycle
    3. //Das Sprite der aktuellen Instanz "pendelt" zwischen zwei Grenzen hin und her
    4. if (image_index < argument0 || image_index > argument1)
    5. {
    6. image_index = argument0;
    7. }


    Würde eine Instanz das vorherige Beispiel als Sprite haben und wir würden im End Step-Event schreiben

    GML-Quellcode

    1. GML
    2. subimage_cycle(6,11);


    dann würde das Sprite von 6 bis 11 angezeigt werden und dann wieder zurück auf 6 springen

    Lies dir Einfach mal "GML - Die Einsteigerreferenz - Tutorialarchiv" durch. Da steckt sehr viel wichtiges drinnen.

    Gruss Drachen :)
  • Okay, ich bin gerade dabei ein Intro Video für mein Spiel zu machen,
    hab grad keinen Bock zu scripten xP
    Ich probier eure Vorschläge dann später mal aus.

    Danke für die Hilfe soweit,

    -Kevin
    Ware wa messiah nari! Hahaha