Actor in Struct festlegen

  • Guten Abend zusammen,

    Ich nutze derteit das kostenlos zur verfügung stehende Inventarsystem aus dem UE-Store (Äpfel und Burger), weil es das einzige ist, welches mich nicht gänzlich überfordert.

    Nun möchte ich ein Item aus der Hotbar direkt dem Spielcharacter zuweisen.

    Dazu habe ich einen Actor erstellt (Waffe). Die Crafting logic ist dabei schon im Inventory-System hinterlegt.

    Nun möchte ich den Actor zuweisen, sobald ich das Waffensymbol in der Hotbar anklicke. Ich kann hierfür zwar in der Struct einen Actor hinzufügen, jedoch diesen im Datatable nicht zuweisen.

    Ich stehe völlig auf dem Schlauch. Kann mir jemand einen hinweis geben, wie man das richtig angeht?

    Vielen Dank schon mal.

  • Ich stehe völlig auf dem Schlauch. Kann mir jemand einen hinweis geben, wie man das richtig angeht?

    Das ganze würde bestimmt auch per eigenem Actor gehn, aber hab ich nie gemacht, eben weil ich "DataTables" benutze und dadurch keine viele verschiedene Actor brauche...


    Du packst einfach deine Infos wie Waffenschaden, Magazingröße, usw., sowie ein StaticMesh bzw. SkeletalMesh (jenachdem was deine Waffen sind) ins DT.

    Dann wenn du auf den Button klickst, wird im Character-BP ein Event ausgeführt, wo die Data-Table aufgerufen wird und das Mesh dem Character per "AttachComponentToComponent" an nen Socket dran gemacht wird.
    Die Werte werden ebenfalls über das Event und DT, direkt im Character-BP gesetzt ^^



    Ich hab das "RightHand" (Component) bereits vorab meinem Character-BP hinzugefügt, wenn keine Waffe equipped ist, ist das Ding einfach leer.
    Hier alle Meshes die mein Character derzeit haben kann:


    Um nen Socket zu benutzen, musst in dein "CharacterSkeleton" gehn:


    Und dort nem "Bone", einen Socket hinzufügen:


    Du kannst direkt da gucken, ob die Waffe richtig angezeigt wird (AddPreviewAsset) und wenn nicht, die Location und Rotation des Sockets anpassen.



    Nebeninfo:

    Für Klamotten, die direkt auf das CharacterMesh geriggt sind, brauchst keinen Socket, dort fügt man einfach ein Skeletal-Component hinzu und listet es unter dem Character Mesh (wie oben im Bild ein bisschen nach rechts verschoben), dann ist Location und Rotation immer 0 ^^


    Das einzige was ich da mache, sobald ein Mesh "angelegt" wird, ist das:

    1. Node sollte ja jeder kennen, da es dafür da ist, dem Component zu sagen, welches Skeletal es ist.
    2. Node ist dafür da, dass man die Animationen des CharacterMesh übernimmt, so dass es nicht asynchron ist.
      Außerdem wird dadurch nicht mehr für jedes einzelne Mesh des Characters eine eigene Animation abgespielt, sondern für alles die gleiche, was das ganze wieder erheblich performanter macht ^^
      https://docs.unrealengine.com/…ingwithModularCharacters/