Schlag Schaden verhältnis problem

  • GM 8

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

  • Schlag Schaden verhältnis problem

    hey leute,



    mein problem ist das ich eine schlag animation habe und immer wenn ein feind in berührung kommt mit dem schlag kommt, verliehrt der feind viel mehr leben als vorhergesehen, denn er verliert permanent leben solange er in kontakt mit der schlag animation ist. Was ich will ist das der schaden einmalig mit den schlag vom leben abgezogen wird. Weiss jemand was zu tun ist?


    Danke im vorraus
  • Du könntest es so machen, dass nur der Gegner nur Leben verliert, wenn er mit einem bestimmten Image deiner Animation in Berührung kommt.



    Bsp.: Wenn die Animation daraus besteht, dass eine Faust zuschlägt, und man sieht, wie die Hand nach vorne fährt, bekommt der Gegner nur Leben abgezogen, wenn die Hand ganz ausgestreckt ist.

    Es gibt aber sicherlich elegantere Lösungen...

    Ich hoffe, ich konnte helfen! :)

    NONO120
  • NONO120 schrieb:

    Du könntest es so machen, dass nur der Gegner nur Leben verliert, wenn er mit einem bestimmten Image deiner Animation in Berührung kommt.



    Bsp.: Wenn die Animation daraus besteht, dass eine Faust zuschlägt, und man sieht, wie die Hand nach vorne fährt, bekommt der Gegner nur Leben abgezogen, wenn die Hand ganz ausgestreckt ist.

    Es gibt aber sicherlich elegantere Lösungen...

    Ich hoffe, ich konnte helfen! :)

    NONO120



    ich find die idee klasse! Wie sieht den eiglt der code aus um ein einziges bild der animation rauszupicken?
  • Das einfachste wäre, eine Variabe einzuführen, die angibt, ob der gegner bereits getroffen wurde. Vor der Schlag animation sollte die Variable auf 0 gesetzt werden. Wenn der Gegner nun von der Schlag animation getroffen wird, sollte die Variable auf 1 gesetzt werden, und die HP nur abgezogen werden wenn die Variable noch nicht 1 war.

    © 2008 by Teamgrill Productions
  • Ich würde dafür eine Timer Variable verwenden die permament abläuft und immer wenn diese Timer Variable <= 0 ist und die Angriffstaste gedrückt wird und der Gegner berührt wird:
    Wird Schaden abgezogen und der Timer wieder auf 10 zb. gestellt.

    Create Event:

    GML-Quellcode

    1. timer = 10; //Variable timer erstellen.


    Step Event:

    GML-Quellcode

    1. enemy = instance_nearest(x,y,obj_enemy_parent) // Erstell ein Objekt und weise alle deine Objekte die angegriffen werden können,
    2. //dieses erstellte objekt als parent ein.
    3. timer -= 1; // Hier wird der Timer durchgehend runtergezählt. 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, -1, etc.
    4. if distance_to_object(enemy) < 10 && timer <= 0
    5. {
    6. enemy.hp -= damage; // Das Leben des anderen Objektes enemy den wert der damage abziehen.
    7. timer = 10; // Hier wird der Timer wieder auf 10 gesetzt und kann wieder runterlaufen
    8. //Desto kleiner der Wert desto schneller zieht er dem Gegner leben ab .
    9. }


    Sollte so funktionieren, wenn nicht dann sag bescheid. Habs nicht ausprobiert ob es funktioniert müsste aber gut laufen weil ich das häufig verwende.
  • Auf deine Frage zurückzukommen:

    Wenn deine Annimation beispielsweise 10 images hat und der Gegner beim 10. image Leben abgezogen bekommen soll, denn musst du folgendes schreiben:

    im Kollisions-Event

    Quellcode

    1. if (image_index == 10)
    2. {
    3. global.Gegnerleben-= global.Schaden //global.Gegnerleben = Leben des Gegners, global.Schaden = Leben die du abziehen möchtest
    4. }


    :) :)
  • NONO120 schrieb:


    Auf deine Frage zurückzukommen:

    Wenn deine Annimation beispielsweise 10 images hat und der Gegner beim 10. image Leben abgezogen bekommen soll, denn musst du folgendes schreiben:

    im Kollisions-Event

    naja... glaub ich kaum.. da dann jeder Gegner gleich viel Leben hat.

    im Step-Event des Gegners (Kannst du auch ins Kollisionsevent haun):

    GML-Quellcode

    1. if(place_meeting(x,y,obj_player_weapon) {
    2. with(instance_place(x,y,obj_player_weapon)) {
    3. if(image_index == 10) {
    4. other.live -= damage;
    5. }
    6. }
    7. }

    So würde ich das mal lösen, gibt aber bestimmt "schönere" Lösungen.

    MfG Rodrog
    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Ergo: Je mehr Käse, desto weniger Käse.