Lerping between points?
Hi, I have the following scene: I would like to move the pink cube smoothly between the points when a key is pressed. I have the following code:
public class MoveSection : MonoBehaviour {
public Vector3 centre = new Vector3 (0, 0, 0);
public Vector3 right = new Vector3 (0, 0, 4);
public Vector3 left = new Vector3 (0, 0, -4);
void Update() {
if (Input.GetKey(KeyCode.RightArrow)) {
if (transform.position == left) {
//move to middle
Debug.Log ("move to middle");
transform.position = Vector3.Lerp (left, centre, 1);
}
if (transform.position == centre) {
//move to right
Debug.Log ("move to right");
transform.position = Vector3.Lerp (centre, right, 1);
}
if (transform.position == right) {
Debug.Log ("cant move");
}
}
if (Input.GetKey(KeyCode.LeftArrow)) {
if (transform.position == left) {
//cant move
}
if (transform.position == centre) {
//move to left
}
if (transform.position == right) {
//move to middle
}
}
}
}
I'm not even sure if I am lerping correctly! Thanks for your help,
Answer by NoseKills · Feb 03, 2017 at 05:04 PM
You don't say exactly how you want this to work so it's not easy to help
The code you posted requires you to press the button continuously in order for any moving to happen and (if you'd change that last Lerp parameter to something smaller than 1) you could leave the object anywhere between 2 other cubes if you stop pressing the key.
Well, here's something
public class MoveSection : MonoBehaviour {
public float speed = 1;
public Vector3 centre = new Vector3 (0, 0, 0);
public Vector3 right = new Vector3 (0, 0, 4);
public Vector3 left = new Vector3 (0, 0, -4);
public Vector3[] positions = new[]{left, centre, right};
public int index = 0;
void Update() {
if (Input.GetKeyDown(KeyCode.RightArrow)) {
index = Mathf.Clamp(++index, 0, positions.Length - 1);
}
if (Input.GetKeyDown(KeyCode.LeftArrow)) {
index = Mathf.Clamp(--index, 0, positions.Length - 1);
}
Vector3 target = positions[index];
transform.position = Vector3.MoveTowards(transform.position, target, speed * Time.deltaTime);
}
}
Your answer
![](https://koobas.hobune.stream/wayback/20220612110240im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Camera registering it is at correct position when it isn't 0 Answers
Smooth Forward Movement with a CoRoutine 1 Answer
Vector3.Lerp not moving object backwards 0 Answers
Help with combining Vectors 0 Answers
Game object position is stuck when using mathf.sin,Object's position stuck when using Math.sin 0 Answers