Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Limitar el movimiento del cursor en diagonal

Iniciado por yhuj, Junio 22, 2018, 02:09:16 PM

Tema anterior - Siguiente tema
Hola otra vez, a partir de las respuestas de mi anterior pregunta (Cálculo entre vectores 2D), me ha dado una idea para realizar de otra manera lo que quiero hacer. Pero me he vuelto a bloquear y he tenido que mirar por todos lados un poquito de inspiración.
 
El caso es que necesitaría que cuando pulsara con el ratón, aunque yo lo moviese de cualquier forma sobre la pantalla, el cursor solo se pudiese mover en diagonal (45º). Mi intento ha sido el que adjunto:
 

if (Input.GetMouseButtonDown(0))
{
  float x_y = Input.mousePosition.x - Input.mousePosition.y;
  float y_x = Input.mousePosition.y - Input.mousePosition.x;
  Vector2 mouseDiagonal = new Vector2(Input.mousePosition.x + y_x, Input.mousePosition.y + x_y);
  Input.mousePosition = mouseDiagonal;
}

 
La idea era que la diferencia entre los pixeles horizontales y verticales del cursor se sumase en la posición del este en Y, y viceversa. Pero VS me marca la última línea en rojo y no entiendo porque es erróneo. ¿Hay alguna manera de determinar la posición del cursor vía C# para que se mueva en diagonal?
 
Muchísimas gracias por su ayuda de antemano otra vez
 

Junio 22, 2018, 03:01:40 PM #1 Ultima modificación: Junio 22, 2018, 03:14:57 PM por lightbug
Cita de: yhuj date=1529669356Muchísimas gracias por su ayuda de antemano otra vez
   
   
      
   


Te está diciendo que no podés escribirla, es un getter no un setter, que si lo pensas tiene algo lógica vos no podés mover a tu cursor(el del SO) por C# directamente, (bueno "casi"), eso lo controla el SO, pero si tuvieras un cursor inventado por vos (no se una imagen que sigue a un punto espacial 2D por ej) podés hacerle lo que quieras. Existen cosas como los modos, locked, confined que lo que hacen es directamente determinar el comportamiento de cursor, sea bloqueandolo o confinandolo en el area de render, pero más allá de eso no es seteable en general o por lo menos no conozco una alternativa.
 
Cita de: yhuj date=1529669356El caso es que necesitaría que cuando pulsara con el ratón, aunque yo lo moviese de cualquier forma sobre la pantalla, el cursor solo se pudiese mover en diagonal (45º).
   


 
 
EDit: Ahora veo bien lo que hiciste y está lindo el algoritmo, aunque con los GetAxis un poco te independizar del Input.MousePosition pero clavando algunos if's, osea que quizás el problema que tengas sea solo el "cursor personalizado".
 
(Borré el código 1)
 
 
 
Si querés agregar algo un poco más personalizado podrías tener algo así también:
 

if (Input.GetMouseButtonDown(0))
{

if(Input.GetAxis("MouseX") != 0 || Input.GetAxis("MouseY") != 0 ){   //si se mueve el cursor
     
   // fijate que es 1 o -1 en ambas coordenadas = siempre en diagonal, si da cero ver el > o usar >=
   Vector2 cursorDir = new Vector2(
          Input.GetAxis("MouseX") > 0 ? 1 : -1 ,   
          Input.GetAxis("MouseY") > 0 ? 1 : -1
      );      
      cursor.Translate( cursorDir * speed );  // un poco pseudocodeado
}
}

 
 
 
Saludos
 
 
 
 

Etiquetas: