Drag&Drop con Unity y Render Mode Camera

Kaos

Buenas! Tengo un problema que me está matando. No encuentro solución en Google y parece bastante extraño. Os explico:

  1. Tengo un UI Canvas con Render Mode Screen Space - Camera. Lo llamaremos "Tablero".
  2. Le asigno la cámara (la única que tengo en la escena).
  3. Creo otro UI Canvas, dentro del anterior. Lo llamaremos "Carta".
  4. Le aplico un C# con un código de D&Drop a "Carta"
  5. Pulso play. Cuando muevo "Carta" se sale de la pantalla y se va a unas coordenadas que no sé de dónde salen (bueno la Z sí veo que viene de la cámara, de la profundidad, en este caso 100).

El código es muy sencillo, en el drag:

transform.position = eventData.position;

Si pongo el Render Mode en World Space, todo funciona correcto.

Alguna sugerencia?
Muchas gracias!

Kaos

Ostias pues casualmente he conseguido la solución después de horas xD

La comparto con vosotros por si alguno tiene el mismo problema algún día:

public void OnDrag(PointerEventData eventData){
Camera MainCamera = Camera.FindObjectOfType<Camera>();
Vector3 screenPoint = new Vector3(eventData.position.x, eventData.position.y, 100f);
transform.position = MainCamera.ScreenToWorldPoint(screenPoint);
GetComponent<CanvasGroup> ().blocksRaycasts = false;
}
1

Usuarios habituales

  • Kaos