Playercharacter an Gegner/Objekt snappen

  • Hallo liebe Community,


    ich möchte zur Zeit etwas ausprobieren mit meinem Projekt. Und zwar möchte ich, wenn ich beispielsweise in der Nähe von einem Gegner stehe, dass ich, wenn ich eine Taste drücke, mein character zum Gegner an einer von mir festgelegten Position snappt. Dabei möchte ich zusätzlich, dass die vorherige Steuerung deaktiviert wird (um ggf. eine neue Steuerung zu aktivieren).


    Das selbe könnte ich mir auch mit einem Seil vorstellen, an dem sich mein character dran hängen kann und über eine Schlucht schwingt.


    Ich habe im Netz nichts brauchbares entdecken können leider. Hat jemand hilfreiche Tipps für mich? :)


    Liebe Grüße

    Hans

  • Hi,

    Also um deinen Charakter an den Gegner zu snappen, kannst du das einfach mit nem Socket machen, den du an deinem Gegner erstellst, und dann mit "Attach to Actor" (oder so ähnlich) an den Socket binden. Irgendwo zwischen dem Eventstart und deinem Attach to Actor müsstest du noch mit Cast-to oder nem Blueprint-Interface den Socket deines Gegners angeben.

    Look behind you! A three-headed monkey!

  • Hans_Ulrich

    Hat den Titel des Themas von „Playercharacter an Gegber/Objekt snappen“ zu „Playercharacter an Gegner/Objekt snappen“ geändert.
  • Danke für deine Antwort,


    mein Problem was ich habe ist, was ich nun an die Anschlüsse von "AttachToComponent" anschließe. Diese Node habe ich im blueprint meines Gegners. Den Socketname habe ich exakt den Namen, von dem Socket meines Gegners.

    Bei "Patent" kommt das Mesh von Gegner dran.

    Aber wie bekomme ich jetzt an "Target" den Spieler dran? Das erleuchtet mir gerade nicht

  • Deinen Character kriegst du mit nem simplen Cast-to. Bei Object dann einfach "GetPlayerCharacter" angeben und bei "as "Character"" dann das target. Da gibt es jetzt aber noch vielleicht einen kleinen Logikfehler. Wenn du deinen Character an den Gegner snappen willst, so solltest du die Attach-to-Node auch in deinem Character anbringen. (Kann aber auch sein das ich mich irre bzw., dass das egal ist.

    Look behind you! A three-headed monkey!

  • Genau einfach im Character_BP die Logic einbauen.


    dem Char ne Collisionbox geben, welche dann checkt, ob dein Gegner in der Nähe ist. Oder mit nem Trace checken.


    Dann haste auch direkt den anderen Actor. Den kannste dann zum Gegner casten und kommst an dessen Socket, dann machste dein Mesh, attach to Enemymesh-Socket.


    Sollte es gewesen sein

  • Okay es sind doch noch Fragen aufgekommen leider...


    Wenn ich das mache, dann kann ich meinen Character noch bewegen (klar das schalte ich im Controller aus, oder?). Allerdings ist es so, dass der Spieler nun irgendwie auf dem gegen hängt und nicht in der gewünschten Richtung. Eine Richtungsänderung am Socket bringt allerdings gar nichts. Gibt es ne Möglichkeit innerhalb des Blueprints die Richtung zu ändern?

  • Warum machst du dir das nach der Attach node so kompliziert? Machs mal besser so: von der Attach Node, machst du nen Branch, mit der Bedingung vom Return Value. Bei true sagst du einfach Disable Input, und Dann bei Controller sagst du get Player Controller


    EDIT: Ausserdem würde das auch länger dauern, mit dem GetAllActors, da ja jeder Actor da durchgegangen wird vom Spieler Controller

    Look behind you! A three-headed monkey!

  • Warum machst du dir das nach der Attach node so kompliziert? Machs mal besser so: von der Attach Node, machst du nen Branch, mit der Bedingung vom Return Value. Bei true sagst du einfach Disable Input, und Dann bei Controller sagst du get Player Controller

    Okay danke, aber sowas in der Art mache ich doch schon oder? Oder ist das dann die Lösung dafür, das der character sich beim Snappen in die Richtung dreht wohin ich den haben möchte?

    EDIT: Ausserdem würde das auch länger dauern, mit dem GetAllActors, da ja jeder Actor da durchgegangen wird vom Spieler Controller

    Ui okay danke für den Tipp, aber das verstehe ich noch nicht ganz. Was genau dauert denn da so lange? Immerhin klappt mit dieser Note wunderbar die Weiterleitung zu einem X-beliebigen blueprint, was ich von dem "Cast to... " nicht unbedingt behaupten kann. Sorry, aus mir spricht diesbezüglich ein Anfänger.

  • Das die Get All Actrs of Class Node funktioniert will ich auch gar nicht beschreiben, aber wenn du mehrere actors von dieser Class hast, dann wird jeder einzelne Durchgegangen. Wenn da nur zwei oder drei Actors von der Klasse drin sind, ist das nicht schlimm, oder wenn du diese Node (Funktion) nur zwei oder drei mal ausführst. Bei Zehn Actors, sieht das dann schon anders aus, da kann das ganze dann mal länger dauern. Im Singleplayer nicht SOOOOO fatal, aber im Multiayer, heißt das dann erhöhte Latenz.


    Und die andere Methode die ich dir genannt habe, verändert nichts an dem Rotation problem, aber du beugst kommenden Fehlern vor. Hab bis jetzt auch noch keine Lösung gefunden

    Look behind you! A three-headed monkey!

  • Achso alles klar, dann vielen Dank für den Tipp! Das war mir gar nicht so bewusst und werde es beherzigen in Zukunft :)


    Weiß aber jemand wie das mit der richtigen Drehung beim Snappen funktioniert? Wenn ich beispielsweise eine Waffe an den character Snappen lassen möchte, funktioniert das problemlos, wenn ich das zugehörige Socket am Mesh anpasse. Aber wenn ich das selbe mit meinem Spieler machen möchte funktioniert genau das nicht? Weiß jemand Rat?

  • Könntest Du nochmals zusammenfassend schildern, was genau geht oder nicht geht und was das Ziel ist.


    Allgemein:

    1. "AttachActorToActor" (Blueprint A an Blueprint B anheften)

    2. "AttachToComponent" (SkeletalMesh von A and B anheften)

    3. "SetMasterPoseComponent" (Master Pose von B auf A übertragen, sofern beide auf dem selben Skeleton basieren)


    Der Reihe nach ausgeführt erreichst Du das Anheften des Objekts mit deiner eigenen Transformation und Animation.