Gegner nur an bestimmter Stelle treffen

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

  • Gegner nur an bestimmter Stelle treffen

    Ich wollte mal fragen ob es möglich ist das man den Gegner nur trifft, wen man ihn an einer bestimmten Stelle erwischt bspw. am Kopf oder an der Nase oder so ..., ansonsten bekommt man selber Schaden zugefügt.

    Ich hätte mir das so vorgestellt das man den Körperteil als Extraobjekt anlegt, oder geht das auch anders?
    Schaut mal auf meinen Games vorbei (alle für Android):

    APPLE ISAAC

    JUGGLE JUNKIE

    SKY APE

    Freu mich über Meinungen, Verbesserungsvorschläge und gute Bewertungen!!!
  • Du kannst die Kollisionsmaske ändern. Wahrscheinlich basiert aber das Movement vom Gegner auch auf die Kollision mit dem gesamten Körper.
    Die ganzen Kollisionsfunktionen könntest du aber trotzdem nutzen, in dem du kurz den mask_index auf den bestimmten Bereich änderst, Kollisionsabfrage ausführen und dann wieder zurück andern :)
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • Da Du Dein "Spiel" nicht näher beschreibst, hier mal ein Denkansatz:

    collision_line()

    Nehmen wir mal als Beispiel einen Kampf a´la "Streetfighter". Du hast einen Kämpfer, der hat einen Hotspot(wahrscheinlich unten/Mitte) und hast drei verschiedene Trefferzonen, Kopf, Brust, Beine. Also machen wir uns noch 3 Objekte und legen sie übereinander.
    Also haben alle 4 Objekte die selben Koordinaten(über den Hotspot unten Mitte). Der Kämpfer hat eine Maske in voller Größe, der Kopf hat eine Maske, die nur den Kopf einrahmt. die Brust hat eine Maske, die nur die Brust einrahmt usw..
    Der Kämpfer verfügt auch über 3 Hotspots, der natürliche unten/Mitte und 2 weitere, die Du selbst verwalten mußt(Grid z.B.). Der Eine sitzt auf Höhe der Schulter und der Andere auf Höhe des Beckens.
    Der von der Schulter ist für Schläge mit der Hand(gerader Schlag und Schlag nach oben(Uppercut)) und der vom Becken, für das Bein(gerader Schlag, Tritt nach unten und High Kick(nach oben)). Im Grid hast Du dann Hotspot(der die anderen beiden immer aktuell hält), Schulter, Becken(auf der einen Achse) und die Schlagkombinationen auf der anderen Achse. Jedes dieser Felder enthält ein Array mit den x,y Werten und schon kann es losgehen.
    Hier ein Video, das Dich durch den Dschungel von Grid, Arrays usw. führt, die verschachtelt sind:

    Chaining Accessors

    Wenn Du alles richtig gemacht hast, dann hast Du jetzt einen Ausgangs- und einen Zielpunkt für collision_line. Nun fragst Du die Liste einfach ab und schaust, ob der Kämpfer überhaupt getroffen wurde und danach suchst Du nach Kopf, Brust und Beine und voila.
    Noch ein Tipp, die Masken für die Teilbereiche(Kopf, Brust und Beine), sollten jedoch einen Abstand zueinander haben, damit die Kollisions-Linie nicht 2 Treffer meldet, wenn die abgefragte Linie, von unten nach oben verläuft(beim Highkick).

    Miradur