Frage zur erstellung von Sprites

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

    • Frage zur erstellung von Sprites

      hallo

      also ich will gerade einen lift erstellen für mein kleines spiel.aber er sollte so sein das er normal zu ist und wenn ich auf einen knopf drücke gehn die türen auf...(das ist ja kein problem)

      aber dann soll der player auch noch reingehn können ...wie kann ich das verwirklichen???

      also entweder mit einer animation oder das der spieler direkt den player hinein steuert. aber wie bekomm ich das hin?

      könnte mir da jemand auskunft geben? es ist ein 2d spiel...


      und ne frage nebenbei also wenn ich ein sprite drawen lasse und image index als number angebe sollte er ja die animation wenn es eine gibt abspielen.
      ist es dann möglich es so zu machen?

      GML-Quellcode

      1. if keyboard_check(vk_enter)
      2. [
      3. ​sprite = draw_sprite(spr_weißnichtwas,image_index,x,y);
      4. if (sprite.image_index >= 10)
      5. {
      6. sprite = draw_sprite(spr_weißnichtwas2,0,x,y);
      7. }
      8. }


      oder nicht? ich habs natürlich schon versucht und es ging nicht aber vielleicht mach ich da ja was falsch
    • Du könntest das sprite etwas kleiner werden lassen, oder einfach dünkler. sieh dir mal an wie Fez das macht wenn man zu einer Tür hineingeht.

      Zu deiner zweiten Frage, das ist fast richtig. Du brauchst aber nur image_index anstatt sprite.image_index weil image_index eine vorgefertigte variable eines jeden Objects ist /wie zB speed oder direction). Du kannst aber, if obj_gegner.image_index verwenden.

      PS: Ich habe mein pathfindig Projekt leider nirgends gefunden.

      ancient-pixel.com
      youtube.com/user/SebastianMerkl <<< ich freu mich über einen Besuch ;)
    • Hi

      Hier mal Script von Windapple, der hier früher viel tätig war.

      GML-Quellcode

      1. // Skript subimage_cycle
      2. // Das Sprite der aktuellen Instanz "pendelt" zwischen zwei Grenzen hin und her
      3. // Autor Windapple (Game Maker)
      4. // argument0 = Instance id
      5. // argument1 = Animationsanfang
      6. // argument2 = Animationsende
      7. if (argument0.image_index < argument1 || argument0.image_index > argument2)
      8. {
      9. argument0.image_index = argument1;
      10. }
      Alles anzeigen


      Hoffe du kannst es gebrauchen. Zu finden war es auf "GML - Die Einsteigerreferenz"

      Gruß Drachen
    • Du malst einfach ein Sprite mit der Rückwand des Fahrstuhls. Darüber malst du die Türen. Wenn der Spieler vor dem Fahrstuhl steht soll die Öffnungsanimation ablaufen, wenn ganz offen machst du einen alarm[0] = room_speed; Darauf soll sich die Animation rückwärts (schließen) abspielen, aber diesmal muss im draw end nach dem Spieler gedrawt werden, damit dieser von den türen bedeckt werden kann, aber immer noch vor dem Fahrstuhlhintergrund steht
      132 little bugs in the code. 132 little bugs. Fix a few, set the compiler to stew, 172 little bugs in the code... :vogel:
    • @Aku_Ryou

      ok schade das du es nicht gefunden hast...ich habe mich ein wenig umgesehen und habe etwas bemerkt..man könnte es doch so machen das ich ein grid zeichen lasse mit mp grid..(natürlich zuerst erstellen)

      und dann erstelle ich eine variable in der ich path_add speichere...

      und wenn man ein objekt selektiert hat und auf ein anderes klickt soll es einen path erstellen und drawn...und darin dann noch eine collisions abfrage ob irgendwas dazwischen ist....denkst du ich könnte es so machen???
      werd es natürlich mal testen...

      aber was meinst du mit fez?? das spiel???
    • @Aku_Ryou

      achso noch was was meinst du jetzt dazu mit den mp grid und paths....glaubst könnte ich es so machen???


      und wegen den code hier:

      GML-Quellcode

      1. if keyboard_check(vk_enter)
      2. [
      3. sprite = draw_sprite(spr_weißnichtwas,image_index,x,y);
      4. if (sprite.image_index >= 10)
      5. {
      6. sprite = draw_sprite(spr_weißnichtwas2,0,x,y);
      7. }
      8. }


      hast du geschrieben:
      das ich nur image index benutzen soll oder direkt das object image index....aber was wenn das objekt schon ein sprite hat....und ich im draw event dann diesen code benutze ....bezieht sich das image index dann nicht auf das hauptsprite des objektes?weil hier lasse ich ja nur was drawen mit einen image index
    • Ja, ich denke das mit path, add und sich dann den path drawen lassen, sollte funktionieren :)

      image_index bezieht sich immer nur auf das sprite das im object angegeben ist, wenn du das object erstellst. Sagen wir es ist "spr_haupt" und hat 8 subimages. Dann ist der image index immer eine Zahl von 0 bis 7.
      Wenn du dann ein "spr_anderes" drawst bezieht sich der image_index immernoch auf "spr_haupt". Es gibt aber auch kein "spr_anderes.image_index" nur ein "obj_anderes.image_index".

      also ja, wenn dein object schon ein sprite hat und du lässt dann ein anderes sprite drawen und benützt image_index dann siehst du nur die Anzahl an Bildern die das Hauptsprite hat und nicht die vom andren sprite.

      Um das zu lösen musst du dir deine eigne image_index variable schreiben.
      Ich zB benutze immer so ein system:

      GML-Quellcode

      1. anim = 0;
      2. animEnd = 8;//anzahl der einzelbilder der animation
      3. animSpd = 1;//quasi image_speed
      4. ///STEP
      5. anim += animSpd;
      6. if anim >= animEnd
      7. {
      8. anim = 0;
      9. }
      10. ///DRAW
      11. draw_sprite(deinSprite,anim,x,y);
      Alles anzeigen

      dann ist es egal ob dein object sprite 0 oder 200 einzelbilder hat, er drawed dir dein Sprite immer richtig.

      Wenn du mehrere sprites unterschiedlicher Länge hast, die du gleichzeitig drawen lassen willst, dann ist das der perfekte Fall für ein ds_grid.

      GML-Quellcode

      1. sprites = ds_grid_create(Anzahl,4);
      2. sprites[# 0,0] = deinSprite;
      3. sprites[# 0,1] = 0;//anim
      4. sprites[# 0,2] = 8;//animEnd
      5. sprites[# 0,3] = 1;//animSpd
      6. sprites[# 1,0] = deinZweitesSprite;
      7. sprites[# 1,1] = 0;//anim
      8. sprites[# 1,2] = 12;//animEnd
      9. sprites[# 1,3] = 0.2;//animSpd
      Alles anzeigen

      ancient-pixel.com
      youtube.com/user/SebastianMerkl <<< ich freu mich über einen Besuch ;)