i have six different empty game objects in the scene with 6 different buttons. When i click on button 1 the camera will move towards game object 1 and rotate itself according to the target game object but when camera moves towards 3rd game object my camera will start moving in a different random way along with different random rotation this is caused by float t = 0.0f; in the code like when i call public void Wallview() then my camera moves towards object 3 but it starts moving in different random way with random rotation please help me thank
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class camMOVEtwo : MonoBehaviour {
public Transform handleview;
public Transform pressureview;
public Transform wallview;
public Transform sechandleview;
public Transform pressuretwoview;
public Transform switchview;
public GameObject handlebtn;
public GameObject pressurebtn;
public GameObject wallbtn;
public GameObject handletwobtn;
public GameObject pressuretwobtn;
public GameObject switchbtn;
public float transitionSPEED;
Transform currentVIEW;
public bool flag = false;
public bool isStarted = false;
Vector3 currentangel;
public List<GameObject> modelparts;
private void Start () {
handlebtn.SetActive (true);
pressurebtn.SetActive (false);
wallbtn.SetActive (false);
handletwobtn.SetActive (false);
pressuretwobtn.SetActive (false);
switchbtn.SetActive (false);
foreach (GameObject obj in modelparts) {
obj.GetComponent<BoxCollider> ().enabled = false;
}
}
private void Update () {
if (flag && !isStarted) {
StartCoroutine (newnew ());
isStarted = true;
}
}
IEnumerator newnew () {
float t = 0.0f;
while (t < 2.0f) {
t += Time.deltaTime;
transform.position = Vector3.Lerp (transform.position, currentVIEW.position, Time.deltaTime * transitionSPEED);
currentangel = new Vector3 (Mathf.LerpAngle (transform.rotation.eulerAngles.x, currentVIEW.transform.rotation.eulerAngles.x, Time.deltaTime * transitionSPEED),
Mathf.LerpAngle (transform.rotation.eulerAngles.y, currentVIEW.transform.rotation.eulerAngles.y, Time.deltaTime * transitionSPEED),
Mathf.LerpAngle (transform.rotation.eulerAngles.z, currentVIEW.transform.rotation.eulerAngles.z, Time.deltaTime * transitionSPEED));
transform.eulerAngles = currentangel;
Debug.Log ("coroutine is running");
yield return null;
}
}
public void Handleview () {
currentVIEW = handleview;
handlebtn.SetActive (false);
flag = true;
isStarted = false;
}
public void Pressureview () {
currentVIEW = pressureview;
pressurebtn.SetActive (false);
flag = true;
isStarted = false;
}
public void Wallview () {
currentVIEW = wallview;
wallbtn.SetActive (false);
flag = true;
isStarted = false;
}
public void Secondhandleview () {
currentVIEW = sechandleview;
handletwobtn.SetActive (false);
flag = true;
isStarted = false;
}
public void Pressuretwoview () {
currentVIEW = pressuretwoview;
pressuretwobtn.SetActive (false);
flag = true;
isStarted = false;
}
public void Switchview () {
currentVIEW = switchview;
switchbtn.SetActive (false);
flag = true;
isStarted = false;
}
}