Physics Simulation + Attach to Socket

  • Hey :bye: ,


    ich möchte in meinem Projekt Kartons stapeln.

    Doch wenn ich den untersten Karton rausziehe, dann sollen die Kartons nachunten fallen, also "Set Simulation Physics" auf True .
    Beim aufheben vom Karton wird dann das Mesh zum meiner Hand an einem Sockel anhaften(attach).
    Kurz bevor es aber an Sockel anhaften soll, mache ich wieder "Set Simulation Physics" auf false, aber dann ist das Mesh nicht mehr möglich am Sockel anzuhaften.

    Hier ein Video: Gyazo Link

    Im Video sieht man , dass wenn ich die anderen Boxen, die ich zum ersten mal aufhebe, ganz normal am Sockel anhaften. Sobald aber die Physic an oder aus gestellt werden ist es nicht mehr möglich das Mesh zu tragen.

    Wie kann ich das Problem lösen? ||

  • Ich glaube, du brauchst Physik gar nicht hin und her zu schalten, nur weil du es an einen Sockel heften willst. Wie verhält sich das Ganze, ohne hin und her zu schalten?

    Was Sleepy erwähnt, die Masse, ist auch nicht ganz unwichtig. Ich weiß jetzt zwar nicht, was die Grundeinstellung der Masse ist, aber ich habe mal viel mit Masseparametern experimentiert, und muss sagen, die sind nicht ganz unwichtig. Wenn deine Kiste 100 Kg wiegt, wird dein Playercharkter sie auch entsprechend schwer hochheben können.

  • Vielleicht ist sie zu schwer ? Ne im Ernst: Ich kenne dein Script nicht, aber hast du mal die Masse der 2. Box überprüft ?


    Du könntest mal ausprobieren nicht nur die Physik zu aktivieren sondern auch die Masse zu setzen.


    Video mit Gewicht 0,1 und Physik ist an: Gyazo Link     

    Video ohne Physik: Gyazo Link    

    Wie verhält sich das Ganze, ohne hin und her zu schalten?


    Ist genau wie im ersten Link mit Gewicht und Physik.

  • Ich kann ja nur vermuten, weil, du hast ja kein Script gepostet.

    Aber kann es vielleicht sein, dass du beim falschen Objekt die Physik ausgeschaltet hast? Den theoretisch brauchst du ja nur bei dem Objekt, welches du in die Hand nimmst, die Physik ausschalten.


    Wenn ich es aus Physik/Mathematischer Sicht angehe, die Engine berechnet ja nur den Bewegungsvektor, sprich nach unten, mit der Masse. Wenn du jetzt aber einen Gegenstand aufnimmst, musst du eine Gegenkraft > Masse berechnen.


    Du könntest also einfach die Kraft, die zum Aufheben verwendet wird, von der Masse des Objektes abziehen. Also Masse - Aufgewendete Kraft. Wobei du natürlich auch den Bewegungsvektor beim Aufheben, also Richtung Player, berücksichtigen könntest. Dann brauchst du die Physik nicht ausschalten, und würdest, wenn es so funktioniert, wie ich es mir vorstelle, auch eine natürlichere Animation des Aufhebens erlangen.

  • Ich kann ja nur vermuten, weil, du hast ja kein Script gepostet.

    Aber kann es vielleicht sein, dass du beim falschen Objekt die Physik ausgeschaltet hast? Den theoretisch brauchst du ja nur bei dem Objekt, welches du in die Hand nimmst, die Physik ausschalten.


    Wenn ich es aus Physik/Mathematischer Sicht angehe, die Engine berechnet ja nur den Bewegungsvektor, sprich nach unten, mit der Masse. Wenn du jetzt aber einen Gegenstand aufnimmst, musst du eine Gegenkraft > Masse berechnen.


    Du könntest also einfach die Kraft, die zum Aufheben verwendet wird, von der Masse des Objektes abziehen. Also Masse - Aufgewendete Kraft. Wobei du natürlich auch den Bewegungsvektor beim Aufheben, also Richtung Player, berücksichtigen könntest. Dann brauchst du die Physik nicht ausschalten, und würdest, wenn es so funktioniert, wie ich es mir vorstelle, auch eine natürlichere Animation des Aufhebens erlangen.

    Mir ging es ja darum, das ich bei Physischen Objekten nicht attachen kann.
    Wüsste nicht was ich für einen Script zeigen soll.^^

    Ich teste es mal in einem neuen Projekt.

  • Nun, vielleicht kann man da zum Beispiel, ob du beim richtigen Objekt die Physikeigenschaften ausschaltest.

    Aber ansonsten gilt, lässt du Physik an, musst du dem entsprechenden Objekt logischerweise einen Impuls in deine Richtung geben.


    Hey sry hatte letzten Tage keine Zeit.


    Also, es ist grundsätzlich so, unabhängig von meinem Projekt, wenn man ein Mesh an einem Actor setzt , dann geht es nur, wenn die Physik aus ist.
    Wird die Physik aktiviert, danach wieder deaktiviert, wird trotzdem nicht attached.

    Meine Frage wie kann ich auf meinen Sockel "Box" attchen, wenn ich vorher Physik aktiviere und danach deaktiviere?

    Hier ein Beispiel in einem neuen Projekt:

    Video: Gyazo Video Link

    Cube Actor:


    Player Inputs:




  • Also auf meinem Monitor sind die Screenshots so klein, ich kann sie nicht lesen, höchstens erahnen.


    Meine Frage wie kann ich auf meinen Sockel "Box" attchen, wenn ich vorher Physik aktiviere und danach deaktiviere?

    Aber, wenn du dich hier nicht verschrieben hast, dann hast du doch schon die Antwort. Du musst natürlich die Physik kurz vorher deaktivieren.

  • Also auf meinem Monitor sind die Screenshots so klein, ich kann sie nicht lesen, höchstens erahnen.


    Aber, wenn du dich hier nicht verschrieben hast, dann hast du doch schon die Antwort. Du musst natürlich die Physik kurz vorher deaktivieren.

    Bei den Screenshots kannst du ran zoomen und im Video kannst du oben Links texte lesen, die meine Aktionen zeigen.

    Also nocheinmal:


    Actor hat beim start physik deaktiviert = Es funktioniert
    Actor hat beim start physik aktiviert = Es funktioniert nicht
    Actor hat beim start physik deaktiviert, wird aber Ingame vor dem Attachen erst aktiviert danach deaktiviert =
    Es funktioniert nicht

    Ich deaktiviere es vor dem Attach Befehl, aber es funktioniert danach nicht mehr.
    Sobald mit dem Befehl "Set simulate physic" das Mesh vom Actor verändert wird , funktioniert nicht mehr der "Attach to" Befehl.

  • Hey zusammen


    Ich erinnere mich an ein ähnliches Problem.

    Ich musste das Collision Profile wieder setzen, beim Aktivieren von Physics und nachher wieder beim Deaktivieren.


    Code
        WeaponComponent->SetCollisionProfileName("IgnoreOnlyPawn");
        WeaponComponent->SetGenerateOverlapEvents(false);
        WeaponComponent->SetSimulatePhysics(true);
    
    Später:
        WeaponComponent->SetSimulatePhysics(false);
        WeaponComponent->SetCollisionProfileName("NoCollision");

    Vielleicht hilft dir das ja.


    Gruss