Buenas noches.
Iré al grano, quiero hacer mover un cubo en 3D (Con las teclas de dirección) a izquierda y derecha con el movimiento limitado a ambos lados. El problema viene cuando un limite está a -1.47 y el cubo llega ahí, se para, pero si sigo dando a la tecla de avanzar, pasa más del límite.
Quiero evitar eso. En un tutorial vi que directamente esto se podría arreglar de forma sencilla trastocando lo que es la posición del rigidbody pero me aconsejaron que no hiciera eso y que en vez de trastocar la posición, usara el metodo de MovePosition, y creo que es el principal problema de todo porque cuando llega a la posición delimitante y sigo manteniendo la tecla de avanzar, se sigue activando MovePosition y calcula una posición más allá del limite.
Os pongo un gif con el problema:
Y aquí el código del movimiento:
void FixedUpdate () {
Vector3 movement = transform.right * Input.GetAxis("Horizontal") * speed * Time.deltaTime;
rb.position = new Vector3(
Mathf.Clamp(rb.position.x, -1.47f, 2f),
rb.position.y,
rb.position.z
);
rb.MovePosition(rb.position + movement);
}
Sé que es una gilipollez y que no se va a notar al final en el juego, pero quiero aprender a hacerlo bien.
Un saludo y muchas gracias.