Destructible Mesh in Trümmern, nachdem 0 Leben erreicht ist

  • Destructible Mesh in Trümmern, nachdem 0 Leben erreicht ist

    Ahoi!

    Wie kann ich in einem Blueprint ein Destructible Mesh erst nachdem es 0 Leben erreicht hat, dieses zertrümmern lassen und das die Junks sich nach einer gewissen Zeit von selber auflösen?
    Habe einige Tutorials angeschaut, aber da funktioniert alles nur nach der Collision/Physic und nicht erst, nachdem ein gewisser Schaden erreicht ist.
    Grundsätzlich geht es um einen Stein, dieser soll durch einen Hammer (nach 1000 Schaden) zerstört werden. Schwerter oder andere Waffen, sollen dies nicht können!

    Habe lange herumprobiert und es taucht immer der gleiche Fehler auf, entweder es geht gar nicht, oder erst dann wenn mein Character den Stein mit dem Körper berührt und dann explodiert das Teil (oder zerbricht allgemein). So soll es ja nicht sein.

    Am liebsten wäre es mir, wenn ich "ImpactDamage" im Destructible Mesh in meinem Blueprint dann aktiviere, wenn das Leben des Steins auf 0 sinkt, aber das geht irgendwie nicht oder ich finde die Funktion dafür nicht.

    Das "SetSimulatePhysics" einfach mal wegdenken, dass hatte ich test weise verwendet, um nach 0 Leben (oder -1 und weniger) die Physic zu aktivieren, in der Hoffnung das der Stein dann zerbricht.



    Hoffe ihr könnt mir bei der Kleinigkeit weiterhelfen :)



  • Hmmm, du machst es ja kompliziert, ich finde die internen Functionen (destructible settings) eigentlich ganz gut.

    Was du machen willst ist in den internen functions "accumulate damage" (Sammle Schaden), also wenn du Schaden zugefügt hast dann merkt sich das objekt den und zerfällt erst wenn sein Damage Threshold erreicht ist.

    SimulatePhysics erreicht eigentlich so gesehen gar nix - wenn das an ist kannst du das Objekt umhertreten und so. ist aber ganz nett weil dann die trümmer auch etwas realistischer fliegen.

    "Debris Lifetime" bestimmt wie lange die Trümmer liegenbleiben. Die internal function lässt die einfach verschwinden, aber klar kannst du auch das clipping disabeln und die durch den Boden fallen lassen wenn du das schöner findest.


    Wenn du die internen Functions umgehen willst dann benutze "Apply damage" in kombination mit "Damage threshold".


    "Impact Damage" ist nicht voll abwegig - aber wenn du gegen den Stein rennst zählt das auch als "impact", also du kannst den Stein umrennen und er geht kaputt- weiß nicht ob du das so willst - wohl eher nicht. Würde ich rausnehmen, weil Schwerter und so machen ja ggf auch nen impact. Also nur ne collission und wenns der Hammer war dann "cast to destructive component" --> "Apply damage". Habs jetzt nich selber probiert, aber das ging mir gerade so durch den Kopf, müsste funzen. Wenn nicht sag mal bescheid. =)
  • Jap, "apply damage" oder "applyradialdamage" ist meiner Meinung nach auch der richtige weg. Das Mesh muss vollständig intakt bleiben, bis 0 Leben erreicht sind. Dann kannst du es mit "applydamage" zerstören, und es fliegt auseinander. Da gab es auch sowas wie "full damage" oder so, wenn ich mich recht entsinne

    Impact Damage kannst du dann disablen, denn du brauchst ihn garnicht. Was auch möglich wäre, wäre ein StaticMesh zu benutzen, bis der Stein 0 Leben hat, und danach wird er durch ein destructible ersetzt, sodass es niemand merkt. Das könnte dann ganz normal mit impact damage zerfallen :)

    Bei ApplyDamage oder ApplyRadialDamage ist es oft kompliziert es hinzubekommen, dass alles schön zerfällt, darum ist zweite Möglichkeit evtl. auch cool
    Marktplatz-Projekt: Surveillance Camera Madness
    Snake Spiel für Android: itch.io // Jewel Snake
    Youtube: Deutsche Tutorial Serie
  • Danke für die Antworten, aber irgendwie kriege ich das so nicht hin.

    Bei dem DestructibleMesh (Rock01_High_DM) setzte ich:
    Damage Treshold 300
    Damage Spread 0.1
    Enable Impact Damage NEIN

    Flags:
    Accumulate Damage JA

    Debris Liftime Min 1 und Max 10.



    In dem Blueprint:

    Event AnyDamage -> ApplyDamage.
    Target ist Rock01_High_DM
    Damage Amount (von AnyDamage)

    HitLocation und ImpulseDir kommen von Rock01_High_DM -> GetWorldLocation.
    ImpulseStrengh 300.


    Meine Waffe macht bei AnyDamage 300 Schaden.


    Wie mache ich das nun das es funktioniert und auch zerbricht?
    Auch mit ApplyRadiusDamage habe ich es versucht und anderweitig, nichts geht.

    Ohne "EnableImpactDamage" im Destructible Mesh, zerbricht da gar nichts :(
  • Im Grunde soll die Mechanik für das zerstören der DestructibleMeshes (Rock01_High_DM) dafür da sein, um sich dadurch zu schlagen, um dann an das Eisenerz zu kommen. (Siehe Bild)

    Das Eisenerz hat selber noch eine Lebensenergie und wenn diese auf 0 sinkt (alles Blueprint), dann verschwindet das Eisenerzvorkommen und spawnt "Eisenerz" als aufsammelbare Gegenstände.
    Das Eisenerz als Gegenstand, wird dafür verwendet um Eisenbarren, Waffen und sonstiges herzustellen.
    Die ganzen ChildActor = Rock01_High_DM


    Doch bevor man überhaupt an das Eisenerz kommt, muss die äußere Kruste (Rock01_High_DM) zerstört werden. Am liebsten wäre es mir, wenn innerhalb der DM schon das endgültige Eisenerz liegen würde und man das einfach daraus befreit, aber keine Ahnung wie das funktionieren soll.
    Wenn das Eisenerzvorkommen abgebaut ist, verschwindet zwar alles, soll aber nach einer bestimmten Zeit wieder erscheinen (darum die ChildActor), damit man später wieder den Vorgang wiederholen kann. Sozusagen als endloses Rohstoffvorkommen und nicht nach nur einmaliger Anwendung.

Unreal®, Unreal Engine, the circle-U logo and the Powered by Unreal Engine logo are trademarks or registered trademarks of Epic Games, Inc. in the United States and elsewhere.