Hola de nuevo y buenas tardes
Me encuentro ante un problema concreto pero sencillo
float y;
float P;
void Update()
{
y = transform.position.y;
P += (Input.GetAxis("Mouse Y") / 4);
y = Mathf.Clamp(y, -10, 10);
transform.position = new Vector3(0, y); // con esto hago que al mover el raton en y se mueva el obj
transform.position = new Vector3(0, P); // con esto intento clampear la pos y para que no se pase de un limite
}
Pero no se clampea sino que simplemente no se mueve
Hay algún modo sencillo de hace esto sin llenarlo todo con if?
Gracias por vuestra atencion
Quieres impedir que tu objeto no salga de una posición específica? Me refiero a una posición global que no se cambia en ningún momento.
Puedes usar:
//Agrega ésto a Update.
gameObject.transform.position = new Vector3 Mathf.Clamp(gameObject.transform.position.y, -10, 10);
a ver...
Vector3 deve tener 3 valores como su nombre indica, ambos os estais liando...
//porejemplo:
transform.position = new Vector3(x, y, z);
ademas estas poniendo
transform.position = new Vector3(0, y);
//y justo despues pones:
transform.position = new Vector3(0, P);
//osea, primero dices que la posicion es una y justo despues le dices que es otra
//eso esta mal.... porque lo segundo hace que lo primero no valga para nada
para hacer lo que quieres hacer en Update valdria solo con dos lineas
P += (Input.GetAxis("Mouse Y") / 4);
transform.position = new Vector3(0, Mathf.Clamp(P,-10, 10), 0);
//primer valor(x) es cero, el segundo(y) es "clamp" de "P", y en tercero(z) es cero
luego ademas estas poniendo la variable "P" en mayuscula, cuando deveria ser en minuscula...
las variables van en minusculas.... y las "classes" y las funciones van en Mayuscula....
//.... y el movimiento que vas a lograr con esta linea
P += (Input.GetAxis("Mouse Y") / 4);
//me parece que no va a ser el que buscas...
Cita de: nomoregames date=1582304949Pero no se clampea sino que simplemente no se mueve
Se debería mover, ese P se está cambiando frame a frame, aunque muy poquito (GetAxis / 4 es muy chiquito).
No deberías asignar algo y en la línea que sigue reasignarlo (transform.position ), ya que estás pisando lo anterior. No se si es una de esas líneas de prueba, igual si está de prueba comentala, si no estaría mal. Al final tenés algo así (idéntico pero comentado):
float y; // ---------- De más
float P;
void Update()
{
y = transform.position.y; // ---------- De más
P += (Input.GetAxis("Mouse Y") / 4);
y = Mathf.Clamp(y, -10, 10); // ---------- De más
transform.position = new Vector3(0, y); // ---------- De más
transform.position = new Vector3(0, P);
}
En tu caso solamente funciona esta línea:
P += (Input.GetAxis("Mouse Y") / 4);
transform.position = new Vector3(0, P);
Antes de nada, muchas gracias a todos por vuestras respuestas, me ayudan a no rendirme
Cita de: Alex date=1582310752//Agrega ésto a Update. gameObject.transform.position = new Vector3 Mathf.Clamp(gameObject.transform.position.y, -10, 10);
¡Ha funcionado! pero no entiendo por qué... estuve haciendo pruebas y en una de ellas hice lo siguiente
y = transform.position.y;
P += (Input.GetAxis("Mouse Y") / 4);
P = Mathf.Clamp(P, -10, 10);
y = Mathf.Clamp(transform.position.y, -10, 10);
transform.position = new Vector3(0, P); // con esto hago que al mover el raton en y se mueva el obj
transform.position = new Vector3(0, y);
Por lo que veo es prácticamente es lo mismo solo que en el segundo a el clamp le asigno una variable.... a que se debe que uno funcione y el otro no??
Y lo de las mayusculas a que se debe?? es mejor para la maquina o es solo una buena costumbre
Igor
Cita de: Igor date=1582315501P += (Input.GetAxis("Mouse Y") / 4); transform.position = new Vector3(0, Mathf.Clamp(P,-10, 10), 0); //primer valor(x) es cero, el segundo(y) es "clamp" de "P", y en tercero(z) es cero
en un principio pense en hacerlo como tu, clampeando directamente la var P, pero como el objeto en ocasiones se "teletransporta" , quiero decir que se movera sin tener en quenta la var P, d modo que se desconfiguraria todo....
Y lightbug
No se mueva nada... lo divido entre 4 por que sino moviendo muy poco el mouse el objeto se iba a la pu**, todo funciona hasta que le pongo el clamp
Cita de: Igor date=1582315501Vector3 deve tener 3 valores como su nombre indica, ambos os estais liando...
Bueno, gracias por la observación, realmente dispuse de pocos minutos para escribir la respuesta y no me di cuenta de eso, la próxima revisaré bien.
Cita de: nomoregames date=1582381898lo de las mayusculas a que se debe??
Aquí te dejo una página que lo explica:
http://codigolinea.com/estilo-de-programacion-y-convencion-de-nombres-ii/ (http://codigolinea.com/estilo-de-programacion-y-convencion-de-nombres-ii/)