Possess

  • Hallo, melde mich nach ewiger Zeit wieder mal mit einer Frage.


    Ich würde gerne meinen Charakter einen Handkarren aufnehmen lassen und damit dann herum gehen. Dabei stellt sich mir nur die Frage, wie ich das am Besten mache, dass sich der Charakter an die richtige Stelle, nämlich vor den Karren bewegt und diesen aufhebt. Das Problem, dass sich der Karren mit dem Charakter bewegt habe ich sehr provisorisch mit Sockets gelöst. Der Karren erscheint eben hinter dem Spieler. Jedoch fehlt mir das dazwischen.


    Dachte ich könnte dies so machen, dass ich den Player unposses, mit einem AiController possess. Diesem durch Blackboard und BehaviorTree nach dem Punkt vor dem Karren suchen lassen, dann ein Move to an den Punkt und schließlich die Aufnehmeanimation für den Wagen und den Charakter abspielen lasse. Dann den Karren an den Socket des PLayers binde und voila fehlt nur noch, dass die Spielfigur die richtige Animation beim Gehen, nämlich das Ziehen des Wagens abspielt, wenn er geht.

    Leicht gedacht, keine Ahnung wie ich das am Geschicktesten umsetzen kann.

    Leider funktioniert bei mir nicht, dass ich die Spielfigur vom AIController possesen kann.

    Nach einem UNposses und folgendem Possess, welches aufgerufen wird durch ein Custom event, wenn der Spieler eine Taste drückt und sich ein Handkarren im LineTrace vom Kopf ausgehend befindet, bekomme ich die Fehlermeldung: Accessed NoneTrying to get AIController.

    Mir ist klar, dass dies bedeutet, dass die Engine keinen AIController findet, nur weiß ich leider nicht wie und wo ich diesen einstellen kann. Nutze bisher vom Possess aus die Funktion: Get AIController - Get Reference to Self im PLayerblueprint, in welchem auch das Custom Event ausgeführt wird.


    Ich hoffe ich konnte mich einigermaßen gut verständlich machen, Screenshot folgt:

    Vielleicht könnt ihr mir ja weiterhelfen, danke auf jeden Fall im Voraus und wünsche euch allen einen schönen Tag,


    Ciao Marc

  • Hallo, na da werden dir die Profis hier weiterhelfen können. Ich bin leider keiner.

    Ich habe SetActorRotation eingefügt um meinen Character in die richtige Richtung zu drehen sobald er vor dem Gegenstand steht.


    Aber die anderen werden dir das schon beantworten können.

    Gruß

  • den set actor rotation werde ich vermutlich ebenfalls brauchen müssen, wenn der Charakter nämlich den Punkt(Scene) vor dem Karren gefunden hat und sich dorthing bewegt. Da der Karren etwa die Ausmaße von 3 mal 2 Meter hat, benötige ich eine Animation um den Charakter vor den Karren zu bewegen. Egal von welcher Seite er auf den Karren sieht.

    Im Blueprint habe ich bisher nur die Anmerkung gefunden, dass ein AIController gespawned werden muss.

    Keine Ahnung wie, wo und ab wann ich das machen soll.

    Kann ich einfach an das GetAiController ein SpawnAiController machen und die Vectordaten des PlayerCharakters benutzen, mit get world Location rotation und scale?

    Bin um jede Hilfe dankbar.

  • Danke für die Bilder, kenne mich da nur leider nicht aus.

    In meinem Fall würde ich gerne aus meinem PLayerCharacter einen AICharakter machen. Diesen sich an den Punkt bewegen lassen und dann wieder vom Player Controller possesen lassen, damit ich schlussendlich den PLayerCharakter den Wagen mit den Bewegungstasten ziehen lassen kann. :)

    Aber danke für die Zeit und die Bilder. Ist dass bei dir ein spielbarer Charakter oder eine AI? Mir erscheint es irgendwie unklar woher der Charakter wissen soll, wie er sich zum Punkt bewegen soll. Er wird einfach an den Ort gezappt oder?


    Danke auf jeden Fall

  • Meiner ist spielbar. Einen AI-Cahrakter habe ich auch der Parliert und wenn er meinen Spielbaren Chrackter sieht kommt er auf mich zu (AI MoveTo) und stellt sich dann immer genau vor mir, mit SetActorRotation (Will ja das ich mit ihm spreche) Und wenn bestimmte Animatinen ausgeführt werden sollen mit meinem Charackter kannst du den Ai oder auch deinen Spielbaren so drehen das die Animationen zusammen passen.


    Gruß

  • So habe es nun hinbekommen, dass der PLayerCharakter vom AiController possessed wird.

    Nun ein weiteres Problemchen, dass sich mir aufgetan hat, bei dem Ihr mir vielleicht weiterhelfen könnt.


    Wenn ich beim AiController den BehaviorTree vom Begin PLay im Controller ausführen lasse, dann geschieht leider gar nichts. Wenn ich ein On Possessed Event nutze, dann wird der BehaviorTree zwar ausgeführt, jedoch anscheinend immer wieder von neu. An was das liegt, oder ob ich mit meiner Vermutung so ganz richtig liege keine Ahnung.


    Meine Vermutung vom On Possessed beruht darauf, da ich im Behavior Tree in einem Task die WorldOrigin des Karren abfrage und diesen durch einen Print String ausgeben lasse. Dann ein MovetoTask und ein Wait von ein paar Sekunden. So dachte ich mir kann ich das lösen. Falsch gedacht. Der Print String zeigt mir im Tick-Takt die WorldOrigin an, deswegen meine Vermutung, dass dieser Task dauernd ausgeführt wird. Vielleicht könnt Ihr mir ja ein wenig auf die Sprünge helfen. Keine Ahnung an was das liegt.


    Danke und einen Schönen Tag wünscht euch euer Marc

  • So schlussendlich den Fehler gefunden. Im BehaviorTree hatte ich zuerst den Task zum Finden der Location und dann den MoveToTask. Habe dies nun vertauscht und voila, funktioniert, auch wenn ich die Logik dahinter nicht ganz verstehe. Naja, hauptsache funzt.


    Alles Gute und euch allen viel Erfolg, ciao Marc

    • Offizieller Beitrag

    Hat sich ja vieles von selbst erledigt ^^

    Wenn du es aber wie ein Profi machen möchtest, das mit der Handkarre und dem Charakter, dann solltest du dafür ein weiteren Bone im Charakter haben. Der Bone kann von mir aus, Handkarre_Socket heißen. Im 3D Programm muss die Handkarre an dem Bone fixiert werden und der Charakter wird dann für bestimmte Bewegungen animiert. Somit ist die position der Hände zu 100% gewährleistet und auch die Kurven können ganz genau animiert werden. In UE4 einfach an den Bone ansockeln lassen und fertig.

    Was auch geht, die Hände mit IK in ue4 an die Griffe ansetzen lassen. Ist aber schlecht zu animieren.

    Und natürlich kommt es auf dem Charakter und dem Spiel an. Ist es nur eine simple Spielfigur, wo die Drehungen mit der Karre egal ist, dann reicht ein normales ansockeln an dem Actor völlig aus.