Suche gutes Tutorial für Rotation im Stand und für Kopfbewegungen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Danke für deine Hilfe, nun haben sich neue Fehler aufgetan. (Das alte vorher habe ich entsprechend dafür entfernt, vor allem das bei Movement).

    Wenn ich beide Charaktere gegenüberstelle und ich schaue nach rechts, bis ich im Stand eine Rotation von gefühlt 90 Grad gemacht habe, dann stehe ich für den anderen Spieler jedoch um 180 Grad da und nicht mit 90 Grad.
    Drehe ich mich um 180 Grad (Rücken zum anderen Spieler), steht ich mit der Vorderseite zum Spieler.

    Das Ruckeln vorwärts, links, rechts und entsprechend vor-links und -rechts, sind deutlich besser geworden.
    Es ist nur noch ein minimales ruckeln zu vernehmen.

    Jedoch besteht weiterhin das (etwas weniger starke) Ruckeln, wenn ich mich nach hinten bewege und entsprechend hinten-links und hinten-rechts.
    Wenn ich mich nach hinten bewege, dann rotiert mein Charakter bei dem anderen Spieler im Kreis, so wie bei einer Ballerina. :D
    Auch bewegt sich mein Charakter nicht "rückwärts" sondern schlägt rechts oder links schräg nach hinten ein und geht so zurück.
    In dem AnimationBlendSpace, habe ich bereits entsprechend alle Bewegungen und Richtungen eingebaut.
    Gehe ich nach hinten (laut dem BlendSpace) würde ich also mit dem Rücken auf die ThirdPersonCamera zugehen.
    Aktuell tut es das nicht, denn der Client versucht, mit dem Rücken-Vorderörper nach hinten zu gehen, also beides gleichzeitig irgendwie.



    Gibt es auch die Möglichkeit die "KörperDrehung" entsprechend in einem festen 45 Grad winkel zu setzten, damit ich dies entsprechend mit einer Animation (Drehanimation) verwischen/darstellen kann?
    So wie es mir vorkommt, dreht sich mein Charakter gegenüber von dem anderen im Multiplayer (Deticated Server) mit doppelter Geschwindigkeit.
    Würde ich also um 1 rotieren (Client 1), sieht Client 2 das ich mich um 2 rotiere.
  • Dj EKI schrieb:

    Nu habe ich das doch nicht nach dem Video gemacht, aber wenn fragen aufkommen, warum ich diese Nodes genutzt habe, dann frag ruig.

    Bei meiner Variante würde ich auch gleich den Profies fragen, ob man bei solche Berechnungen cheaten kann. Ich weis dass man Variable mit einem Programm auslesen und verändern kann. Da diese Variable aber ständig sich verändert durch Berechnungen, weis ich nicht, ob es trotzdem möglich ist. Denn der Client Rechnet und der Server bekommt alles vom Client.
    Eine Sache auf die du achten solltest: (am besten Mal testen)
    In C++ kenne ich es so dass in StandAlone (Singleplayer) oder auch ein ListenServer (Server ist gleichzeitig auch Spieler), eine Server Funktion aufgeführt wird. D.h. es könnte sein, dass AddActorWorldRotation 2 Mal ausgeführt wird, man sich also um das doppelte dreht, wenn man Offline im SinglePlayer spielt. Könnte auch das Problem was oben beschrieben ist erklären. Es ist meistens besser einen richtigen Setter zu nutzen, dann gibt es keine doppelte Addition, sondern nur doppeltes setzen, was nicht so schlimm ist.

    Ich könnte mein derzeitiges System Mal auf logik Ebene erklären. Leider ist es in C++, aber macht es glaube ich keinen Sinn dir die Implementation zu zeigen.
    2 Probleme die sich aber Lösen lassen sollten:
    1. Ich komprimiere unwichtige Rotationsdaten auf 8 Bit pro Koordinate bevor ich zu den Simulated Proxy's (alle clients die nicht Pawn-Owner sind). Dies könnte etwas schwierig werden.
    2. Ich überlade die Funktion in der in Original Character, die Rotation durch den Controller gesetzt wird. Diese lässt sich über Blueprint nicht überladen. Man könnte aber das ganze auch im Tick umsetzen.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Tomura ()

  • Ja, dass mit der rotierung sind spezielle Wünsche. Meine Option ist nur vom Standard ThirdPerson übernommen worden. Sollte der Charakter Rückwerts laufen ohne sich zu drehen, muss natürlich dafür auch etwas getahn werden. Spontan kann ich leider jetzt nicht sagen was.
    Das was du im Bild hast, dass mach mal wieder so wie vorher. Ich habe es ja nicht wie im Video übernommen.
    Dass der Charakter sehr weit dreht, ist für mich jetzt nur zu erklären, dass du den Custom Node "ServerAusführen" nicht auf RunOnServer gestellt hast. Dieser Script fuinktioniert nur auf dem dedicated.
    Ich dachte, AddActor, oder andere Nodes, wäre überhaubt nicht nötig, da replicated Movment aktiv ist im Charakter. Anschein geht das nur mit den richtigen Movement Input Nodes, damit sich der Charakter drehen kann.
  • Mach mal ein neues Projekt nur zum testen. Dann machst du erst mein Script und baust so langsam deine Wünsche hinzu. Dann siehst du evtl eher den Fehler. Ich glaube du hast vieles so verbaut, sodass nix mehr geht. Da du im BP noch recht frisch bist, solltest du alle Ausgänge mal mit ein PrintString überprüfen, was passiert und mal selbst damit herum spielen. Sodass du den Sinn der Nodes verstehst. Dass was ich dir gegeben habe funktioniert. Wenn du andere Einflüsse hast, die müssen natürlich entschärft werden, da ich nicht weis, was da noch so alles ist. Du möchtest nur den Kopf rotieren lassen? Im Video und bei mir ist zusätzlich noch eine Rotation für den gesamten Charakter eingebaut worden, damit der sich bei max 90° von der Kamera mit dreht. Kann man weglassen. Da du das Video so wolltest, habe ich das auch so eingebaut. Nur habe ich einiges weggelassen. Von daher solltest du das Video vergessen, wenn du meins einbaust.
  • So habe ein neues Projekt erstellt und genau das gemacht wie du es im Video angegeben hast.
    Das Resultat ist das gleiche wie in meinem Projekt.

    Im Stand mit dem Kopf umhersehen funktioniert super.
    Die Rotation funktioniert auch soweit super (im Multiplayer dreht sich der Character mit dem doppelten Wert).
    -> Client +180 Grad = Multiplayer 360 Grad.
    Warum das so ist, keine Ahnung.

    Bewegung links und rechts funktioniert super.

    Bewegung zurück ist fehlerhaft, genau so wie im neuen Third Person Projekt, als in meinem bestehenden.
    Bei der Rückbewegung dreht sich der Character im Multiplayer im Kreis (Kreisdrehung).



    Wenn ich "Set Use Controlled Yaw" auf 1 setzte, dann funktioniert alles korrekt in der Rückwärtsbewegung, jedoch mit dem typischen Ruckeln.
    Demnach bewegt sich der Character auch wirklich mit der Animation rückwärts, anstatt wie bisher seitlich rückwärts einzudrehen.
    Dann funktioniert jedoch nicht mehr die Kopfbewegung nach links und rechts (weil der Character sich dann sofort dreht, anstatt bei den angegebenen Winkeln +90 und -90 Grad).
    Hoch und runter schauen funktioniert ohne Probleme.
  • Dj EKI schrieb:

    Nu habe ich das doch nicht nach dem Video gemacht, aber wenn fragen aufkommen, warum ich diese Nodes genutzt habe, dann frag ruig.

    Bei meiner Variante würde ich auch gleich den Profies fragen, ob man bei solche Berechnungen cheaten kann. Ich weis dass man Variable mit einem Programm auslesen und verändern kann. Da diese Variable aber ständig sich verändert durch Berechnungen, weis ich nicht, ob es trotzdem möglich ist. Denn der Client Rechnet und der Server bekommt alles vom Client.

    Ich meine auch nicht das Video, sondern das was du mir geschickt hast. (Leider werden die Bilder dazu nicht angezeigt im Zitat :( )

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Todesklinge ()

  • Ok, jedenfals weis ich schon mal, dass du unbedingt controlled yaw aktiv haben möchtest. dass ist auch der Grund, warum im Video bei deinem inputs für Bewegungen controlled Yaw gesetzt wird. Dass bedeutet, bewegst du dich nicht, dann wird controlled yaw deaktiviert. bewegst du dich, wird sofort controlled yaw aktiviert.
    Controlled Yaw dreht dein charakter Actor zur Kamerarichtung.
    Da du Probleme mit meiner Variante hast, müssen wir das per teamviewer erledigen. Oder du sschickst mir die assets. Aber teamviewer ist besser.
  • Mir ist es wichtiger zu verstehen wie das genau funktioniert und was, was macht.
    Anstatt das du es für mich dann über TeamViewer oder anderweitig machst, denn diese Funktion könnte ich auch in anderen Bereichen gebrauchen.
    Vielen Dank daher für dein Angebot!

    Der Mehrwert wäre für mich darin es auch logisch zu verstehen und nicht einfach nur machen und gut ist :)

    Sicherlich würden andere hier im Forum auch diesbezüglich mehr wissen und dafür ist das Forum ja letzendlich da, damit man sich gegenseitig helfen kann.

    Daher würde ich das auch weiter hier im Forum verfolgen und machen.


    Grundsätzlich soll man sich in alle Richtungen bewegen können und die Kopfbewegung ebenso (entsprechend zu den Winkeln).
    Nur möchte ich eben durch das ControlledYaw eine relative fixierung in vorderer Richtung haben (für ThirdPerson und FirstPerson).

    So gesehen sieht der Character nach Norden, trotzdem kann ich mich in alle Himmelsrichtungen bewegen und das soll auch so fest bleiben.
    Erst wenn ich mich drehe (links oder rechts), dann soll ein neue fixierte Sichtrichtung sein und alles weitere in der Bewegung wie gehabt.
    Grob gesagt, soll es immer eine feste Richtung geben an der sich alle anderen Dinge (Variablen usw.) festhalten, nur eben wenn ich mich drehe wird das ganze verändert und als neue feste Richtung betrachtet.

    Das ist vor allem auch im Kampfmodus wichtig, weil sonst verliert man schnell den Überblick und noch mehr die Kontrolle der Bewegung im Kampf. Es ist viel einfacher im Kampf zu wissen das es eine feste Richtung gibt nach der man sich orientieren und kämpfen kann. Schon alleine das Blocken von Schlägen oder mehr.
    Vorher hatte ich kein ControlledYaw im Kampfmodus und das macht so nicht wirklich Spass, da es viel zu durcheinander und unübersichtlich wirkt. Weil je nach Winkel der Kamera führt das auch zu seltsamen Fehlern in der Bewegung.
  • ok, du willst kein TV , also muss ich Davon ausgehen, dass du außerhalb des scripts alles richtig gemacht hast und ich dir hier nicht weiter helfen kann, da die Ursache mir unklar ist. Mein script ist sowieso nicht cheat sicher, da es nicht vom Server berechnet wird und an der Rotation kann man sicherlich gut cheaten. Ich kann dir nur das gleiche bauen mit einern cheatsicheren methode. Werde ich machen, wenn ich zu Hause bin.
  • blueprintue.com/blueprint/-zxsz7pb/

    So, nu hab ich das umgekrempelt. Hier wird diesmal das laggen gesmoothed. Der Spieler sendet die Sicht Daten an den Server, der Server speichert die. Dann holt sich der Spieler die Daten vom Server und berechnet die Rotation. Da diesmal nicht der Server berechnet, oder alles vor dem Server berechnet wird und die Daten erst zum schluss mit interp bearbeitet werden, da kann es einfach nicht mehr ruckeln, oder hart laggen. Ob das cheat sicher ist weis ich nicht, aber ich gehe stark davon aus. Ansonsten lass es komplett vom server berechnen, was ich hiermit aber vermeiden wollte.
    Was bei Blueprintue leider nicht zu sehen ist, fals man es nachbauen sollte, IsKopfrotationTarget und DreheKoerperTarget sind replicated. Ich weis nicht, was passiert, wenn man das kopiert, ob die dann auch repliziert sind.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Dj EKI ()

  • Dj EKI schrieb:

    blueprintue.com/blueprint/-zxsz7pb/

    So, nu hab ich das umgekrempelt. Hier wird diesmal das laggen gesmoothed. Der Spieler sendet die Sicht Daten an den Server, der Server speichert die. Dann holt sich der Spieler die Daten vom Server und berechnet die Rotation. Da diesmal nicht der Server berechnet, oder alles vor dem Server berechnet wird und die Daten erst zum schluss mit interp bearbeitet werden, da kann es einfach nicht mehr ruckeln, oder hart laggen. Ob das cheat sicher ist weis ich nicht, aber ich gehe stark davon aus. Ansonsten lass es komplett vom server berechnen, was ich hiermit aber vermeiden wollte.
    Was bei Blueprintue leider nicht zu sehen ist, fals man es nachbauen sollte, IsKopfrotationTarget und DreheKoerperTarget sind replicated. Ich weis nicht, was passiert, wenn man das kopiert, ob die dann auch repliziert sind.

    Das läuft jetzt schon viel besser und flüssiger :)

    Leider wirkt sich die Kopfdrehung nicht auf den Kopfmodus im Multiplayer aus.
    Nur das hoch und runter mit dem Kopf funktioniert. Links und rechts schauen nicht, da sich der Character dann bei dem anderen Client sofort dreht, anstatt erstmal zu schauen.

    Also die Animation von Client 1, stimmt nicht mit Client 2 überein.

    Ohne die Branches funktioniert es nicht richtig und es kommt wieder das ruckeln. Muss aber noch schauen woran das liegt.
  • So konnte den Fehler nun endlich finden, warum das bei anderen Clients immer zu Fehlern gebracht hat.

    Es lag am InputAxisMoveForward. Komischerweise wird der Wert NICHT replicated.

    Daher, wenn ich Client 1 + 2 + Server hatte (Dedicated Server) und ich bin mit Client 1 gelaufen, dann hat Client 2 immer was anderes gesehen.

    Jetzt mit dem InputAxisMoveForward -> Server -> MultiCast (alles Reliable) und aus dem Wert von MultiCast, funktioniert es nun fast perfekt.

    Im Thirdperson-Normal, kann ich nun korrekt in alle Richtungen laufen, ohne das etwas ruckelt oder falsch übertragen wird. Meist war dort der Fehler beim zurücklaufen.

    Im Thirdperson-Kampfmodus, geht auch alles soweit richtig, nur das zurücklaufen funktioniert noch unterschiedlich.
    Wenn ich mit Client 1 zurück laufe, läuft Client 1 Rückwärts-Vorwärts.
    Bei Client 2, läuft Client 1 korrekt zurück.

    Also wird bei Client 1 irgendwas nicht richtig selbst übertragen, jedoch Client 2 sieht alles richtig bei Client 1. Das ist irgendwie merkwürdig, weil alles über den Server läuft.



    Manchmal gibt es noch so seltsame Kopfverdreher in der Bewegung. Vor allem wenn ich nach vorne schaue, dann nach links oder rechts laufe und daraufhin in die gegengesetzte Richtung mich bewege, wird die Animation in Verbindung mit der Kopfrichtung, irgendwie seltsamerweise "vermischt" und das führt hin und wieder du komischen Ergebnissen.
  • Das gleiche muss man auch bei InputAxisMoveRight machen -> Server -> Multicast


    99% der Fehler sind beseitig, jedoch bleibt leider noch einer übrig und zwar wenn ich zurück laufe und die Kamera ein wenig nach links und rechts hin und her schwanken lasse, dann kommt es zu einer Art "Positionsfehler".
    Also der Character wackelt dabei ein wenig zwischen hinten links/hinten rechts hin und her. Je nachdem wie ich meine Kamera bewege.

    Wenn ich zurück laufe und meine Kamera nicht nach links und rechts bewege, gibt es auch keine fehlerhafte Darstellung und alles läuft top!
Unreal®, Unreal Engine, the circle-U logo and the Powered by Unreal Engine logo are trademarks or registered trademarks of Epic Games, Inc. in the United States and elsewhere.