Unity Spain

Post Antiguos => General (Antiguo) => Mensaje iniciado por: faustino en Agosto 31, 2018, 11:48:31 PM

Título: movimiento en el celular
Publicado por: faustino en Agosto 31, 2018, 11:48:31 PM
Hola, estoy armando un juego para celular en el cual necesito que la posición x cambie según la posición del dedo, para eso use esto:
 



   
             if (Input.touchCount == 1)
              {
                  Touch touchZero = Input.GetTouch(0);
                  if (touchZero.phase == TouchPhase.Moved)
                  {              
                      touchDeltaPosition = Input.GetTouch(0).deltaPosition;
                      gameObject.transform.Translate(-touchDeltaPosition.x , 0, 0);
                  }
              }
   

[/quote]
 
el problema que estoy teniendo es que cuando lo uso en el celular, la sensibilidad varia mucho dependiendo del celular y el momento.
 
La verdad que no se que cosa esta mal o que puedo cambiar para arreglar esto.
Título: movimiento en el celular
Publicado por: Igor en Septiembre 04, 2018, 08:42:10 PM
hola... claro que varia, ya que hay muchas screens diferentes con diferentes resoluciones.... y nunca coincidiran con las unidades de unity, que usa para situar un objeto en el espacio 3d... o 2d..
 
lo que podrias hacer es dividirlo entre el tamaño de la screen y entonces obtendrias un valor igual en todos los dispositivos cuando delplazes la misma el dedo la misma porcion de pantalla...
 
luego tendrias que ver cuantas unidades de unity "caben" en la pantalla... para multiplicarlo por eso... tambien dependera del tipo de camara que uses (perspectiva o orthografica) y de mas cosas...
 

Vector2 posicionDedo = Input.touch.pos;
posicionDedo.x /= Screen.width;
posicionDedo.y /= Screen.height;
posicionDedo *= unidadesQueCaben;

 
 
 
 
 
...tambien, si los objetos estan sobre un suelo o fondo, podrias lanzar un raycast contra el y te dira el lugar donde "inpacta" y pones el objeto ahi...
 
nose... se puede hacer de muchas formas dependiendo lo que estes haciendo...