Unity 3D Position speichern die sich nicht mehr verändert wenn gespeichert?

Script - (Spiele, Programm, programmieren)

2 Antworten

Zuerst: Es gibt einen besseren Weg, die Koordinaten zu speichern. Nimm einen Vector3, und weise ihm this.transform.position zu. Genau so kannst Du es auch mit oldPos machen.

float seconds = timer % 60;

Was erhoffst Du Dir von dieser Zeile? Ich bin mir ziemlich sicher, dass dadurch seconds schon nach dem ersten Durchgang größer als 5 wird. Generell kannst Du Dir die Variable seconds klemmen. Da Du die deltaTime wahrscheinlich in Millisekunden bekommst, musst Du dann folgendes machen:

if (timer/1000 > 5.0)

Zudem hast Du in deiner jetzigen Variante zwar seconds auf 0 gesetzt, den timer aber lässt Du unverändert. Das sorgt dafür, dass dann auch sofort wieder die Bedingung seconds >= 5 wahr wird, da Du ja seconds = timer % 60 hast.

Was das Speichern der Position angeht: Du brauchst ein Attribut (Variable in Klasse, wie timer oder realize) vom Typ Vector3 (ich nenne ihn mal pos). In die Abfrage nach dem Klicken der linken Maus schreibst Du dann:

pos = this.transform.position;

Damit wird Deine Position nur ein Mal gespeichert. Wenn Du jetzt wieder dahin zurück möchtest musst Du folgendes machen:

this.transform.position = pos;

Da momentan aber die linke Maus mehrfach gedrückt werden könnte, und so weiter pos verändert, musst Du noch folgendes machen:

if (Input.GetMouseButtonDown (1) && !realize)

Ich hoffe mal, ich kann Dir damit weiterhelfen. Getestet habe ich es nicht, weshalb Du vielleicht noch ein wenig probieren musst, aber ich bin mir ziemlich sicher, dass es so gehen sollte.

zantes 
Fragesteller
 05.03.2016, 15:25

Klappt ! Danke dir vielmals :)!

0

Dein Problem ist, dass du nicht weißt, wie du die Position vernünftig speicherst? Aber du hast public float timer, die auch unabhängig gespeichert wird...?