2017-10-11 3 views
1

Dies ist meine erste legitime Frage, die ich mit Codierung habe und ich weiß nicht, wo Sie eine Antwort finden.transform.position vektor nur ändern, wenn aus der szene

Ich habe ein Objekt, das ich im Laufe der Zeit in der X-Dimension verschieben muss. Hier ist der folgende Code, den ich habe.

Vector3 temp = transform.position; 
temp.x += forwardSpeed * Time.deltaTime; 
transform.position = temp; 

Wenn ich debuggen kann ich sehen, dass temp.x nicht ändert. Wenn ich das Objekt jedoch aus dem Kamerabereich hinausbewege, beginnt sich das X zu ändern. Wenn dies nicht genug Informationen sind, lass es mich wissen und ich werde mehr Code oder was immer ich zeigen muss. Danke für Ihre Hilfe.

+0

Haben Sie sich die Variablen angesehen, die Sie versucht haben, 'temp.x' mit? Wenn man annimmt, dass das Beispiel vollständig ist, ist die Kopie nicht notwendig: transform.position.x + = forwardSpeed ​​* Time.deltaTime; '<- Beachten Sie, dass dies nur funktioniert, wenn Sie nur das Objekt entlang der x-Achse der Welt verschieben möchten. – George

+0

Wenn ich das tue, bekomme ich diesen Fehler 'Kann einen Werttyp nicht ändern Rückgabewert von 'UnityEngine.Transform.position'. Überlegen Sie, ob Sie den Wert in einer temporären Variablen speichern wollen. Also verwende ich die Temperatur, um den Wert zu ändern. –

Antwort

0

Wenn Sie Vector3 temp = transform.position festlegen, wird eine Kopie der transform.position zurückgegeben.

transform.position += (Vector3.right * forwardSpeed * Time.deltaTime); 

Wo Vector3.right ist die shorthand of writing Vector3(1, 0, 0):
In Ihrem Fall sollte so sein, der richtige Weg, die X-Position zu ändern.
Auf diese Weise stellen Sie sicher, dass die Anweisung den Vektor transform.position aktualisiert, nicht eine Kopie davon.

Verwandte Themen