Dungeon-CampusMinden / Dungeon

The "Dungeon" is a tool to gamify classroom content and integrate it into a 2D Rogue-Like role-playing game.
MIT License
15 stars 36 forks source link

Dungeon: Hero Hitbox ist zu klein #1600

Open Flamtky opened 1 month ago

Flamtky commented 1 month ago

Für den Hero wird die Standard Hitboxgröße verwendet die:

/** The default offset of the hit box. */
public static final Point DEFAULT_OFFSET = new Point(0.25f, 0.25f);

/** The default size of the hit box. */
public static final Point DEFAULT_SIZE = new Point(0.5f, 0.5f);

groß ist. Das führt dazu das MeleeAI Monster die von oben oder auch rechts angreifen den Hero nicht erreichen. So kann der Held einfach ausweichen in dem er stehen bleibt wenn die Monster von den Seiten angreifen.

In HeroFactory

hero.add(
    new CollideComponent(
        new Point(0, 0), // Hier (sollte wahrscheinlich 0,0 stehen)
        new Point(1f, 1f), // Hier (hier glaube ich mindestens (0.9f, 1.0f))
        (you, other, direction) ->
            other
                .fetch(SpikyComponent.class)
                .ifPresent(
                    spikyComponent -> {
                      if (spikyComponent.isActive()) {
                        hc.receiveHit(
                            new Damage(
                                spikyComponent.damageAmount(),
                                spikyComponent.damageType(),
                                other));
                        spikyComponent.activateCoolDown();
                      }
                    }),
        (you, other, direction) -> {}));

müsste man diese Werte setzten und testen werden welche Größe und welcher Offset für den Helden stimmt. Das selbe gilt bestimmt auch für alle Monster, abhängig von der verwendeten Textur, das ist wahrscheinlich jedoch nicht zu einfach zu einfach umsetzbar, außer man verbindet die Größen & Offsets mit den Texturen.

cagix commented 1 month ago

@Flamtky Hast Du da im DevDungeon irgendwas anderes eingestellt? Dann könnten wir das nehmen?

Flamtky commented 1 month ago

@Flamtky Hast Du da im DevDungeon irgendwas anderes eingestellt? Dann könnten wir das nehmen?

/** The default offset of the hit box. */
public static final Point DEFAULT_OFFSET = new Point(0.35f, 0.35f);

/** The default size of the hit box. */
public static final Point DEFAULT_SIZE = new Point(0.7f, 0.7f);

Im DevDungeon hatte ich einfach den Default größer gemacht. Ich würde aber hier nur den Hero ändern wie oben gezeigt mit den Werten:

  new CollideComponent(
      new Point(0.1f, 0.1f), // Offset
      new Point(0.9f, 1.15f), // Size

Zumindest hatte sich das nach kurzen Testen gut angefühlt und die AI hatte keine Probleme mehr mich nicht zu treffen, aber vlt ist das zu groß? Um Feuerbälle auszuweichen?

Edit: Ich dachte mir halt das einer testen könnte wie groß der Held wirklich sein sollte.

cagix commented 1 month ago

ja gut 😀

dann muss das mal wer machen, am besten jemand mit einem händchen für gutes tweaking. ausgangspunkt können dann die von dir genannten werte sein.