Unity transform.position ist falsch?

1 Antwort

Hi,

die Position wird nicht falsch sein, sondern das ist ganz normal. :-)

Der Computer kann Fließkommazahlen/float nicht immer zu 100 % korrekt darstellen, sondern nur eine Annäherung. Bsp: wenn Du ein float möchtest, der 123,45 abbildet, kann es sein, dass der Computer 123,499999999999 draus macht, da es technisch nicht anders geht.

Wenn Du jetzt anfängst mit Addieren/Subtrahieren (was ja die Verschiebung Deiner Position ist), ergeben sich minimale Rundungsfehler. Und diese sind der Grund, warum Deine If-Abfrage so nicht klappen kann.

Die Lösung hierfür ist, dass Du bspw. Vector3.Distance nutzt. Dieser berechnet die Distanz zweier Vektoren und wenn dieser sehr klein ist, hast Du die Position erreicht:

if (Vector3.Distance(Monster.transform.position, NextPosition) <= 0.01) {
  // Position wurde erreicht mit einer Genaugigkeit von 0.01
}

Ob Du nun 0.01 als Genauigkeit oder was kleiner verwendest, dass musst Du einfach für Dein Spiel ausprobieren :)

Woher ich das weiß:Berufserfahrung