Tiles Geschrieben 8. Juni 2015 Melden Share Geschrieben 8. Juni 2015 Ich fluche mich immer noch durch mein Schussproblem. Und kriege noch nicht mal den doowen Spherecast zum Laufen. Der triggert einfach nichts. distanceToObstacle ist immer Null. Die Bullet ist inzwischen Kinematic, dessen Spherecollider auf Trigger. Ich bewege sie per Transform.Translate. Und die Coins haben natürlich auch alle einen Spherecollider drauf. Wo liege ich denn hier falsch? var radius:float=0.48; // the radius of our casted spherevar distanceToObstacle:float=0.0; // distance to hit object var speed:float=5.0; function FixedUpdate () { var hit:RaycastHit; if (Physics.SphereCast (transform.position, radius, Vector3.forward, hit, 10.0f)) { distanceToObstacle = hit.distance; } Debug.Log(distanceToObstacle.ToString("F6")); transform.Translate(Vector3.forward * speed*Time.deltaTime); } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
malzbie Geschrieben 8. Juni 2015 Melden Share Geschrieben 8. Juni 2015 Du könntest dir mein neuestes Tutorial anschauen, oder aber direkt auf die Physics Settings gehen und den Haken bei Trigger setzen. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Tiles Geschrieben 8. Juni 2015 Autor Melden Share Geschrieben 8. Juni 2015 Danke Malzbie, Du meinst den Haken bei Raycast Hit Trigger? Der ist drin Mal deine Tutorials schauen gehen Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
malzbie Geschrieben 8. Juni 2015 Melden Share Geschrieben 8. Juni 2015 Tja, wenn der Haken drin ist, dann ist evtl. forward nicht das richtige forward oder dein debug.log ist falsch. Was bedeutet denn ("F6") ? Mach doch einfach mal print(hit.distance); in der if-Abfrage. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 8. Juni 2015 Melden Share Geschrieben 8. Juni 2015 1.2345678.ToString(); //1.2 1.2345678.ToString("F6"); //1.234567 Ganz doofe Frage, nur um sicher zu sein: Du benutzt für das Spiel 3D-Physik? Wäre jedenfalls komisch. Und wenn du 2D-Physik benutzt, funktioniert SphereCast nicht, da es eine 3D-Physik-Funktion ist. Für Casts in 2D-Physik brauchst du Physics2D.Blub. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Tiles Geschrieben 8. Juni 2015 Autor Melden Share Geschrieben 8. Juni 2015 Schönes Video zum Thema. Leider bin ich auch da nicht fündig geworden. Okay, jetzt wirds heiss. Mit Vector3.up und Vector3.right triggerte es was. Aber nicht mit Vector3.forward. Dabei bewege ich meine Kugel doch forward. Und meine Coins liegen doch auch in forward Richtung. Beim weiteren Basteln habe ich leider einen Teil zu viel entsorgt. Im Projectview gibts ja leider kein Undo. Deswegen habe ich das Projekt einfach mal eingestampft, ein Backup geschnappt, obigen Code reingepastet. Dadurch ist Projekt gleich, Code gleich, hab ja nun den Code vom kaputten Projekt reingepastet, Einstellungen gleich. Und jetzt tuts was es soll. Now go figure ... O_O Das sind immer die gemeinsten Fehler ! Problem gelöst wies aussieht. Aber danke fürs Mitdenken Was bedeutet denn ("F6") ? Damit kannst du im Debug.Log angeben wieviele Nachkommastellen ausgedruckt werden sollen. Sehr praktisch das Crossposting, ja ich benutze 3D fürs Spiel Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Tiles Geschrieben 9. Juni 2015 Autor Melden Share Geschrieben 9. Juni 2015 Tja, zu früh gefreut. An der Bande triggerts überhaupt nicht. Die Coins triggern aber tadellos. Dabei ist alles gleich. Gleicher Layer, etc. . Bevor ich das jetzt als Bugreport rausjage der dann die nächsten 5 Jahre eh nicht gefixt wird, wäre von euch jemand so Nett im Projektfile nachzuschauen ob ich nicht doch irgendwo eine Einstellung verhauen habe? Das Projektfile ist 400 Kb. http://www.reinersti...statborders.rar EDIT sagt, Und dann war da noch ... GAH! Schon wieder nix. Auch die Methode ist unzuverlässig. Mir gehn echt die Optionen aus -.- Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
malzbie Geschrieben 9. Juni 2015 Melden Share Geschrieben 9. Juni 2015 Ich kann mir das nachher mal anschauen. Aber wie ich ja schon woanders erwähnt habe, ist das Raycasten oder Spherecasten zu jedem Frame nicht gut, weil bei bewegten Objekten immer auf das nächste FixedUpdate gewartet wird und da dann die Tabelle der ganzen Collider neu generiert wird. Oder so ähnlich. Du kannst also eh nur beim Abschießen den Sperecast senden und schauen wo er was trifft. Trifft er eine Kugel ist alles geritzt und du kannst schon jetzt bestimmen, in welchen Slot die Kugel fallen soll. Trifft er nur die Bande, musst du wissen in welchem Winkelt er die Bande Trifft und im entsprechenden Ausfallwinkel an dem Hitpoint der Bande einen neuen Spherecast schicken, der dann wahrscheinlich eine Kugel trifft. Der abgeschossene Bullet fliegt dann ganz normal, seinen Weg, bis er eine Kollision mit einer Kugel hat und dann setzt er sich einfach in den vorbestimmten Slot. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Tiles Geschrieben 9. Juni 2015 Autor Melden Share Geschrieben 9. Juni 2015 Danke Malzbie Aber wie ich ja schon woanders erwähnt habe, ist das Raycasten oder Spherecasten zu jedem Frame nicht gut, weil bei bewegten Objekten immer auf das nächste FixedUpdate gewartet wird und da dann die Tabelle der ganzen Collider neu generiert wird. Oder so ähnlich. Ah, verdammt, das würde mein Problem vom anderen Thread erklären. Die überlappenden Bullets ... Nur um Missverständnissen vorzubeugen, hier gehts nur darum wieso die Bullet durch die Bande fliegt. Ich finde den Fehler einfach nicht. Das muss irgendwo im Setup klemmen. Ich habe da aber noch mal einen Thread aufgemacht wegen den überlappenden Bullets ... http://forum.unity-c...__fromsearch__1 Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
malzbie Geschrieben 9. Juni 2015 Melden Share Geschrieben 9. Juni 2015 Ich habe eben kurz mal dein Projekt drin gehabt und konnte feststellen, dass du nicht in die richtige Richtung castest. Du musst transform.forward anstatt Vector3.Up nehmen. Die Wänder werden auch erkannt. Kannst du ja selber mal mit print(hit.collider.name); ausgeben lassen. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Tiles Geschrieben 9. Juni 2015 Autor Melden Share Geschrieben 9. Juni 2015 Du bist der Beste. Ich wusste es is nur ne Kleinigkeit. Aber ich habe es einfach nicht gesehen ^^ Aber wieso geht die Kugel immer noch durch die Wand? Die Bullet müsste doch an der Wand genauso anhalten wie an den Coins. EDIT, ah verdammt, oben vergessen den Spherecast auch auf transform.forward zu stellen. Purrfect \o/ 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.