Individuelle Anzahl von Trigger Componenten

  • Hallo zusammen,


    ich möchte für eine Falle mehrere Trigger hinzufügen, weil eine Box Componente oder auch andere mir zu ungenau sind.



    So wie im Bild sollte es für die UBoxComponente sein. Dieses Beispiel wurde mit  TArray<AActor*> Test; erstellt.

    Wenn ich diesen Array mit UBoxComponente erstelle, wird mir das Menü nicht angezeigt.

    Könnte natürlich wie folgt es regeln, aber dann kann ich nicht individuell die Anzahl der Trigger einstellen.



    Hat jemand eine Idee?


    Falls jemand eine andere und bessere Lösung hat, immer her damit. =)

    Hatte es auch mit der OnHit Funktion probiert, aber sobald ich mich mit dem Charakter nicht mehr bewegt habe, wurde der nicht mehr ausgelöst. :(

  • Sleepy

    Hat das Thema freigeschaltet.
  • Und du kannst mit dem Pluszeichen keine Componenten hinzufügen?

    Also du hast ein Array "TriggerComponents" in Form einer Box. Für gewöhnlich ist so ein Array ja erstmal leer.

    P.S. Programmierst du eigentlich generell in C++, oder hast du jetzt nur diesen Abschnitt in C++ erledigt.

    Ja und Nein.

    Ich hab nochmal den kompletten Code angehängt.


    Hab die for-Schleife im Construktor und der wird ja erst ausgeführt, wenn ich das Objekt in der Scene habe.


    Wenn ich die Blueprint nicht in der Scene habe, taucht die Option nicht auf.


    So sieht es aus, wenn ich die Blueprint in die Scene setze.


    Wenn ich die Collider der Scene "hinzufüge", sieht es so aus.


    Aber auch hierbei wird mir der Collider in der Scene nicht mal angezeigt.



    Das ist Richtig. Ich programmiere nur in c++. Welche Sprachen kann man in der Unreal Engine noch verwenden?


    Ich möchte das Objekt bearbeiten können, bevor ich es in die Scene gebe. Was ich da als Problem sehe, weil der Construktor erst ausgeführt wird, wenn die Blueprint in der Scene ist. :(

  • Das ist Richtig. Ich programmiere nur in c++. Welche Sprachen kann man in der Unreal Engine noch verwenden?

    Mit C++ kenne ich mich in UE nur begrenzt aus, weswegen ich nur Vermutungen anstellen könnte. Ich habe es zwar mehrfach versucht, aber ich kam immer wieder an einen Punkt, wo dann mein Projekt nicht mehr zu laden war, weil es schon dann abstürzte. Deswegen habe ich es irgendwann gelassen und beschränke mich mit C++ direkt nur noch, wenn es per BP nicht lösbar ist, eine eigene Node zu schreiben. Kommt aber in den neuesten Versionen von UE sehr selten vor.

    Was auch die Antwort auf deine Frage beinhaltet. Man kann auch in BPs programmieren. Was am Ende dann ja auch C++ im Backend ist. Aber dein Array könnte man auch recht schnell direkt in BPs lösen. Deswegen auch meine etwas erstaunte Frage. Du brauchst ja nur eine Variable anlegen, Typ "TriggerBoxComponent", wenn ich dich richtig verstanden habe und dann auf Array stellen.

    Ich mag zwar C++ sehr. C++ hat schon einige Möglichkeiten der Komplexität. Aber ich musste mir in der Zwischenzeit doch eingestehen, dass die Nutzung von BPs viele Fehler vermeidet. Und wie gesagt, seit der 5er-Version habe ich bisher auch nichts gefunden, was ich in C++ auslagern musste.

  • Bei mir ist es eben umgedreht. Ich möchte wenn möglich alles in C++ erstellen. xD Bin zwar noch nicht lange so tief in dem Thema, aber hab noch in Erinnerung das Projekte mit c++ bessere Performance haben. ^^


    Sofern nicht noch jemand eine Idee haben sollte, werde ich morgen mal Blueprint und C++ verbinden und vielleicht geht es so dann. Weil ich ein Dungeon Game erstelle, soll das Blueprint so flexibel wie sonst was sein. =)

    • Hilfreich

    Hallo

    Der Konstruktor wird nicht erst dann ausgeführt, wenn du das Objekt in die Szene ziehst.

    Ich vermute, dass du nicht alle "Trigger Componente" nennen darfst. Der Name muss unique sein.

    Vielleicht fängt die Engine das auch ab und erstellt dann selber ein anderer Name, zur Sicherheit habe ich hier die Iterationsnummer hinzugefügt.

    Also einfach erstellen hinzufügen.

    Code
        for (int i = 0; i < 5; i++)
        {
            FName MyFName = FName("MyFName_" + FString::FromInt(i));;
            UBoxComponent *B = CreateDefaultSubobject<UBoxComponent>(MyFName);
            B->SetupAttachment(GetRootComponent());
            BoxComponents.Add(B);
        }

    Es zeigt es dir dann an und du kannst es editeren.



  • Ja geil. Das hat mich zumindest schon mal einen Schritt weiter gebracht. Ich danke dir.


    Jetzt ist nur noch das Problem, wenn ich wie in deinem Beispiel bei der for-Schleife statt der 5 kommt eine Int variable hin. Dann kann ich zwar die Nummer angeben, aber er übernimmt nur den default Wert. Wenn ich über die for-Scheife der den Wert 4 gebe wird er anerkannt, aber wenn ich im Editor den Wert angebe, dann wird er nicht erkannt. Echt komisch.


    Es lässt sich darüber auch nichts im Internet finden. Nur so Standard Sachen über Array. :(


    P.S. So wie es aussieht, muss ich es doch mit Blueprint regeln. :(

    Sollte mir später etwas über die Augen fallen, was das lösen würde, dann werde ich es vermutlich in c++ umschreiben.



    Hat hier schonmal jemand ein Objekt gehabt, welches eine komplexe Form hat, wie meine oben gezeigte Axt?

    Wenn es mit einer Collision gemacht wird, wäre diese nicht am Mesh.

  • Also in BPs, und soweit ich weiß auch in C++, benutzt man für Arrays Foreach Loops.

    Im Großen und Ganzen, kannst du auch ein zweites Projekt aufmachen, das Ganze in BPs so zurechtmachen wie du es haben willst und wie es funktioniert, nur für die Optik und zum schnellen Ausprobieren. Wenn es dann funktioniert, fällt es dir vielleicht auch leichter, es in C++ dann umzusetzen. Zumindest habe ich das früher so gemacht. Funktionierte sogar bei mir fast immer.