How to stop the camera in a certain position?

Hello to everyone!

I’ve made a code where camera starts to move on press button and in a certain position (currentpos.z > 13f) it appeared in another place and continue moving. Now I need to make it stop in the coordinates where z is equal to 0. And it is not working. As I understand, the last if should be somewhere else or I should include an additional parameter.

Could anyone help with this?
Thank you!!!

THE CODE::

using UnityEngine;
using System.Collections;

public class Navigation : MonoBehaviour {

bool moveCam = false;
bool waitActive = false;	
GenerateRoom updateRoom;

void Start () {

	updateRoom = GameObject.Find("MainRoom").GetComponent("GenerateRoom") as GenerateRoom;
}

void Update () {

			if (Input.GetKeyDown (KeyCode.UpArrow)) {
					moveCam = true;
			}

			if (moveCam == true) {

					Vector3 currentpos = Camera.mainCamera.transform.localPosition;

					if (currentpos.z > 13f) {
							Debug.Log ("true");
							Camera.mainCamera.transform.localPosition = new Vector3 (0f, 5f, -10f);

							updateRoom.DestroyObjects ();
							updateRoom.CreateObjects ();
							updateRoom.ChangeTexture ();
					}

					currentpos.z += 0.06f;
					Camera.mainCamera.transform.localPosition = currentpos;

					if (currentpos.z == 0)
							moveCam = false;
			}

	}

}

Your problem is with floating point number accuracy. The z value might be -0.04 one frame, and then 0.02 the next (since you’re adding 0.06 each frame), and so will never equal exactly 0.0.

Change the “if” to this:

if (currentpos.z >= 0.0f)
{
  currentpos.z = 0.0f;
  moveCam = false;
}

and it should work fine.

In general, doing == comparisons on floats is a bad idea almost all of the time.