Kojote Geschrieben 9. Februar 2018 Melden Share Geschrieben 9. Februar 2018 Grüße! Sagt mal, was habt ihr für Erfahrungen mit der Round Methode von Mathf gemacht. Ich muss bei meinem Spiel mit ziemlich genauen Werten arbeiten. Ich habe einen Z-Wert den ich gerne runden wollte. Der Wert liegt bei 0.008798. Dachte ich bekomme ihn mit Round auf genau 0. Dies scheint aber nicht der Fall zu sein. Sollte mit Mathf nicht genau auf die nächste volle Stelle gerundet werden. Warum diese Ungenauigkeit? Kojote Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 9. Februar 2018 Melden Share Geschrieben 9. Februar 2018 Wenn du nicht 0 rausbekommst, was dann? Wie sieht dein Code aus? Mathf.Round hat noch nie nicht funktioniert, also muss da bei der Verwendung ein Wurm drin sein. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Kojote Geschrieben 9. Februar 2018 Autor Melden Share Geschrieben 9. Februar 2018 Das ist das einzige was ich aufrufe: Mathf.Round(transform.position.z); Ausgang ist: 0.008798 Nach dem runden: 0.008798 Eigentlich sollte er genau auf 0 kommen, jedoch keine Ahnung ob er bis auf 3 Stellen genau ist. So fern ich weiß, sollte er eigentlich auf volle Zähler aufrunden, sprich ohen Komma. In SQL gibt es einen Befehl mit dem man die Nachkommastellen streichen kann, gibt es so etwas auch in C#? Wäre ne alternative bei 0.00X. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 9. Februar 2018 Melden Share Geschrieben 9. Februar 2018 Mach dir mal ein ganz einfaches Script das nur das hier macht: private void Start() { print(Mathf.Round(0.008798f)); } Dann siehst du, dass der Fehler woanders liegt Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Mr 3d Geschrieben 9. Februar 2018 Melden Share Geschrieben 9. Februar 2018 schreibst du nur Mathf.Round(transform.position.z); ? "Mathf.Round();" gibt dir den Wert gerundet zurück, setzen musst du ihn selbst.. transform.position = new Vector3(transform.position.x, transform.position.y, Mathf.Round(transform.position.z)); Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Kojote Geschrieben 9. Februar 2018 Autor Melden Share Geschrieben 9. Februar 2018 Ohje, Anfängerfehler, sehr peinlich, danke dir @Mr 3d! Also genauer wirds nun schon, 0.000159. Ist zwar immer noch nicht 0, aber schon ne ganze Ecke genauer. transform.position = new Vector3(Mathf.Round(transform.position.x), Mathf.Round(transform.position.y), Mathf.Round(transform.position.z)); Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 9. Februar 2018 Melden Share Geschrieben 9. Februar 2018 Kommt aber 0 raus. Wenn der Wert am Ende tatsächlich nicht genau 0 ist, dann ändert er sich nachträglich noch. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Kojote Geschrieben 10. Februar 2018 Autor Melden Share Geschrieben 10. Februar 2018 Ging mir auch schon durch fen Kopf, wüsste aber nicht wo. Ich schau nochmal alles Zeile für Zeile durch, mal sehen ob ich noch etwas finde. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 10. Februar 2018 Melden Share Geschrieben 10. Februar 2018 Falls du dir das Leben nicht schwerer als nötig machen willst, gibt's genau dafür Debugger 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.