- Home /
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;
}
}
}
Please don't post comments as answers. Please format your code. Please accept the answer that answered your question.
If you don't know how to use this website, watch the tutorial video on the right
Answer by Rob-Fireproof · May 23, 2014 at 11:14 AM
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.
Your answer
Follow this Question
Related Questions
getting the position of player for the minimap to follow 1 Answer
Setting a cube to be exactly size of intersecting camera view plane 1 Answer
How do I set a child object to not rotate if the parent WILL be rotating? 1 Answer
Transform.LookAt - wrong vector 4 Answers
Why is my Camera rotation tilted after parenting it to head? 1 Answer