Collison box based damage for melee combat

Hello, I have the problem that in my RPG project the collision box in front of my character which is a part of my actor is also creating overlaping events with the collision box of my enemy which is like my character a child of an actor. How can I stop it to do that? Collision box actor attached to my figures? Collision responses for actor components DO NOT work and I don’t know why.

Summary: 2 characters with the same blueprint (those got a collision box in front of them), when my collision box overlaps the other collision box the enemy gets damage.

Thank you so much!

If I understand correctly, you’ve already set the collision response settings of the trigger boxes (the ones attached to your characters) to ignore each other but overlap the characters collision, and the problem is that the trigger boxes still collide with one another?

If that is the case, you should search for the ‘Auto Weld’ setting under the physics category in the details panel with your trigger box component selected, and disable that, so that your component does not inherit collision profile from the root component.

I can’t find “Auto weld” in the Details Panel also with the search function. What do I wrong?

Sorry, I did not see that you are using 4.7.
It looks like it was only added in 4.8
I don’t know how you can change the collision profile inheritance in 4.7, and if it still behaves the same.

I think I misunderstood the problem…
because just adding a collision box with default collision responses and a simple overlap event seems to work fine…

59695-overlaptest_4_7.png

You get an overlap event for everything that generates overlaps, but you can perform a check to see if it is the characters collision capsule, and not the trigger box:

Thank you, I try to use this in my project. Do you also know how I can get the variables of only that actor(is a child of the parent actor character) in the collision box of my controlled actor (an other child of the parent actor character)?

The 2nd screenshot is from the event graph of the character blueprint that contains the trigger box.

You can use the Other Actor output of the overlap event to get any variables from the overlapping actor.

In my example above, I used a Cast to access variables from the character class, but you can also use a Blueprint Interface function to make this work with all other actor classes that you implemented the interface in.

Hallo Taratus, mir ist aufgefallen, dass du diese Frage schon öfters gestellt hast, und dass dein Blueprint code auf Deutsch ist.

Ich bin zwar kein Experte, aber wenn weiterhin Unklarheiten zu dem Thema bestehen, kann ich versuchen nochmal auf Deutsch zu antworten.

Es gibt übrigens auch ein Deutsches Forum, falls du das noch nicht entdeckt hast:

Danke, ich will eigentlich Schaden an meinem Gegenüber erzeugen und das dann durch eine UMG Lebensanzeige anzeigen lassen. Die Lebensanzeige ist immer von dem der gerade in der Kollisionsbox ist, aber ich weiß nicht, wie ich den speziellen Actor bekomme, um im HUD nur seine Werte zu nehmen, da ich immer einfach nur nach dem Eltern Actor frage.

Ich hoffe ich verwirr dich nicht ^^

Du könntest im OnComponentBeginOverlap der trigger box den Other Actor mit dessen RootComponent vergleichen (wie in meinem Beispiel oben), und dann, wenn der getroffene Komponent nicht bloss die trigger box des anderen Actors war, den Other Actor als eine Referenz speichern in dem Actor der die UMG anzeige besitzt (als Actor) .

Diese Referenz kannst du dann mit einem Blueprint Interface Function nach einem Wert für die UMG Anzeige abfragen.

Die Referenz zu dem anderen Actor solltest du dann wieder bei einem OnComponentEndOverlap der trigger box zu NULL stellen, und dein UMG Widget so eingestellt haben dass es in diesem falle nichts anzeigt (die Interface Function wird dann wohl eh nur default return Werte geben).

Hoffe das ist nicht zu unverständlich erklärt.

Die zweite wenn-Abfrage funktioniert nicht :frowning:

Fragst du bei der ersten wenn-Abfrage nicht grad ob der ‘other Actor’, der mit dem dein Spieler zusammengetroffen ist, der lokal besessene Pawn ist?
Das sollte doch immer False ergeben?
Setz mal einen breakpoint mit f9 und geh schrittweise deinen code durch.

Seltsamerweise funktioniert das aber. Mein Problem scheint zu sein, dass ich bei “angesehener NPC” als Variable den Parent Actor bekomme und nicht den Actor der ein Child von dieser Gruppe ist, aber ich finde keine Funktion die mir genau diesen Actor ausgibt. Die Variable verwende ich nämlich dann im HUD für die Lebensanzeige und die zeigt immer auch das was meine eigene Lebensanzeige zeigt.

Hallo Taratus,
Ich habe dir ein Beispiel Project zusammengestellt in dem die Funktionalität die du beschreibst so dargestellt ist wie ich vorgeschlagen habe sie einzuführen.

Die Dateien die du dir anschauen solltest sind:

  • Content\Blueprints\ThirdPersonCharacter

  • Content\Blueprints\I_GetWidgetData

  • Content\Widgets\W_EnemyHealth

Es gibt sicherlich auch andere/bessere Methoden das zu machen, aber es funktioniert.

Ich hoffe das hilft dir weiter.

Danke, ich werd’s mir anschauen :slight_smile:

Jetzt funktioniert’s, hab zusätzlich noch Schwierigkeiten mit der Progress bar gehabt die ich verwenden wollte.

Meine auch für mich sinnlose erste Abfrage in meinem Blueprint hat komischerweise die Folge, dass nur der Name des NPCs über seinem Kopf angezeigt wird und nicht gleichzeitig auch bei meiner Figur, warum das so ist, weiß ich noch immer nicht.