Hit Result welches Mesh ist selektiert

  • Ich möchte, das wenn man mit der Maus über ein Mesh fährt dieses Mesh ein anderes Material bekommt sobald man das Mesh wieder verlässt, soll es das alte Material wieder bekommen.


    Das ist mein Weg:

    1.Wenn ein Mesh (zb (Mesh_A)selektiert ist, setze ich eine Bool Variable auf true.

    2.Verlässt man das Mesh wird es auf false gesetzt.


    3.Wenn true dann Material 1 wenn false Material 2.


    Mein Problem ist nun, dass der Bool immer True ist weil natürlich immer irgend ein Mesh ausgewählt ist. False ist es nur, wenn ich in den Himmel schaue und wirklich nichts selectiert wird.


    Zwei Fragen dazu:


    1.Ich brauche den HitResults für ein bestimmtes Mesh wie kann ich das Material für die Dauer des Hovers eines Meshes ändern.

    2.Auch sollen nur Meshes gehovert werden, dass Physik Eigenschaften besitzt. Nur wie kann ich das abfragen ?:pinguin:

    You may love to play games, but that doesn’t make you a developer.
    I love to eat dinner, but that doesn’t make me a chef.

  • Sleepy

    Hat den Titel des Themas von „Hit Result welches Mesh ist selectiert“ zu „Hit Result welches Mesh ist selektiert“ geändert.
  • Der Materialwechsel selbst ist auch kein Problem aber es geht eher darum das Material eines bestimmten Meshes zu wechseln.


    Stell dir vor du hast eine Szene mit 200 Cubes und du fährst mit der Maus einmal über alle Cubes.


    Nun muss jeder Cube in eine Variable gespeichert werden und dann das Material gewechselt werden.

    Sobald die Maus einen nicht mehr berührt soll das Material wieder zurück gesetzt werden.


    Probleme:

    1. Wie speichere ich ein Mesh um das Material zu setzen und wie setze ich es wieder zurück.

    2.Wie Speichere ich von jedes Mesh das Material der eine Cube hat zb ein Blaues Material ein anderes Mesh ein rotes Material


    Das ist meine Lösung bis jetzt:


    Da ich aber dauerhaft ein Hit habe, wird bei allen Mesh das Material gewechselt ISVALID ist immer Valid.


    Ich möchte quasi irrgend wie abfragen: Ist das Mesh nicht mehr selektiert.

    You may love to play games, but that doesn’t make you a developer.
    I love to eat dinner, but that doesn’t make me a chef.

  • So, habe mir mal dein BP etwas angeschaut. Ist das so richtig das sowohl bei Is Valid True als auch bei False Ja ausgegeben wird?


    Und die zweite Frage ist, willst du ein komplett anderes Material nehmen oder einfach nur einfarbig grün, oder was auch immer, einfärben?


    Wenn du nur einfärben willst, dann könntest du zum Beispiel das Material gleich so erstellen, dass es zwei Basisfarben gibt. Zum einen eben halt das richtige Material und zum anderen eine Konstante mit der Farbe die es im Hoverfall bekommen soll. Dazwischen machst du ein Lerp mit einem Parameter den du per Blueprint dann eben halt von 0 auf 1 und Unhover von 1 auf 0 wechselst. Dann sparst du dir das Zwischenspeichern des Originalmaterials.


    Die Zweite Möglichkeit wäre, du nimmst eine zweite Materialvariable "Original Material" zur Hilfe, und kurz bevor du das Material änderst, speicherst du das Material in dieser Variable per Set. Und bei Unhover setzt du Material dann auf Originalmaterial zurück.

  • So, habe mir mal dein BP etwas angeschaut. Ist das so richtig das sowohl bei Is Valid True als auch bei False Ja ausgegeben wird?


    Und die zweite Frage ist, willst du ein komplett anderes Material nehmen oder einfach nur einfarbig grün, oder was auch immer, einfärben?

    Ich hab das am Blueprint verfolgt wohin der Resultat läuft. Deswegen ist True und False das selbe Material und Text.

    Wenn du nur einfärben willst, dann könntest du zum Beispiel das Material gleich so erstellen, dass es zwei Basisfarben gibt. Zum einen eben halt das richtige Material und zum anderen eine Konstante mit der Farbe die es im Hoverfall bekommen soll. Dazwischen machst du ein Lerp mit einem Parameter den du per Blueprint dann eben halt von 0 auf 1 und Unhover von 1 auf 0 wechselst. Dann sparst du dir das Zwischenspeichern des Originalmaterials.

    Ne das geht ich ich habe eine Menge Modelle (hier im test nun nicht aber später) mit unterschiedlichen Materials. Nach dem das Objekt gehovert wurde muss das alte Material wieder drauf.

    Ich muss also auf jedenfall das Material abfragen, speichern und dann wieder aufs Material legen.


    Ich hab das ja mit Get Hit Result Under Cursor by Channel gelöst damit kann ich abfragen welches Objekt sich unter dem Courser befindet geh ich vom Objekt runter, bin ich ja automatisch auf einem anderen Objekt.


    Mesh hit = true

    Mesh1 hit = true

    Mesh2 hit = true


    Der Hit ist also immer true und es wird bei jedem Kontakt das Material gewechselt. Aber er wird eben nie mehr auf falsh gesetzt. Ich müsste sowas abfragen wie "ist nicht mehr unter dem Cursor" dann dass Material aus der Variable xyz aufs Objekt.

    You may love to play games, but that doesn’t make you a developer.
    I love to eat dinner, but that doesn’t make me a chef.

  • Ja, aber da du ja die Lerpmethode zitiert hast gehe ich mal davon aus das du diesen Bereich meinst.


    Wenn du es mit Lerp löst, dann änderst du das Material gar nicht erst, du änderst nur die Farbe. Deswegen brauchst du es halt nicht zwischenspeichern.


    Oder fragen wir mal so. Brauchst du das Ganze nur um kenntlich zu machen das etwas anvisiert ist und im Falle einer Aktion eben halt auf diesen Gegenstand etwas wirkt, oder hat das ganze einen beeinflussenden Zweck?

  • Es geht mir ums Markieren, ich hatte das auch mit den Outlines getestet und wollte das selbe nun auch mit einem Materialwechsel ausprobieren.


    Ich muss aber dazu sagen das es auch sein kann dass ein Mesh gar kein Material und keine Colorid besitzt.

    Es wäre dann zb denkbar das Mesh zu selektieren und ein Material zuzuweisen.

    You may love to play games, but that doesn’t make you a developer.
    I love to eat dinner, but that doesn’t make me a chef.

  • Ich würde mehr mit Referenzen speichern. Speicher bei einem Hit das getroffene Mesh (bzw dessen referenz) als "CurrentMesh" in eine Variable. Davor eine Abfrage "Ist das getroffene Mesh gleich CurrentMesh?". Wenn ja dann nix machen, ist noch das gleiche. Ansonsten wieder mesh ref in die Variable schreiben und den ganzen Material Zirkus anwerfen.



    Wenn du nur bestimmte Meshes "enablen" willst also z.B. nicht den Skybox und Boden dann arbeite doch mit Tags. Gib den editierbaren Meshes das Tag mit a la "SleepyEditable" und begrenze die Materialfunktion auf Meshes die dieses Tag haben.

  • Ich würde mehr mit Referenzen speichern. Speicher bei einem Hit das getroffene Mesh (bzw dessen referenz) als "CurrentMesh" in eine Variable. Davor eine Abfrage "Ist das getroffene Mesh gleich CurrentMesh?". Wenn ja dann nix machen, ist noch das gleiche. Ansonsten wieder mesh ref in die Variable schreiben und den ganzen Material Zirkus anwerfen.

    Ich glaube das geht in die richtige Richtung ich weiß nur nicht so recht wie ich das umsetzen soll.


    1.Ein Mesh wird getroffen und wird in eine Variable gespeichert. Variable "Mesh" ist nun voll.

    2.Ein anderes Mesh wird getroffen und das neue Mesh wird in die Variable geschrieben. Mesh ist also immer nich voll nur mit anderem Inhalt.


    Das Mesh in der Variable und das Mesh das getroffen wird ist ja immer das selbe. Der Bool ist immer True.

    Würde ich nur jede Sekunde eine Abfrage machen, dann wäre ein Vergleich möglich.



    Ich glaube mir fällt dafür einfach das Verständnis. *dead*

    You may love to play games, but that doesn’t make you a developer.
    I love to eat dinner, but that doesn’t make me a chef.

  • Du musst prüfen ob das Mesh das gleiche ist BEVOR du es in die Variable schreibst, sonst ist es ja logischerweise immer gleich...