Wie kann ich mit dem Charakter ein Objekt per Knopfdruck in der Hand halten

  • Hi, Ich hab vor paar Jahre mit ue4 angegangen aber dann wieder aufgehört, jetzt fang ich wieder an und lerne hauptsächlich von YouTube Tutorials. Ich hab ein third Person Template genommen und mach daraus ein first Person spiel. Ich möchte ein Objekt aufheben, welches dann vor der Kamera am Spieler attached ist, dass es so aussieht das man das Objekt in der Hand hält. Ich hab ein blueprint actor erstellt und das Objekt was hochgehoben werden sollte und eine collision box rein gezogen etc... zum aufheben hab ich auf YouTube seit gestern gesucht aber kein Video brauchbares tutorial gefunden, das einzige was ich gefunden habe war ein Tutorial wo man das Objekt erst ansehen muss und dann erst aufheben kann und dann inspizieren aber ich möchte es aufheben können während ich in dieser collision box drin stehe... Ich hab versucht bei dem Tutorial nur das was ich brauche raus zu nehmen aber er hat alles mit variablen verbunden und daraus wurde es unübersichtlich und ich konnte nichts für mich brauchbares raus suchen.

    Das System geht schon mal, das hab ich ausprobiert in dem ich ein Flip flop angewendet habe indem das erste mal "E" drücken in der collision box sich das Objekt in der x Achse bewegt und das 2. Mal in die y Achse bewegt. Am Ende möchte ich haben das der Spieler als 1. Das Objekt in die Hand nimmt und beim 2. Mal wieder hinlegt.

    Bitte ein passendes tutorial oder genaue Anleitung (Kein Objekt inspizieren sondern Objekt vor der Kamera attachen):__ DANKE! :)

  • Du kannst mit der "Enable-" bzw. "Disable Input"- Node den Input deines Controllers de-/aktivieren. Heißt: Wenn du in der Collision-Box stehst, aktivierst du ihn, wenn du außerhalb der Box bist, deaktivierst du ihn. Wenn du drin stehst und dann z.B. "E" drückst, nimmst du z.B. die "Attach to Actor"-Node,

    und gibst als Socket oder Bone die Hand des Characters an. Wenn du dann nochmal "E" drückst, kannst du mit z.B. der Teleport-Node, das Objekt wieder fallen lassen. Dabei gibst du als Location die Location deines Characters an.


    Das wäre eine Möglichkeit.

  • Du kannst mit der "Enable-" bzw. "Disable Input"- Node den Input deines Controllers de-/aktivieren. Heißt: Wenn du in der Collision-Box stehst, aktivierst du ihn, wenn du außerhalb der Box bist, deaktivierst du ihn. Wenn du drin stehst und dann z.B. "E" drückst, nimmst du z.B. die "Attach to Actor"-Node,

    und gibst als Socket oder Bone die Hand des Characters an. Wenn du dann nochmal "E" drückst, kannst du mit z.B. der Teleport-Node, das Objekt wieder fallen lassen. Dabei gibst du als Location die Location deines Characters an.


    Das wäre eine Möglichkeit.

    Klingt logisch aber da ich bisher wenig Erfahrung mit dem programmieren habe, weiß ich noch nicht mit was ich das alles verbinden muss, da wäre es tutorial schon effizienter :)

  • Schau einfach mal nach Tutorials für Inventorysysteme. Viele haben da auch ein Pickupsystem bei die man dann für deine Zwecke umwandeln kann.


    Leider habe ich momentan keine Zeit da jetzt direkt ein langes Tutorial zu schreiben da ich zeitmäßig etwas eingespannt bin. Renovieren, Projekt mit Sleepy, mein Projekt, nächste Woche noch ins Krankenhaus wegen meinem Rücken, usw. Dann noch bis dahin Wäsche Waschen, Einkaufen usw.


    Sonst würde ich das gerne mal annehmen, Aber vielleicht findet sich hier ja jemand, der das übernehmen kann. Irgendwo hatten wir hier doch auch einen der immer ganz gerne Videotutorials gemacht hat. Wo ist der denn abgeblieben?

  • hab jetzt mal was ausprobiert. Ist das richtig? Und wie mache ich das der actor sich mit der Hand attached denn da kommt ne Fehler Meldung und ich weiß nicht was damit gemeint ist

    Der Get Motion Source for Hand ist ein Node für Magic Leap.


    Ich nehme mal an, dass das du etwas an die Hand des Skeletal Meshes deines Characters attachen willst.

    D.h. Du solltest ein "Attach to Component" nutzen, wobei Target der Actor ist, den zu fixieren willst und Parent das Skeletal Mesh deines Controllers.


    Der Socket Name sollte so heißen wie der Socket an der entsprechenden hand. Diesen erzeugst du im Skeleton des Skeletal Meshes, oder du nimmst den Namen vom Hand Bone (z.B. hand_r).

    https://docs.unrealengine.com/…Meshes/Sockets/index.html


    Jetzt kommen die Attach Rules ins Spiel. Hier kommt es darauf an was genau du willst.

    Keep World bedeutet dass, das Objekt an der Ursprünglichen Position bleibt, aber sich ab jetzt mit der Hand mitbewegt.

    Keep Relative bedeutet dass das Objekt seine Position ändern, so dass seine Relativ Position/Rotation/Scale zum neuen Parent gleich der Relativ Position/Rotation/Scale zum alten Parent ist.

    Snap To Target bedeutet dass der Ursprung des Objektes auf die Position des Sockets gelegt wird.


    Hier kommt es ganz darauf an was genau du machen willst.


    BTW

    von der Funktionalität die du beschreibst kommt aber glaube ich das hier näher an dem was du willst, als was hier irgendwie vorgeschlagen wird. Wenn man es dann schöner machen willst kann man über einen Anim Blueprint und IKs die Hände entsprechend bewegen.

  • So leute ich habe vom diesem Tutorial hier umgesetzt das ich jetzt objekte aufheben und fallen lassen kann. https://youtu.be/HnR1Gf5gXcY

    Wenn ich das objekt in der Hand halte dreht es sich von allein nicht mehr aber ich kann mich noch um das objekt drehen... wie kann ich es machen das das objekt wenn ich es in (der hand halte) es nicht drehen kann und an mir sozusagen (attached) ist?


    Ich wollte ja das ich das objekt nur auf einer bestimmten fläche aufheben und auch nur da wieder ablegen kann, ich versuche mal das mit dem object grap system einzubauen, sollte nicht so schwer sein (schätze ich)

    und kann ich von dieser collision box die die aktion zum objekt aufeben auslösen soll eine varable zu dem objekt welches aufgehoben wird machen? oder kann ich die box direkt mit dem objekt verbinden? das ist brain fuck :__

  • Du könntest es den Leser auch ein bisschen einfacher machen.


    Wie wäre es wenn ein Screenshots deines Blueprints hier postest den sonst müsste man erst 22 min Youtube schauen um dir deine Frage beantworten zu können.

    You may love to play games, but that doesn’t make you a developer.
    I love to eat dinner, but that doesn’t make me a chef.

  • Wie wäre es wenn ein Screenshots deines Blueprints hier postest

    Hier vom Tutorial für den character:


    Hier vom anderen Tutoriaal mit der collision Box (Blueprint actor mit box)



    (Beim letzten Bild ist der blueprint auch noch nicht fertig sondern so als (vorlage))

    Jetzt möchte ich das zusammenfügen, heißt: Wenn ich in der Collision box stehe kann ich die aktionen von den oberen Bildern (character) ausführen und wenn ich nicht drin stehe eben nicht. Es gibt doch so ne Varable (Boolean) mit true und false kann ich das nicht so machen das wenn ich in der Box stehe das die Variable auf true geht und bei true die oberen aktionen aktiviert werden?

  • Naja die Lösung ist, dass im Tutorial bei 17:30 für ein einzelnes Objekt unter Pysics bei Constraines die Rotation ausgeschalten wird (Lock Rotation alle Hackerl an).


    Das andere Problem müsste der Positionierung der eingebauten Scene liegen und daran, dass das Objekt den Boden berührt und hängen bleibt.


    Mein ganz falscher Kommentar vorher im Thread soll bitte ignoriert werden.^^

  • Naja die Lösung ist, dass im Tutorial bei 17:30 für ein einzelnes Objekt unter Pysics bei Constraines die Rotation ausgeschalten wird (Lock Rotation alle Hackerl an).


    Das andere Problem müsste der Positionierung der eingebauten Scene liegen und daran, dass das Objekt den Boden berührt und hängen bleibt.


    Mein ganz falscher Kommentar vorher im Thread soll bitte ignoriert werden.^^

    Bei mir bleibt da garnichts hängen. Ich habe als Boden die standart plane und den objekten eine (schwerkraft) gegeben und konnte sie so ganz normal hochheben