thewhiteshadow Geschrieben 28. Juni 2018 Melden Share Geschrieben 28. Juni 2018 Ich versuche für ein Objekt, was ich erzeugen will mit Physics.CheckBox vorher zu prüfen ob es plaziert werden kann. Leider schlägt die Funktion nie an. Der Ausschnitt sieht etwa so aus: BoxCollider collider = prefab.GetComponent<BoxCollider>(); location = ... rotation = ... // Das lasse ich mir mit Graphics.DrawMesh anzeigen und stimmt auch, da das Objekt an genau dieser Position landet. // meinLayer ist Konstant und richtig. Das habe ich mehrfach überprüft. // collider.size ist beim prefab gesetzt. bounds würde an der Stelle nicht funktionieren. // Ich weiß, dass CheckBox die halbe Größe haben will, also /2 if (!Physics.CheckBox(location, collider.size/2, rotation, meinLayer, QueryTriggerInteraction.Collide)) { // frei (hier geht er immer rein) } else { // hier geht er nie rein } Meine Rahmenbedinngungen: Ich führe die Aktion in der Start-Methode aus. Alle Objekte haben das "Trigger"-Flag im Collider und kein Rigedbody. Im Anhang sieht man deutlich die Überlappung der Teile. Das vorhandene Teil (Links) das neu plazierte Teil (Rechts) mit der Debug-Wireframe-Box über Graphics.DrawMesh gezeichnet. (Der Collider stimmt damit überein). Dennoch schlägt CheckBox nicht an. P.S. Bitte nicht auf die unsinnige Ausrichtung der Kollisions-Box im vergleich zur Plazierung achten. Ich weiß, dass ich hier noch Feintuning betreiben muss. Weiß jemand vielleicht was ich falsch mache, oder wo ich nochmal ansetzen kann? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
thewhiteshadow Geschrieben 28. Juni 2018 Autor Melden Share Geschrieben 28. Juni 2018 Update: Wenn ich vor dem Test ein Empty-GameObjekt erstelle, und einen Rigedbody sowie einen Collider gebe, dieses dann an die Position des vorhandenen Objekt setze erkennt der Test dieses und auch nur dieses Objekt. Habe mal mit OverlapBox alle Collider ausgegeben. Er erkennt nur mein dynamisches Empty-GameObjekt . Das kommt mir nicht normal vor. Außerdem hab dem vorhandenen Objekt ein Rigedbody verpasst hat aber nix genützt. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Life Is Good Geschrieben 29. Juni 2018 Melden Share Geschrieben 29. Juni 2018 Hast du einfach nur 2D Ansicht in deiner Scene View an, oder benutzt du 2D Box Collider ? Falls letzteres der Fall ist, würde ich mal davon ausgehen, dass Checkbox bloß 3D Collider überprüft. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
thewhiteshadow Geschrieben 29. Juni 2018 Autor Melden Share Geschrieben 29. Juni 2018 Sieht nur 2D aus. Es sind 3D Collider, andernfalls würde ich vermutlich eine NPE erhalten, weil BoxCollider null ist. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Life Is Good Geschrieben 29. Juni 2018 Melden Share Geschrieben 29. Juni 2018 Dann stimmt vielleicht irgendeiner deiner Parameter nicht (vielleicht die Rotation oder collider size ?) Bei mir klappt das ohne Probleme. Edit: Hab gerade erst gesehen, dass du das in der Start machst. Vielleicht wird Start da vor dem 1. Physikzyklus ausgeführt. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
thewhiteshadow Geschrieben 29. Juni 2018 Autor Melden Share Geschrieben 29. Juni 2018 Die parameter ergeben die im Anhang gezeige Box (Links). Und die überlappt den rechten Collider. Auf Y-Achse überlappen die sich natürlich auch (Der screenshot ist von oben). Das mit der Start-Methode hab ich auch schon überlegt, aber es steht nichts davon in der Doku und von der Funktionsweise sollte das egal sein. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Life Is Good Geschrieben 29. Juni 2018 Melden Share Geschrieben 29. Juni 2018 Die Execution order zeigt ja, dass Start vor FixedUpdate ausgeführt wird. Aber keine Ahnung ob's daran bei dir liegt. Zeig vielleicht einfach mal deinen ganzen Code, vielleicht ist da irgendwas anderes krumm ¯\_(ツ)_/¯ Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
thewhiteshadow Geschrieben 29. Juni 2018 Autor Melden Share Geschrieben 29. Juni 2018 Das mit dem ganzen Code ist etwas schwierig, weil der über 2 Klasse mit diversen Hilfsklassen geht und ziemlich lang ist. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
thewhiteshadow Geschrieben 29. Juni 2018 Autor Melden Share Geschrieben 29. Juni 2018 Ok ich hab eine Lösung. Irgendwie mag Checkbox die Angabe eines Layers nicht. Wenn ich ~0 verwende geht es. Obwohl der Layer definitiv richtig ist und ich überhaupt kein Objekt mit anderem Layer habe. Das ist zwar nervig, weil ich jetzt mit OverlapBox arbeiten muss und den Layer im Nachgang überprüfen muss, aber immerhin gehts. Ich würe nur zugern wissen, warum das so ist. Möglicherweise ein Bug? Ok ist weiß es nun. LayerMask.NameToLayer gibt keine Maske zurück, sondern nur den Layer. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 30. Juni 2018 Melden Share Geschrieben 30. Juni 2018 LayerMask.GetLayer gibt eine Maske zurück, aber idR ist man besser bedient, die LayerMask über den Editor einzustellen. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.