// Update is called once per frame void Update() { if (Input.touchCount > 0) { if (Input.GetTouch(0).phase == TouchPhase.Began) { Vector2 worldPoint = Camera.main.ScreenToWorldPoint(Input.mousePosition); RaycastHit2D hit = Physics2D.Raycast(worldPoint, Vector2.zero); if (hit.collider != null) { oldX = hit.collider.transform.position.x; oldY = hit.collider.transform.position.y; objectHit = hit.transform; objectHit.gameObject.GetComponent <SpriteRenderer>().sortingLayerName = LAYER_NAME_CURRENT_CARD; } } if (Input.GetTouch(0).phase == TouchPhase.Moved) { if (objectHit != null) { objectHit.position = (Vector2)Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position); } } if (Input.GetTouch(0).phase == TouchPhase.Ended || Input.GetTouch(0).phase == TouchPhase.Canceled) { if (objectHit != null) { objectHit.gameObject.GetComponent <SpriteRenderer>().sortingLayerName = LAYER_NAME_CARD; Vector2 touchPos = Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position); int x = Mathf.RoundToInt(touchPos.x); int y = Mathf.RoundToInt(touchPos.y); DragCardEndEventArgs dragCardEndEventArgs = new DragCardEndEventArgs(); dragCardEndEventArgs.oldX = Mathf.RoundToInt(oldX); dragCardEndEventArgs.oldY = Mathf.RoundToInt(oldY); dragCardEndEventArgs.x = x; dragCardEndEventArgs.y = y; objectHit = null; OnDragCardEnd(this, dragCardEndEventArgs); } } } }
private void HandleDragCardEnd(object sender, DragCardEndEventArgs e) { worldManager.UpgradeCard(e.oldX, e.oldY, e.x, e.y); }