Ich habe versucht zu verstehen, was der Unterschied zwischen diesen beiden Methoden zum Bewegen eines starren Körpers ist. Beide scheinen das Objekt mit einer konstanten Geschwindigkeit zu bewegen und beide arbeiten mit einem RigidBody. Was ist der Unterschied zwischen den beiden und wann sollte einer über den anderen verwendet werden?
transform.translate
kann manchmal schlechtere Leistung hat als mit einem Starrkörper & Geschwindigkeit, wie sie in dieser Frage & Antwort diskutiert . Für Objekte ohne Collider ist dies kein Problem.Sie machen ziemlich unterschiedliche Dinge, können aber verwendet werden, um die gleichen Ergebnisse zu erzielen.
Durch Einstellen des Körpers
velocity
werden Geschwindigkeit und Richtung festgelegt. Solange der Körper vom Physiksystem aktualisiert wird, wird seine Geschwindigkeit (effektiv) zu seiner Position addiert, um zu einer neuen Position für den Rahmen zu gelangen. Dies bewirkt, dass sich das Objekt im Laufe der Zeit mit konstanter Geschwindigkeit bewegt, bis Sie die Geschwindigkeit auf etwas anderes oder auf Null ändern.Die
Translate
Methode desTransform
Typs passt die in der Transformationsmatrix des Körpers gespeicherte Übersetzung an, indem die bereitgestellte Übersetzung hinzugefügt wird. Dies bewirkt, dass sich das Objekt sofort an die neue Position bewegt und das physikalische System ignoriert. Dies führt nicht dazu, dass sich das Objekt im Laufe der Zeit bewegt, es sei denn, Sie rufen es ständig in jedem Frame auf.Verwenden Sie diejenige, die für die gewünschte Semantik bei der Interaktion mit dem Objekt am sinnvollsten ist. Wenn Sie es nur einmal (oder gelegentlich) positionieren und dort belassen möchten, ist die Verwendung
translate
in Ordnung. Wenn Sie möchten, dass es sich ständig bewegt und gut mit anderen physischen Objekten interagiert, ist die Einstellungvelocity
wahrscheinlich insgesamt weniger arbeitsintensiv als die manuelle Übersetzung jedes Frames selbst.quelle
Der Unterschied beginnt eine Rolle zu spielen, wenn Ihre starren Körper miteinander kollidieren.
Das Ändern der Transformation "teleportiert" das Objekt an einen anderen Ort, ohne ihm kinetische Energie zu geben. Es wird nicht mit Objekten auf dem Weg interagieren. Das Bewegen eines Objekts durch eine Geschwindigkeit bedeutet jedoch, dass andere Objekte aus dem Weg geschoben werden, wodurch die anderen Objekte beschleunigt und das Objekt selbst abgebremst werden.
quelle