Lo siento, soy un principiante en Unity, pero quiero mover un objeto de juego solo en el eje Y y hacer que se mueva con una velocidad aleatoria para que a veces se mueva rápido y otras veces más lento.
este es mi codigo (Se pone nervioso porque descubrí que mi error es que puse la velocidad aleatoria en la actualización, pero no sé cómo solucionarlo)
public class RandomUpDown : MonoBehaviour { [SerializeField] float minSpeed = 1f; [SerializeField] float maxSpeed = 2f; [SerializeField] float height = 4f; Vector3 pos; private void Start() { pos = transform.position; } void Update() { float randomSpeed = Random.Range(minSpeed, maxSpeed); float newY = Mathf.Sin(Time.time * randomSpeed) * height + pos.y; transform.position = new Vector3(transform.position.x, newY, transform.position.z); } }realmente depende de lo que quieras, pero puedes hacerlo con una rutina y un bucle.
por ejemplo:
void Start() { StartCoroutine(myRandLoop) } public IEnumerator myRandLoop() { while(true) { float randomSpeed = Random.Range(minSpeed, maxSpeed); float newY = Mathf.Sin(Time.time * randomSpeed) * height + pos.y; transform.position = new Vector3(transform.position.x, newY, transform.position.z); yield return new WaitForSeconds(delayAmount) } }