public void OnEndDrag(PointerEventData eventData) { if (!m_Draggable) { return; } // Play sound QuestionCanvas.GetInstance().PlayTickSound(); // Temporarely move draggable object back to initial location ResetInstance(); // Perform a raycast at mouse pointer position RaycastHit2D hit = Physics2D.Raycast(Input.mousePosition, Vector3.forward, 10.0f); // Check if raycast hit was a non-static question tile if (hit && hit.transform.gameObject.tag.Equals(TARGET_TAG)) { // Get a reference to this question tile QuestionTile tile = hit.transform.GetComponent <QuestionTile>(); // If non-static and not occupied, slot this value if (!tile.IsStatic() && !tile.IsSlotted()) { transform.position = tile.transform.position; tile.SlotValue(GetValue()); } } }
// Events ------------------------------------------------------------- public void OnBeginDrag(PointerEventData eventData) { if (!m_Draggable) { return; } // Play sound QuestionCanvas.GetInstance().PlayTickSound(); // Get offset m_CurrentOffset = transform.position - Input.mousePosition; // Temporarely move object Vector3 tempPosition = m_CurrentOffset + Input.mousePosition; transform.position = m_InitialLocation; // Determine if there was a tile underneath RaycastHit2D hit = Physics2D.Raycast(Input.mousePosition, Vector3.forward, 10.0f); // Check if raycast hit was a non-static question tile if (hit && hit.transform.gameObject.tag.Equals(TARGET_TAG)) { // Get a reference to this question tile QuestionTile tile = hit.transform.GetComponent <QuestionTile>(); // Reset the tile tile.ResetInstance(); } // Move object back to original position transform.position = tempPosition; }