- Home /
Using lerp to go between 3 different locations isn't working
Hi I am trying to make a main menu screen which will move to different areas when the player clicks on different icons (such as play game). Going from the centre to the left or right is fine. Going back to the centre from either left or right is also fine, the problem I am having is when I go either left/right then back to the centre and then choose the opposite side.
So for example from Play Game I choose to go back to the main menu and from main menu I choose to go to Instructions and that's the problem. It doesn't lerp all the way to the stored location it kind of stops halfway.
Any help is greatly appreciated here is my code for the main menu.
using UnityEngine; using System.Collections;
public class mainMenuCam : MonoBehaviour { public static bool rotateLeft; public static bool returnLeft; public static bool rotateRight; public static bool returnRight; public Vector3 startPosition; public Vector3 leftPosition; public Vector3 rightPosition; public Transform leftTarget; private float camSpeed; private Transform camera;
// Use this for initialization
void Start () {
rotateLeft = false;
returnLeft = false;
rotateRight = false;
returnRight = false;
camera = transform;
camSpeed = 2.0f;
}
// Update is called once per frame
void Update () {
if (rotateLeft) {
transform.position = Vector3.Lerp (camera.position, leftPosition, Time.deltaTime * camSpeed);
}
if (returnLeft) {
transform.position = Vector3.Lerp (camera.position, startPosition, Time.deltaTime * camSpeed);
}
if (rotateRight) {
transform.position = Vector3.Lerp (camera.position, rightPosition, Time.deltaTime * camSpeed);
if (returnRight) {
transform.position = Vector3.Lerp (camera.position, startPosition, Time.deltaTime * camSpeed);
}
}
}
and this code is an example of a button.
using UnityEngine; using System.Collections;
public class mainMenuPlayGame : MonoBehaviour { private int camSpeed; // Use this for initialization void Start () { camSpeed = 2;
}
// Update is called once per frame
void Update () {
}
void OnMouseEnter(){
renderer.material.color = Color.green;
}
void OnMouseExit(){
renderer.material.color = Color.white;
}
void OnMouseUp(){
mainMenuCam.rotateLeft = true;
mainMenuCam.returnLeft = false;
}
}
Thanks
I just wanted to know why have you put left-> true and false in the same function?
void On$$anonymous$$ouseUp(){
main$$anonymous$$enuCam.rotateLeft = true;
main$$anonymous$$enuCam.returnLeft = false;
}
And also if you must know On$$anonymous$$ouseUp only happens for 1 frame and then it resumes to be called on its own. According to the description Unity:
$$anonymous$$onoBehaviour.On$$anonymous$$ouseUp()
Description: On$$anonymous$$ouseUp is called when the user has released the mouse button.
Note that On$$anonymous$$ouseUp is called even if the mouse is not over the same GUIElement or Collider as the has mouse has been pressed down on. For button-like behavior see: On$$anonymous$$ouseUpAsButton.