Classes

  • Hallöchen und guten Morgen,


    hätte da wieder einmal ein kleines Problemchen, bei dem Ihr mir vielleicht helfen könnt.


    Ich habe einen Actor(Item) mit einem Struct. Diesen Actor habe ich per create child und diesen wieder per create child unterteilt (Grund: Gegenstand ist Item, dieses wiederum eine Waffe und dieses wiederum eine spezielle Waffe). Wenn ich diesen Child Actor an meinen Charakter an einen Socket binde, dann kann ich meinen Charakter im Spiel nicht mehr bewegen. Das Bild verrutscht immer von einem kleinen Sprung in die Richtung in die ich die Figur bewegen möchte, wieder zurück an den Startpunkt, mit dem Charakter. Sobald ich den ChildActor vom Socket nehme, funktioniert wieder alles wie gewohnt. Das ganze hat jede Menge Blueprints, deswegen vorerst keine Screenshots. Aber vielleicht hatte der eine oder andere von euch schon einmal ein ähnliches Problem.


    Ich wünsche euch allen auf jeden Fall einen schönen, erholsamen Sonntag und viel Erfolg mit euren Projekten,


    einen guten Tag wünscht euch euer Marc :)

  • ChildActor

    Ich hab noch nie nen Actor an nen Socket geheftet, daher keine Ahnung was da genau dein Problem ist.

    Ich hab immer nur ein Static-Mesh oder Skeletal-Mesh, an nen Socket dran gemacht...


    Evtl. ein Problem mit der Colli?

    Wobei ich mir das nicht vorstellen kann, dass dadurch der Character nicht mehr bewegt wird ^^


    Dumme Frage: Kann ein Actor aus mehreren Classes bestehen?

    Wenn du meinst, dass ein Actor wie oben beschrieben, z.B. ein Child eines Childs ist, dann ja.

    Wenn du ein Actor als Child von 2 verschiedenen Actors meinst, dann nein.

  • Das Problem bestand in der Collision des Meshes. Dank Youtube, zum Glück herausgefunden. Das wäre Problem Nummer eins gewesen, Charakter bewegt sich wieder normal.


    Problem Nummer Zwei(die Classes):

    Mein Anliegen ist es, dass ich einen Actor erstens als Class Waffe und dann als Class Speer abfragen möchte. Wenn es eine andere Möglichkeit gibt, anstelle von Class, dann bitte her damit.

    Es geht darum abzufragen, erstens ob der Gegenstand in der Hand der Charakters eine Waffe ist, wenn ja dann soll ein Schadensbonus auf die Variable Schaden des Charakters hinzugerechnet werden. Zweitens sollte abgefragt werden, ob die Waffe eine spezielle Waffe ist und wenn ja welche(speer, Hammer, etc..) um die entsprechende Fähigkeit(Speer benutzen, Hammer benutzen, etc../als Variable) ebenfalls dem Schaden, der Trefferchance und ähnlichem hin bzw. abzurechnen. Da ich für unterschiedliche Waffengattungen gerne unterschiedliche Fertigkeiten/Variablen benützen wollen würde.

    Schaffe es nicht mir die Werte auszugeben.


    Danke dir ButterFlyGames für die rasche Antwort. Wie immer einen schönen Sonntag und nicht vergessen, Augen schonen ;)

  • Um mal auf deine zweite Frage einzugehen. Ein Actor ist eine Klasse. Eine Klasse kann natürlich nur aus einer Klasse bestehen, wobei Klassen von anderen Klassen erben können, wobei die Eigenschaften/Methoden der Parentklasse dann an die Childklasse vererbt werden und im Child durch neue Methoden erweitert werden können. Am Ende kommt aber immer genau eine Klasse dabei heraus.


    Du kannst jedoch Methoden einer anderen Klasse innerhalb deiner Klasse verwenden.


    Nehmen wir mal an du hast eine Klasse KI und schreibst an einer Klasse Reh. Ich mache das mal mit C# weil ich nicht so ganz Sicher im Umgang mit C++ bin. Das würde in etwa so aussehen...


    Code
    class Reh:Animal //Klasse Reh erbt von der Klasse Animal
    {
        KI RehIntelligenz = new KI(); // Hier wird die Klasse KI eingebunden und über den Konstraktor neu erstellt
    
        RehInelligenz.Fluchtreaktion(Irgendwas, Sonstwas); Hier wird zum Beispiel aus der KI-Klasse die Methode Fluchtreaktion benutzt.
    }

    Ich schätze in C++ sieht es ziehmlich ähnlich aus. Es ist jetzt auch ein rein fiktives Beispiel, wo ich einfach mal so davon ausgegangen bin, dass es eine Methode "Fluchtreaktion" mit zwei Parametern in der Klasse KI gibt.

  • Wegen der Klassen kannst dir das mal anschauen.... ist aus dem Bereich der Grundlagen, aber da verdammt gut erklärt... meiner Meinung nach ein must-know


    Externer Inhalt youtu.be
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

  • Danke, danke für die Tipps. ICh werde mir das Video bei Zeiten einmal ansehen. Muss dafür einen Kopf haben und bin leider meistens ziemlich fix und fertig.


    Aber eine andere Frage. Ich versuche mich gerade an einem Equipment System nach einer Youtube video Tutorialreihe von Ryan Laley. Habe dass erste Video dazu angefangen und funktioniert eigentlich alles einwandfrei. Habe da nur ein kleines Problem. In dem Video platziert er den Actor für das RenderTarget im Spiel. Habe ich auch gemacht funktioniert auch. Nun habe ich aber einen Charaktercreator installiert, in welchem ich mir die Spielfigur selber zusammenstellen kann(mit Morph Targets). Wenn ich diesen Actor im Spiel platziere, dann nimmt er mir leider nicht den RenderTarget von dem neu platzierten sondern von meinem Charakter der vom PLayer Controller genutzt wird. Dabei geht es um den Hintergrund. Wenn ich es so belasse, dann habe ich immer im Hintergrund des RenderTarget, den Hintergrund meiner Spielfigur. Eigentlich nicht schlecht, werde ich vermutlich auch so belassen, ist denke ich ein netter Effekt. Aber interessehalber würde ich gerne wissen, wie ich den RenderTarget meines neu platzierten Actors nutzen kann.


    Das Video lautet:

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    Ungefähr ab Mitte des Videos platziert er den Actor zuerst in der Welt und danach außerhalb um den Hintergrund auszublenden. Habe das auch mit einem Child Actor probiert, nur kann ich dann nicht die MorphTargets einstellen, damit er mir die richtige Spielfigur anzeigt. Das RenderTarget zeigt mir dann immer den Defaultpawn des Childactors an. Die Daten der MorphTargets sind in einem Struct(CharInfo) angeordnet. Habe versucht mir diese durch Cast to und get all aactors of class von der Spielfigur zu holen habe dass aber nicht geschafft. Hier ein paar Screenshots.

    Vielleicht könnt ihr etwas damit anfangen. Ich weiß eigentlich nicht weiter.

    Auf jeden Fall viel Erfolg mit euren Spielen und alles Gute

    und einen schönen Tag wünscht euch euer Marc

  • Wenn ich diesen Actor im Spiel platziere, dann nimmt er mir leider nicht den RenderTarget von dem neu platzierten sondern von meinem Charakter der vom PLayer Controller genutzt wird.

    Wenn du 2 RenderTargets im Spiel hast, musst du auch 2 verschiedene RenderTarget-Textures erstellen und bei den SceneCapture2D verlinken, dadurch brauchst du dann natürlich auch 2 Materialien, die die jeweilige RenderTarget-Texture verwenden ^^


    Wenn du nur den Character anzeigen lassen willst, geht das:

    Für jedes weitere Mesh, muss noch eins gesetzt werden, wo logischerweise das nächste Mesh drin steckt, welches angezeigt werden soll.


    Keine Ahnung ob ichs richtig verstanden hab, was du genau willst, viel zu viel Text ohne Absätze...

  • Danke für den Tipp. Werde ich dann ausprobieren und schreiben, ob es mein Problem gelöst hat.


    Tja, da glaubt man, man kann einfach ein paar Nodes verlinken und schon trara ist alles da. Falsch gedacht, nix da.

    Ich glaube ich brauch mal eine Gehirnwäsche um in meinem Kopf die richtigen Verlinkungen zusammenzuführen. Vielleicht ist das der Grund, warum ich das mache. Weil mein Hirn, hin ist.


    Danke auf jeden Fall für die ganze Hilfe. Ich finde die Seite echt super und werde sie bei Gelegenheit weiterempfehlen.

    Alles Gute euch und einen schönen Tag euer Marc

  • Das mit den Materials habe ich ausprobiert, leider nicht der gewünschte Effekt.

    Sry, wenn umständlich erklärt. Habe einen Actor, der durch MorphTargets konfiguriert wird. Diese Konfigurationen würde ich gerne auf den ChildActor übertragen und diesen mit RenderTargets darstellen.


    Keine Ahnung wie ich MorphTargets übertragen kann. Deswegen mein Versuch dies oben mithilfe der CharINfo zu lösen. Leider klappt das nicht. Trotzdem herzlichen Danke für die rasche Antwort.

    Ciao und schönen Abend euch allen

  • Sinn der Sache soll es sein, dass ich die Charakter informationen(Geschlecht, Körpergröße, etc..) auf den Child übertragen kann, weil dies macht die Engine nicht, sondern behandelt den zweiten Actor als eigenständigen Actor. Ich hätte aber gerne, dass meine Auswahl des Charakter-Actors auch auf den zweiten Actor übertragen wird, damit ich diesen in der Welt platzieren kann und dessen Render Target für mein Hud nutzen kann. Leider bekomme ich dies nicht hin. Alle Versuche schlagen fehl.

    Naja, aus Fehlern lernt man, aber ob ich klüger werde liegt an mir.


    Schöne Nacht euch allen

  • Das, was du meinst, ist Vererbung von Klassen.


    Du müsstest eine Grundklasse erstellen, von mir aus irgendwas in der Form Person oder so, und darin eben halt die Eigenschaften festlegen. Keine Ahnung, um mich mal an deinem Beispiel zu halten, Geschlecht, Körpergröße, vielleicht noch Alter oder so.


    Und von dieser Grundklasse vererbst du dann alles an die weiteren Personen.


    Ich bin mir jetzt zwar nicht ganz sicher, weil ich mich ja mehr und mehr mit C++ unter Unreal beschäftige und ich weiß nicht so genau, ob ich da etwas durcheinander kriege oder so. Aber du kannst ja Objekte in Unreal und BPs auch instanziieren.

  • Hallo.

    Habe einen parent und davon ein Chile gemacht. Der parent ist der player Charakter. Der Child einfach im level platziert. Leider über nimmt das Chile nicht die Werte vom parent. Deswegen meine Frage: wie kann ich diese Werte(morph targets) vererben? Trotzdem danke für die Hilfe. Guten Tag euer Marc

  • Leider über nimmt das Chile nicht die Werte vom parent.

    Natürlich nicht, da es eine eigene Instanz des Actors ist...

    Nur Werte die im Editor gesetzt werden, werden übernommen.


    Deswegen meine Frage: wie kann ich diese Werte(morph targets) vererben?

    So wie ich oben bereits geschrieben hatte ^^


    1. Du öffnest das Inventar, ein neuer Preview-Actor wird gespawnt, welcher das gleiche Skeletal nutzt und ein RenderTarget hat.

    2. Dein Character hat die Referenz zu dem Preview-Actor (weil er ihn ja gespawnt hat) und sendet diesem, die nötigen Werte für die Morphs.

    3. Dein Preview-Actor setzt die Werte.


    Eigentlich nicht sooo schwer, außer man will das ganze natürlich unnötig verkomplizieren, hehe