How to Move an Object to a Random Position
Im new so I don't know what I am doing. I'm trying to get a object from the left side to move to a random position on the right side every 5 seconds. For example, an object on coordinates (-4, 0) to coordinates (4, RandomY). Any extra solutions and tips are appreciated as well. Thanks!
{ float timer; float timeToMove; public float speed; float yPos; public Vector3 desiredPos; void Start() { timer = 0; timeToMove = 3; yPos = Random.Range(-4.5f, 4.5f); desiredPos = new Vector3(transform.position.x, yPos, transform.position.z); } void Update() { timer += Time.deltaTime; if (timer >= timeToMove) { // I copied this, I do not know what this does transform.position = Vector3.Lerp(desiredPos, transform.position, Time.deltaTime * speed); if (Vector3.Distance(transform.position, desiredPos) <= 0.01f) { yPos = Random.Range(-4.5f, 4.5f); desiredPos = new Vector3(transform.position.x, yPos, transform.position.z); timer = 0.0f; } } } }
Answer by Sgt_Spike · Jul 05, 2018 at 08:32 PM
Could you not just use these two lines of code here? 'yPos = Random.Range(-4.5f, 4.5f); desiredPos = new Vector3(transform.position.x, yPos, transform.position.z); '
These are used to set the object to a position on the left I assume. If you want to set the object to a random position on the right, I think you could just change 'desiredPos' with a new variable and then create a new variable for x, y, or z depending on which axis you're moving the object on.
Answer by jasontran237 · Jul 05, 2018 at 11:27 PM
for anyone wanting to do something similar, this is my finished code. public float timer; float timeToMove; public float speed; public float yPos; float xPos; Vector3 desiredPos; void Start() { timer = 0.0f; timeToMove = 3; xPos = -4; desiredPos = transform.position; } void Update() { timer += Time.deltaTime; if (timer > timeToMove) { transform.Translate(new Vector3(1, yPos, 0) * speed * Time.deltaTime); } if (timer > 3) { if (timer < 3.1f) { yPos = Random.Range(-1.0f, 1.0f); } } if (transform.position.x > 4) { transform.position = new Vector3(xPos, 0, 0); timer = 0.0f; } else { timer += Time.deltaTime; } } }
Your answer
![](https://koobas.hobune.stream/wayback/20220612170112im_/https://answers.unity.com/themes/thub/images/avi.jpg)