Input Action reagiert nicht im BP

  • Moinsen,


    mal wieder ein kleiner nerviger Fehler der mir Zeit ohne Ende raubt.


    Es geht darum das ich ein BP mit mehreren Meshes erzeugt habe (Waffe). Dieses BP besitzt eine Logik (Schießen) die per Linker Maustaste ausgeführt werden soll.
    Nun ist es so das ich diese Waffe schon ein mal in einem Testprojekt erstellt habe und die Logik auch soweit funktioniert hat.


    Ich habe nun dieses BP in mein aktuelles Projekt migriert und wundere mich nun das es nicht mehr funktioniert.
    Eine "Fehlersuche" hat ergeben das meine Input Action Left Click nicht mehr reagiert, einige Versuche mit anderen Inputs (Tasten "G" "E" oder andere) funktionieren auch nicht, es kommt also kein Input an.


    Jetzt war ich natürlich nicht untätig und habe schön gegoogelt.
    Ich habe Einträge gesehen das man Enable Input mit einbinden soll, getestet, geht nicht.


    Dann habe ich gelesen das man im Player Controller Input Mouse aktivieren soll..ist es aber funktioniert nicht.
    Ich habe den gleichen Controller und Gamemode wie in meinem Testprogramm (wo es funktioniert) aber beim aktuellen Projekt will er einfach nicht reagieren.


    Im Player Controller frage ich an einer stelle jedoch auch Input Left Click ab und im Player Controller funktioniert es.
    Noch einmal zur Erinnerung im Blueprint habe ich Enable Input mit Get Player Controller verbunden ohne Erfolg.


    Ich bin momentan echt Ratlos woran es liegen könnte das er die Inputs nicht erkennt.
    Ich habe das Waffenblueprint in meinem Player BP eingebunden, die Waffe richtet sich nach einer Logik auch nach der Mouseposition aus, das komischerweise funktioniert, aber dies wird auch per Event Tick getriggert.



    Für jede Hilfe wäre ich dankbar, ich stocher grad im Dunkeln.

  • Nein ich habe ein altes Projekt gehabt wo ich vorab einiges getestet habe unter anderem dieses Waffen BP.


    Dann habe ich ein komplett neues Projekt gestartet und da läuft nur 1 Player und 1 Gamemode und das BP habe ich übernommen.

  • BPs kann man ja 1A in Aktion debuggen und da es sich bei der Input Action um ein Event handelt welches am Anfang steht sehe ich ja direkt ob was passiert oder nicht.


    Den Gamemode und Player Controller habe ich selbst zusammen gebaut, habe diesen aber auch schon im Testprojekt selbst zusammen gebaut, lustig ist ja das beim Playercontroller alles funktioniert, also die Inputs kommen, nur im BP kommt nichts an.


    Kann heute Abend gerne mal ein paar Screens posten, was möchtest du denn sehen ? BP, Gamemode, Playercontroller, Pawn ?

  • Sollst du heute Abend bekommen :)


    Edit: Habe noch mal etwas weiter gesucht und noch 3 Ansätze gefunden die ich ausprobieren werde.
    Sollten die nicht zum Ziel führen poste ich die Screens.


    Melde mich aber auf jeden Falll mit der Lösung oder den Screens

    hier kann man meine Modelle kaufen: https://www.cgtrader.com/harlyk
    DAS GRÖSSTE KOMMUNIKATIONSPROBLEM IST,DASS WIR NICHT ZUHÖREN, UM ZU VERSTEHEN. WIR HÖREN ZU, UM ZU ANTWORTEN.

    Einmal editiert, zuletzt von Harlyk ()

  • Ich habe echt alles ausprobiert.


    Auto Receive Input aktiviert, und deaktiviert, Consume Input raus genommen, hin und her ...nichts klappt.


    Das Player switchen geht aber das Rohr drehen nicht. Steht das BP alleine richtet sich die Waffe auch nach dem Cursor aus, gibt es das BP 2 mal geht das nicht mehr.
    Player Charakter und Controller haben volle Funktion nur das BP zickt rum, langsam weiß ich nicht mehr weiter.

  • Meinst du im Player_Controller BP ?
    Hatte dort schon mal die Input Action komplett entfernt jedoch hat das auch nichts gebracht, kann es gerne mal testen.


    Das Ziel ist es eigentlich ohne c++ zu arbeiten auch wenn ich es könnte, ich möchte bei diesen Projekt mal sehen wie weit man mit BP´s kommt, daher würde ich gerne dieses Problem auch ohne c++ lösen.
    Finde es allgemein sehr eigenartig wie das mit dem Consume Input geregelt ist, wenn ich es richtig verstanden habe gibt es da eine Reihenfolge, was ich nicht verstehe wieso es keine Möglichkeit gibt zu sehen welche andere Funktion gerade den Input consumed ??
    Wenn man da ein Fehler hat sucht man ja Jahre bei den Massen an Funktionen die irgendwann im Spiel sind.


    Ich bin mir in diesem Fall aber ziemlich sicher das nur eine Input Action im Playercontroller und im BP ist, lustig ist das die Mausausrichtung bei 2 BP´s auch nur bei einerm BP funktioniert, denke wenn man den Fehler findet findet man gleichzeitig das andere Problem.


    Irgendwo bestimmt so nen dummer Haken den man setzen muss :/

  • Ich hab dir ein Bild zum Input Flow mal angehangen. "Consume Input" bestimmt lediglich, ob der Input der unteren Ebenen (auf dem Bild ist das ja gut zu erkennen) noch akzeptiert oder blockiert wird. Ich habs eben nochmal probiert, wenn du im Actor "Input Enabled" setzt dann bekommt er die KeyEvents als erstes und mit "Consume Input" eingeschaltet sind alle anderen Eingabemöglichkeiten blockiert. Was genau machst du denn noch wenn du auf den Mech klickst, dein Bild von der Controllerfunktion ist ja etwas abgeschnitten.

  • Ja das Bild kenne ich, hatte ich auch gefunden nur funktioniert es irgendwie nicht. Consume habe ich ja deaktiviert sollte also überall ankommen.


    Also ich teste gerade noch mit den Funktionen, im Controller habe ich den Spielerwechsel einprogrammiert.
    Wenn ich auf die Linke Maustaste drücke schaut er nach was unter dem Cursor liegt, wenn dort ein Pawn liegt dann führt er ein Possess aus und wechselt somit den Player Character wie hier im Video zu sehen ist.

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.


    Die Gatling gun ist eine Pawn Blueprint in dem die Rotation der Gatling und alles andere definiert wurde wie schießen etc.
    Das Schießen usw. soll ausgelöst werden wenn ebenfalls die Linke Maustaste gedrückt wird (ist nur zum Testen), habe schon andere Tasten versucht aber egal welchen Input in ich das BP lege die Gatling nimmt keine Inputs an.


    Zu guter letzt habe ich die Gatling, also das Bluepring in den Player charakter geadded, die Idee dahinter ist das die jeweilige Logig da bleibt wo sie ausgeführt wird.
    Also Schießen etc. wird im Waffen BP ausgeführt, die Steuerung im Character und der Spielertausch im Controller.


    Lustig ist auch, wenn ich 2 Gatlings in das Spiel ziehe funktioniert nur bei einer Waffe die Ausrichtung nach der Mausposition die andere Waffe bleibt still, welche die Ausrichtung zulässt ist dabei bei jedem Start Zufall.

  • Achso ja wenn die Mechs pawns sind die du possesesesesd (...) dann brauchst du auch kein "Input Enabled" mehr. Aber mit denen kannst du ja anscheinend Inputs abfangen wie in dem Video zu sehen ist. Ist die Gatling Gun jetzt ein anderer Pawn oder ist das eine Component des kontrollierten Mechs?
    Ich hab das Gefühl hier vermischen sich viele Probleme, wir sollten vielleicht eins nach dem anderen lösen. :)

  • Ja das kann gut sein, habe ehrlich gesagt noch nicht ganz verstanden wann man welchen Blueprint Typen verwendet, die Erklärung ist da auch etwas schwammig finde ich.


    Also ich bin daher auf ein Bauteil (Gatling gegangen) und habe gesagt create Blueprint with...


    Die Gatling ist somit ein PAWN Blueprint mit Logik und ein paar Static Items drin .. sie Bild Waffen_Blueprint.
    Der Mech ist ein Blueprint des Typs Player Character, ich habe nun also das Waffen Pawn Blueprint in das Player Character Mech Blueprint geschoben siehe Bild Player Charakter.


    Denke aber ich weiß wohin du willst, kann es sein das ich aktiv im Player Charakter bin und so dieser nur die Inputs empfangen kann ? Da die Gatling von Typ Pawn ist wäre sie sowas ähnliches wie ein Player Charakter und kann daher keine Inputs empfangen ? Wenn ich nun die Gatling possessssesesn würde :D dann würde sie auch Inputs bekommen ?
    Kann es sein das die Gatling ein Actor BP sein muss ? oder was ganz anderes ? ^^ Ich glaub ich kotz gleich ab ^^



    Nebenbei gesagt:
    Das mit der Übernahme habe ich eh net geschnallt, man kann einen Charakter oder Pawn erzeugen der eigentlich das kann was ein Player Controller kann aber das Movement kann man nicht einbinden ...hätte ja gerne nur ein Player Charakter aber wenn ich andere Mechs übernehmen will müssen die alle als Player Charakter erstellt werden da ich sie sonst nicht steuern kann... zunächst aber sind sie aber vom NPC gesteuert bis ich sie dann übernehme, irgendwie kann man da auch AI Controller einbinden, habe ich aber auch noch nicht aufn Schirm wie das geht..


    Habe das Gefühl ich mache hier allgemein was falsch was die BPs angeht aber ich habe es sonst nicht hinbekommen die Steuerung zu übergeben.

  • Ja ok dann haben wir doch das Problem gefunden, das Gatling Bauteil einzeln als Pawn dazuzupacken bringt nicht viel, es wird keine Inputs bekommen solange du es nicht possessesd. :)
    Also so aus dem Stehgreif würde ich sagen eine sinnvolle Implementierung wäre den kompletten Mech (mit Gatling Gun) als einen neuen Character. Wenn du den Character übernimmst, kann der sich bewegen und schießen durch die Logik im Character. Im Idealfall bringst du die Rotation der Gatling Gun als Animation als Aimoffset rein.


    Damit du nicht alles doppelt und dreifach BPen musst (vorallem so Sachen wie Movement) kannst du dir ja eine Character-BasisPB erstellen die diese Grundlegenden Funktionen (Bewegung, Schaden, Tod) die alle Mechs haben sollen implementiert (ohne den Input abzufangen). Dann einfach von der BP erben für 1. deinen Spielercharakter und 2. deine Mechs.

  • Hmm gefällt mir aber jetzt so nicht die Lösung :/


    Also ja das mit dem Vererben habe ich schon drin, ist OK und läuft auch gut.
    Was mir jetzt nicht so gefällt ist das ich den Mech als komplette Einheit erstellen soll.


    Das Ding ist das wir so ca. 10 Mechs bauen und diese dann aus einzelteilen zusammen setzen so das wir am Ende um die 1000 verschiedenen Zusammenstellungen haben.
    Das bedeutet aber auch das jeder Mech verschiedene Waffenkombinationen haben wird aus Waffen die wir mit ins Spiel eingebaut haben.
    Jede Waffe hat ein anderes Verhalten also benötigt es jeweils eine andere Programmierung.


    Der Sinn ist also das ich nachher wie in einem Editor die Waffen einfach an mein Mech pappen kann und diese dann nicht weiter bearbeiten muss, da die Logik ja in der Waffe steckt.
    Ich verstehe nicht wieso ich erst die Gatling possen muss damit ich input Befehle übergeben kann ??


    Wie machen das denn andere Spiele wo man als Soldat die Waffen wechselt ? Von Maschinengewehr auf Bazooka ?? Programmieren die die gesamte Logik in den Charakter ?
    Gibt es keine Möglichkeit die Waffe per Input Action zu versorgen ? anderer BP Typ vielleicht ?


    Animation in die Gatling einzubauen macht ja keinen Sinn da sie sich nach der Mausposition ausrichten soll.
    Was passiert denn wenn ich im Charakter BP eine Public Variable (Boolean) beim Mausklick auf True setzen und diese dann im Pawn abfrage ?


    Finde das alles echt komisch, UE4 kann so viel aber 2 BPs mit Input Actions zu versorgen soll nicht gehen ?? Kann ich mir nicht vorstellen....




    Kleines Beispiel:
    Ich renne mit meinem Mech rum und bekomme 4 Unterstützungsdrohnen die um mich herum fliegen,
    diese Drohnen sollen nun wenn ich auf ein Ziel schieße auch auf dieses Ziel schießen...Sowas muss doch möglich sein oder ? ist doch nichts anderes als das durchreichen vom Mousinput

    hier kann man meine Modelle kaufen: https://www.cgtrader.com/harlyk
    DAS GRÖSSTE KOMMUNIKATIONSPROBLEM IST,DASS WIR NICHT ZUHÖREN, UM ZU VERSTEHEN. WIR HÖREN ZU, UM ZU ANTWORTEN.

    Einmal editiert, zuletzt von Harlyk ()

  • Ok dann anders. Die Programmierung von den einzelnen Waffen kann ja weiterhin getrennt sein (sollte sie auch der Übersicht halber). Den Input fürs abfeuern kommt aber nicht in die Waffe, sondern in den Character. So würde das auch bei einem Shooter laufen. Der Charakter hat eine Waffe (Actor) und immer, wenn ich die linke Maustaste drücke, wird auf dem Waffenactor eine "FireStart" Funktion aufgeführt die dann alles weitere macht. Dabei kann der Charakter die Waffe vielleicht auch mal wechseln oder ganz ablegen, damit hat aber die spezielle WaffeA nichts zu tun sondern der Charakter, der zB. alle verfügbaren Waffen in einem Array speichert o.ä.. Das ist sicherlich nicht der einzige Weg, aber im ShooterGameExample, im neuen Unreal Tournament und in vielen weitern Beispielen wirds so gemacht.


    Also unterm Strich hast du einen Mech-Charakter, der alle relevanten Inputs entgegen nimmt (Bewegen, Schiessen, usw). Der Mech spawnt zu Beginn seine Waffen und speichert die Referenzen in Arrays oder Pointern. Wenn der Mech einen Feuerbefehl durch Input erhält, gibt er diesen an die entsprechenden Waffen weiter, die dann das Schussverhalten, spawnen von Projektilen oder was auch immer du damit vor hast, bestimmen.


    Und nochmal zu den Animationen: Mir ist schon klar, dass sie sich nach der Mausposition ausrichten soll, ein Aim Offset eines Charakters funktioniert genauso (nur halt mit Bildschirmmitte anstatt Mausposition) und das selbe könntest du auch für deinen Mech machen. Über Tick gehts natürlich auch aber ich habe mir angewöhnt so wenig wie möglich und soviel wie nötig über Tick zu regeln.



    Nochmal, das sind alles nur Vorschläge für mögliche Implementierungen, ich kenne den Umfang und die Anforderungen deines Projekts nicht genau genug um da spezifischer zu werden. Diese sind schließlich die Richtlinie, die die Implementierung einhalten und denen sie gerecht werden muss. Ich will nur verhindern, dass du versuchst durch Tricks und Hacks versuchst eine subobtimale Strategie doch irgendwie ans laufen zu bekommen, das würde sich später sicherlich rächen.


    EDIT: Wenn du willst, ich treib mich heute mal im TS rum, da könnten wir vielleicht schneller eine passende Lösung finden, z.B. über Teamviewer.

  • Das mit dem AimOffset klingt interessant da werde ich mich mal einlesen, danke dafür.


    das ganze über eine Funktion oder eine public Variable zu lösen hatte ich auch schon, ich konnte mir nur nicht vorstellen das UE4 nicht von Haus aus kann. Immerhin ist das Input Action Event auch nicht großartig was anderes.


    Bei meinen weiteren Recherchen bin ich immer wieder über Consume
    gestolpert aber einmal auch über eine Beschreibung bzgl. Actor BPs, vielleicht geht es wenn ich einfach kein Pawn Parent habe.


    ich teste das mal. Das mit dem TS ist ein tolles Angebot, ich weiß nur nicht ob ich heute Abend online sein kann. Sollte es nicht passen vielleicht ein anderes mal ? Natürlich wenn bis dahin nicht das Problem gelöst ist.


    1000 Dank schon mal für deine Hilfe :)

  • Hab den Fehler gefunden :)


    Es ist genau das was ich oben beschrieben habe, der Parent der Gatling darf kein Pawn sein sondern muss ein Actor sein, dann klappt es auch mit der Inputübergabe.
    Hier kommt dann auch das Consume zum tragen.


    Bewegen und drehen alles geht, nur wenn ich jetzt alles auf die Spitze treibe und 2 Gatlings positioniere dann kann ich zwar feuern (linke Maustaste) nur richtet sich die Waffe nicht nach der Maus aus.
    Denke aber das es dabei irgendwie was mit der Targetzuweisung zu tun hat...erst mal nicht so wichtig.


    Man bin ich froh das es nun so klappt wie ich mir das gewünscht habe :)


    Danke noch mal für euer umfangreiches Engagement :)