Animierte Bewegung

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

  • Animierte Bewegung

    Hallo,
    ich habe ein File erstellt in dem Menschen bewegt werden sollen. Sie werden durch ein aufgezogenes Rechteck ausgewählt und mit der rechten Maustaste zu einer Position geschickt.

    Jetzt würde ich die Bewegung gerne animieren, ich weiß aber nicht wie.
    Es wäre schön wenn ihr euch das File mal ansehen könntet, die nötigen Sprites für die Animation sind dabei.

    Außerdem würde ich die Objekte zusätzlich gerne durch einfachen linken Mausklick auswählen können, um nicht immer das Rechteck zu verwenden, wenn ich nur einen Mensch auswählen möchte.
    (Vielleicht auch noch mehrfach Auswahl durch Shift-Taste)

    Manchmal kommt es auch vor, wenn die Objekte ihren Sprite von "unselektiert" in "selektiert" ändern (durch Auswahl mit dem Rechteck),dass sie dann übereinander liegen (wegen des Statusbalkens), so dass sie nicht mehr bewegt werden können, es sei denn man drückt die linke Maustaste um die selektierung wieder aufzuheben. Weiß jemand wie ich den Fehler beheben kann???


    Vielen, vielen Dank
    gm-freak
    Dateien
    [SIZE="25"][COLOR="Red"]XP Hilfe - Schluss mit PC-Problemen[/COLOR][/SIZE]
    [SIZE="20"]http://xphilfe.de.tt[/SIZE]
  • RE: Animierte Bewegung

    rapidshare.de/files/15892549/animierte_bewegung.gm6.html
    sooo, folgendes:
    - also, um eine Figur zu bewegen musst du nur noch die linke maustaste betätigen
    - um mehrere zu markieren "shift" drücken und den rahmen aufzeihen
    - ähm, dein Fehler mit dem hängen bleiben war, dass du die sprite und damit auch die bounding-box geändert hast... einfach die Boundingbox manuell eingeben und das problem taucht nichtmehr auf (also die Boundingbox muss bei einer Spriteänderung gleich bleiben, sonst ändert sich die Kollisionsgröße...)

    wie du sicher sehen wirst, gibt es 2 neue Variablen, die eine ist die depth konstante, die im step-event auf depth = -y gesetzt wird. das bewirkt, dass die sprites (objekte) die eine größere y-koordinate haben weiter vorne sind...

    die andere Varibable ist die ani-Variable, die die animatonen steurert (einfach anschauen, ist ganz logisch ;) )

    Noch ein Tipp:
    Niemals Objecte wie die Sprites, sounds, paths usw. benennen, also kein name darf irgenwo 2 mal vorkommen, dass führt nur zu komplikationen.

    das wars, tschau :D
    hallo erstmal....
  • Super, und vielen Dank für deine Mühe.

    Ich hätte aber noch eine Kleinigkeit.
    Es wäre gut wenn man allein bei gedrückter linker Maustaste das Rechteck aufzieht und so alle Einheiten auswählen kann.
    Das mit dem Shift sollte eigentlich woanders hin und zwar, wenn man eine Einheit durch einfachen Linksklick ausgewählt hat, aber noch eine zusätzliche durch einfachen Mausklick auswählen möchte, soll die Shift Taste mitgrückt werden.

    mfg gm-freak

    PS: Machmal kommt es in deiner Datei vor, dass zwei Menschen aneinander "kleben" und sich wie wild im Kreis drehen.

    Vielleicht kannst du mir ja auch hier weiter helfen
    [SIZE="25"][COLOR="Red"]XP Hilfe - Schluss mit PC-Problemen[/COLOR][/SIZE]
    [SIZE="20"]http://xphilfe.de.tt[/SIZE]

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von gm-freak ()

  • lol,
    nein... ich hatte die letzten Tage keine Zeit. Sorry, aber ich fang dann mal an, und werd dir morgen nachmittag oder heute abend was hochladen..

    Wegen dem Verrückten Rumdrehen...
    Das kann ich mir ehrlich gesagt nicht erklären, deshalb muss ich ein Script schreiben, bei dem das nicht über die Ausweichenfunktion läuft..
    also entweder morgen oder heut spät abend...
    hallo erstmal....
  • Danke, du bist mir echt ´ne riesen Hilfe! :top:

    Ich habe mir mal deine Datei, genauer angeguckt ich verstehe aber den scr_auswahl nicht. Kannst du mir den vielleicht analysieren???

    GML-Quellcode

    1. if (mouse_check_button(mb_left)=true)then{
    2. if (keyboard_check(vk_shift)=true){
    3. if ((x>cursor.start_x && x<cursor.x) || (x<cursor.start_x && x>cursor.x)){
    4. auswahl_x=1;}
    5. else{
    6. auswahl_x=0;}
    7. if ((y>cursor.start_y && y<cursor.y) || (y<cursor.start_y && y>cursor.y)){
    8. auswahl_y=1;}
    9. else{
    10. auswahl_y=0;}}
    11. if (keyboard_check(vk_shift)=false){
    12. if (distance_to_point(cursor.x,cursor.y)< 10){
    13. auswahl_x=1;
    14. auswahl_y=1;}
    15. else{
    16. auswahl_x=0;
    17. auswahl_y=0;}}}
    Alles anzeigen


    Das wäre echt super :D
    [SIZE="25"][COLOR="Red"]XP Hilfe - Schluss mit PC-Problemen[/COLOR][/SIZE]
    [SIZE="20"]http://xphilfe.de.tt[/SIZE]

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von gm-freak ()

  • GML-Quellcode

    1. //die Zeile prüft, ob die Maustaste gedrückt ist.
    2. if (mouse_check_button(mb_left)=true)then{
    3. //die Zeile prüft, ob die Shifttaste gedrückt ist. wenn ja dann:
    4. if (keyboard_check(vk_shift)=true){
    5. /*
    6. das hier ist praktisch dein Code, der prüft ob das object jetzt im aufgezogenen Rahmen liegt.
    7. */
    8. if ((x>cursor.start_x && x<cursor.x) || (x<cursor.start_x && x>cursor.x)){
    9. auswahl_x=1;}
    10. else{
    11. auswahl_x=0;}
    12. if ((y>cursor.start_y && y<cursor.y) || (y<cursor.start_y && y>cursor.y)){
    13. auswahl_y=1;}
    14. else{
    15. auswahl_y=0;}}
    16. //die Zeile prüft, ob die Shifttaste gedrückt ist. wenn nicht dann:
    17. if (keyboard_check(vk_shift)=false){
    18. /* hier wird jetzt geprüft, ob wenn du die maustaste drückst die maus nah genug am object ist um es auszuwählen.
    19. */
    20. if (distance_to_point(cursor.x,cursor.y)< 10){
    21. auswahl_x=1;
    22. auswahl_y=1;}
    23. else{
    24. auswahl_x=0;
    25. auswahl_y=0;}}}
    Alles anzeigen


    ich hoffe ich konnte es dir ausreichend erläutern, wenn noch fragen sind, einfach melden...
    hallo erstmal....
  • Ich habe den Script mal ein bisschen bearbeitet und die beiden Zeilen mit dem Shift rausgenommen.
    Aber irgendwie funktioniert´s dann nicht mehr mit der Auswahl durch das Rechteck?

    GML-Quellcode

    1. if (mouse_check_button(mb_left)=true)then{
    2. if ((x>cursor.start_x && x<cursor.x) || (x<cursor.start_x && x>cursor.x)){
    3. auswahl_x=1;}
    4. else{
    5. auswahl_x=0;}
    6. if ((y>cursor.start_y && y<cursor.y) || (y<cursor.start_y && y>cursor.y)){
    7. auswahl_y=1;}
    8. else{
    9. auswahl_y=0;}
    10. if (distance_to_point(cursor.x,cursor.y)< 10){
    11. auswahl_x=1;
    12. auswahl_y=1;}
    13. else{
    14. auswahl_x=0;
    15. auswahl_y=0;}}
    Alles anzeigen



    Achja, habe ich ganz vergessen!!!
    Es wäre suuuuuper wenn du mir bei folgender Problemstellung helfen könntest:

    Ich brauche EINE Variable, die true ist wenn einer/mehrere/alle Menschen selektiert sind.


    gm-freak
    [SIZE="25"][COLOR="Red"]XP Hilfe - Schluss mit PC-Problemen[/COLOR][/SIZE]
    [SIZE="20"]http://xphilfe.de.tt[/SIZE]

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von gm-freak ()

  • mhmmm, das hab ich bereits im neuen example geändert, aber ich kanns noch nicht geben, weil ich noch am Problem mit dem Drehwurm arbeite (morgen Nachmittag kommts dann hoffentlich).

    Mhmm, ja das mit dem Rahmen hab ich auch im Cursor object geändert. Außerdem haben die Zeilen eine höhrere Prioität, weil sie später vom Programm bearbeitet werden:
    if (distance_to_point(cursor.x,cursor.y)< 10){
    auswahl_x=1;
    auswahl_y=1;}
    else{
    auswahl_x=0;
    auswahl_y=0;}}
    somit kann das mit dem Rahmen nicht gehen, außer du löscht die Zeilen, aber dann bist du ja wieder am anfang...

    wenn du dich geduldest, kann liefer ich dir sowie eine neues besseres auswahlscript im neuen example...
    hallo erstmal....
  • mhmmm, das hab ich bereits im neuen example geändert, aber ich kanns noch nicht geben, weil ich noch am Problem mit dem Drehwurm arbeite (morgen Nachmittag kommts dann hoffentlich).
    ...
    wenn du dich geduldest, kann liefer ich dir sowie eine neues besseres auswahlscript im neuen example...


    Ich freu mich schon drauf :D
    [SIZE="25"][COLOR="Red"]XP Hilfe - Schluss mit PC-Problemen[/COLOR][/SIZE]
    [SIZE="20"]http://xphilfe.de.tt[/SIZE]
  • lol, ich bin fertig... hab die ganze Zeit irgend nen Scheiß gemacht, bis ich drauf gekommen bin die einfach zu kollidieren zu lassen... :P

    naja, jetzt hab ichs ja...
    also ich glaub jetzt hab ich das mit der auswahl genau wie dus wolltest.
    und über alles andere wirst du mir wahrscheinlich bescheid geben.
    Also bis dann, hab schon viereckige Augen... :shifty:
    Dateien
    hallo erstmal....
  • Wow, super!
    Genau so wie ich´s haben wollte :D
    und das mit dem Shift ist auch genau richtig.


    Vielen Dank!!! :top:
    [SIZE="25"][COLOR="Red"]XP Hilfe - Schluss mit PC-Problemen[/COLOR][/SIZE]
    [SIZE="20"]http://xphilfe.de.tt[/SIZE]

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von gm-freak ()

  • jupp, du musst nur das drag&drop teil reinschieben, alles ausfüllen wie du es willst, ABER in der rubrik speed "speed" eingeben. Danach einen Code drunterschieben, und z.B. speed = 3; reinschreiben. dann müsste es gehn... ;)
    hallo erstmal....
  • Hi,
    ich habe alles o gemacht wie du gesagt hast, allerdings habe ich keinen Menschen sondern einen Löwen genommen, der animiert laufen soll.
    (achja: alles kommt natürlich immer ins selbe Spiel rein)
    Ich habe die gleichen Scripts verwendet, wie bei der Animation von dem Menschen.


    Im Create-Event habe ich den Verweis auf den Path und das drin:

    GML-Quellcode

    1. speed=3;
    2. ani=0;
    3. direction = 360;



    Im Step-Event habe ich execute Script: scr_animatin und das drin:

    GML-Quellcode

    1. if direction > 359 {direction = 0;}
    2. if(speed>0)
    3. {
    4. ani += 1;
    5. }
    6. {
    7. sprite_index=spr_lion_ani;
    8. image_single = ani;
    9. }


    Den Path habe ich einfach irgendwie gemacht, so dass der Löwe in die unterschiedlichsten Richtungen laufen soll.

    ABER, wenn er anfägt den Path zu laufen, wird immer die vollständige Animation abgespielt und nicht nur die für die jeweilige Richtung.

    Außerdem habe ich das Gefühl, dass der Löwe nicht den Path läuft, sondern einfach ohne Pause nach rechts .

    Hier einmal zwei Screenshots meiner Einstellungen.

    Path
    Path Einstellungen

    WAS MACHE ICH IMMER FALSCH??? :heul:
    [SIZE="25"][COLOR="Red"]XP Hilfe - Schluss mit PC-Problemen[/COLOR][/SIZE]
    [SIZE="20"]http://xphilfe.de.tt[/SIZE]

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von gm-freak ()

  • diesmal lag der fehler bei mir...
    also das geht irgendwie nicht...
    eine alternative:
    da der löwe immer den path verfolgt, können wir die Zeile "if (speed>0)" weglassen, und dafür im path anstatt speed 3 oder so eingeben...
    dann verfolgt er schonmal den path.

    Zu der animation kann ich nur sagen:
    das animationsscript muss nach allen anderen scripts im step event...
    Und wenns dann immer noch nicht geht, dann schau mal nach ob der löwe genauso viele einzelbilder wie der mensch hat, und die richtungen in den bildern identisch mit denen des menschen sind...

    TIPP: immer auf die reihenfolge der scripte und events achten!
    hallo erstmal....
  • da der löwe immer den path verfolgt, können wir die Zeile "if (speed>0)" weglassen

    meintest du das so???

    GML-Quellcode

    1. if direction > 359 {direction = 0;}
    2. ani += 1;
    3. sprite_index=spr_lion_ani;
    4. image_single = ani;


    ...und dafür im path anstatt speed 3 oder so eingeben...
    dann verfolgt er schonmal den path.

    Was soll ich genau wo eingeben?

    Zu der animation kann ich nur sagen:
    das animationsscript muss nach allen anderen scripts im step event...

    Das habe ich!

    schau mal nach ob der löwe genauso viele einzelbilder wie der mensch hat, und die richtungen in den bildern identisch mit denen des menschen sind...

    ...und das stimmt bei mir auch überein!


    Kannst mir noch irgendwie anders weiterhelfen und mir sagen was ich da beim Path eingeben soll???

    mfg gm-freak

    Achja und ich habe ein kleines Desktop-Video gemacht. Dann kannst du dir mal angucken wie der Löwe läuft. (siehe Anhang)
    Dateien
    • lion.rar

      (163,44 kB, 137 mal heruntergeladen, zuletzt: )
    [SIZE="25"][COLOR="Red"]XP Hilfe - Schluss mit PC-Problemen[/COLOR][/SIZE]
    [SIZE="20"]http://xphilfe.de.tt[/SIZE]

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von gm-freak ()