Unifier Geschrieben 8. November 2016 Melden Share Geschrieben 8. November 2016 Hi Leute, in einem Teil meines Projektes möchte ich Quizfragen - 1 Frage mit bis zu vier Antworten - mappen auif so eine Art Wurfstand wie man sie von der Kirmes / Kerwe / Messe / Volksfest kennt. Das ganze wird in VR umgesetzt. Also der Spieler nimmt entweder einen Ball oder einen Markierer und zielt auf den Stand, der seiner Meinung nach die richtige Antwort repräsentiert. Fallen ausreichend Zylinder in den Auffangbehälter, wird getriggered und die Antwort ausgewertet. Leider scheitere ich bereits am Basteln des Wurfstandes. Zwecks Physik bekommen die Zylinder einen Rigibody. Aus ungeklärter Ursache verformen die Zylinder bei Spielstart aber. Woran liegt das? Am Scaling der Zylinder? Am Rigidbody? Am Zylinder selbst? Ein ähnlich aufgebauter Würfel zeigt dieses Verhalten nicht.... und ein Verstellen der Masse hat auch nichts verändert. Ich habe zwei Screenshots angehängt. Der erste ist vor dem Start, der andere danach. Wie ihr erkennt, werden beide Zylinder verzerrt, der linke fällt zu Boden (da gravity aktiviert ist). Wenn ihr Fragen habt, schießt los! Für Input bin ich dankbar! Viele Grüße Mark Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
malzbie Geschrieben 9. November 2016 Melden Share Geschrieben 9. November 2016 Kann es sein, dass die Zylinder Kindobjekte von dem Wurfstand sind? Es gibt nämlich einen Bug in Unity, den ich selber schon gemeldet habe, bei dem sich Grundkörper von Unity verzerren, wenn man sie als Kindobjekte von anderen Grundkörpern hat. Der Bug wird erst mit der V5.5 weg sein und so lange sollte man Grundkörper nicht verschachteln. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Unifier Geschrieben 9. November 2016 Autor Melden Share Geschrieben 9. November 2016 Hallo Andreas, das stimmt. Es ist so, dass der Grundkörper mehrere Kinder hat, eines von denen der "Zylinderhalter" auf den ich dann die ca. 10 bis 15 Zylinder abgelegt hätte - sodass ich dann wiederum das ganze Gerüse einfach rotieren, translatieren und kopieren kann (so zumindest die Idee / der Wunsch). Sobald ich den Zylinder aus dem Grundkörper heraus in die root-Hierarchie verschiebe, verzerren sie sich nicht. Schon mal danke für den Hinweis. Weißt du, ob das Verhalten auch mit einem Prefab auftreten würde? Wenn nicht, probiere ich es aus und berichte In dem Zuge findet sich ein neues Problem: Das "Brett" (=der Quader) , auf dem die Zylinder positioniert werden sollen, hatte zuerst einen RigidBody. Problem: Selbst wenn ich die Zylinder präzise (zumindest laut Augenmaß) auf dem Brett abstelle - bei Play verhalten sich die Zylinder, als hätte man sie aus 10cm Höhe herabfallen lassen. Nehme ich den Rigidbody raus - dann gleiten die Zylinder durch das Brett durch. Obwohl es einen Collider hat. Verstehe ich nicht ..... Wer hätte gedacht, dass so eine scheinbar einfache Aufgabe so viel Zeit kostet.... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
malzbie Geschrieben 10. November 2016 Melden Share Geschrieben 10. November 2016 Um physikalisch zu kollidieren brauchst du mindestens einen Rigidbody bei den 2 Objekten die kollidieren sollen und beide müssen natürlich einen Collider haben, der nicht auf trigger steht. Wenn dein Brett keinen RB hat, dann muss die Dose einen RB haben. Es dürfen auch beide einen RB haben. Du musst dann aber beim Brett "is Kinematic" anhaken, damit die Schwerkraft nicht mehr auf das Brett wirkt. Das Brett ist dann komplett unbeweglich. Was deine Aussage mit den 10cm bedeutet weiss ich nicht so recht. Natürlich muss die Physik in der Szene erstmal so richtig in Gang kommen. Wenn sich jetzt beim Szenenstart die Kollider schon durchdringen, dann wird die Physik sie trennen, also die Körper etwas bewegen. Dass kann dann wie eine Erschütterung wirken. Deswegen, sollte zu Beginn ein kleiner Spalt zwischen den Kollidern sein, damit die Körper aufeinander fallen können und nicht schon durchdrungen sind, wenns los geht. Außerdem solltest du auch mit realen Dimensionen arbeiten. Eine Einheit in Unity ist ein Meter. Und die Masse ist in Kilogramm angegeben. Wenn die Massen und die Größen nicht passen, dann kommt es auch zu unschönen Ergebnissen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Dominik Geschrieben 11. November 2016 Melden Share Geschrieben 11. November 2016 das ganze kann man aber auch einfacher aufziehen. 1) nimm die dosen als ein extra modell. ordne die einzelne dosen einem hauptscript als "gameobject" an. so das die startposition von jedem gameobjekt lokalisiert wird. die sollten in einer variable oder so übernommen werden. 2)wie oben beschrieben, gebe jeder dose einen righbody und mashcolider so das sie beim testen auf einander fallen. 3)gebe jeder dose einen script mit dem man easy abfragt ob das objekt getroffen wurde. mittels OnCollisionEnter. 4) OnCollisionExit auf dem aufbaupodest anwenden um zu schauen ob auch alle objekte runtergefallen sind und nicht mehr auf dem brett stehen (würd ich mir einfach mit ner variable true'n lassen) 5) weitere anwendungen wie variablen erstellen oder strings für objekte mit namen. für gewonnene spiele oder was auch immer. 6)checke einfach ob alle würfe verbraucht wurden. und falls ja ob der gewinn ausgezahlt wurde. 7)die spiele variablen zurücksetzen (ausgenommen ist der gewinn von dem spieler und die einnahmen der bude) 8)lass dir das beendete spiel ebenfalls durch eine variable true'n. dann fragst du diese ab und setzt die positionen deiner lokalendosen zurück so das der turm direkt wieder aufgebaut wurde. das mit dem werfen ist wieder ne andere sache die man zusätzlich dazu einbaut Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Unifier Geschrieben 14. November 2016 Autor Melden Share Geschrieben 14. November 2016 Um physikalisch zu kollidieren brauchst du mindestens einen Rigidbody bei den 2 Objekten die kollidieren sollen und beide müssen natürlich einen Collider haben, der nicht auf trigger steht. Wenn dein Brett keinen RB hat, dann muss die Dose einen RB haben. Es dürfen auch beide einen RB haben. Du musst dann aber beim Brett "is Kinematic" anhaken, damit die Schwerkraft nicht mehr auf das Brett wirkt. Das Brett ist dann komplett unbeweglich. Okay, das mit den RBs und Collidern mit beweglichen Objekten nehme ich einfach mal so an. Hab noch bisl weiter recherchiert und ist wohl Best Practice. "Deswegen, sollte zu Beginn ein kleiner Spalt zwischen den Kollidern sein, damit die Körper aufeinander fallen können und nicht schon durchdrungen sind, wenns los geht." Genau das ist das Problem: Ob ich nun einen kleinen Spalt und viel Platz lasse - die Zylinder durchdringen das Brett sofort. Ich habe dem Brett wieder ein RB angehängt, es ist jetzt non-gravitational und kinematic. Die Zylinder nutzen Gravity und sind nicht kinematisch. Ohne die korrekt aufgebauten Zylinder brauche ich gar nicht weiter machen..... an der Dicke des Brettes hängt es schon mal nicht. Ideen? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Ikarus Geschrieben 15. November 2016 Melden Share Geschrieben 15. November 2016 Dieses Brett-Zylinder-Problem habe ich mal nachgebaut. Die Zylinder fallen auf das Brett (und nicht hindurch) und bleiben darauf liegen. Die Einstellungen sind dabei wie folgt: Zuerst das Brett. Einfach ein Cube, der passend skaliert wurde. Hier ohne Rigidbody. Der Collider hat IsTrigger = false (Default). Dann die Zylinder. Es sind alles identische Kopien, nur unterschiedliche Positionen. Der Zylinder hat einen Rigidbody, UseGravity ist true, IsKinematic ist false. Der Capsule-Collider hat IsTrigger = false. Das sind alles Default-Einstellungen. Zur Ansicht verwende ich den FPSController. So sieht es aus, wenn man startet. Nachdem die Zylinder auf das Brett gefallen sind, haben sie sich so sortiert. Gibt man dem Brett noch einen Rigidbody mit Default-Einstellungen und startet, landen die Zylinder so: Ich hoffe, das hilft dir weiter Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
malzbie Geschrieben 15. November 2016 Melden Share Geschrieben 15. November 2016 Durchdringen sollten sich die Objekte eigentlich nie, wenn alle Objekte Collider haben und auch der Rigidbody im Spiel ist. Natürlich ist ein Capsule Collider für einen Zylinder echt nicht gut. Da sollte schon ein Mesh Collider da sein, damit die Zylinder auch auf ihren Flächen stehen bleiben. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Unifier Geschrieben 15. November 2016 Autor Melden Share Geschrieben 15. November 2016 (bearbeitet) Hallo Ikarus, Danke für den Eintrag. Leider hilft mir das auch nicht wirklich weiter (die Zylinder lassen sich auch weiterhin nicht stapeln). AAAABER: Was Andreas sagt, dürfte der Casus Knacksus sein - es liegt am Capsule Collider für den Zylinder. Daher nehme ich jetzt der Einfachheit halber schlicht eckige Klötze statt runder. Muss vorerst reichen. Dass ich da nicht selber eher drauf gekommen bin...... :DOH: Also nochmal Danke an alle Helfenden EDIT: Das war ja jetzt erst der Anfang - nun muss ich noch alles gescheit stapeln und ausrichten. Daher Folgefrage: Da ich ja 4 von den Ständen brauche (wegen des Quizz-Systems) und ich alleine bei einem Stand bereits ca. 20-25 Ziele haben werde - spricht doch nichts dagegen, das Ganze als Prefab zu speichern, oder? Oder wären Probleme zu erwarten weil nun wieder keine Kindobjekte usw.? bearbeitet 15. November 2016 von Unifier Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.