/// <summary> /// Called on touch/mouse moved; performs swap of board items. /// </summary> /// <param name='position'>Touch/mouse position.</param> void MyMouseMove(Vector2 position) { if (!selObj1) { return; } Vector2 dragVec = position - dragOrigin; if (dragVec.sqrMagnitude >= dragLength * dragLength) { // Drag detected, perform item swap. int x1 = selObj1.X; int y1 = selObj1.Y; int x2 = x1; int y2 = y1; DragDirection dir = GetDragDirFromVec(dragVec); switch (dir) { case DragDirection.Left: x2--; break; case DragDirection.Right: x2++; break; case DragDirection.Up: y2++; break; case DragDirection.Down: y2--; break; } if (x2 >= 0 && x2 < boardSizeX && y2 >= 0 && y2 < boardSizeY) { selObj2 = boardAll[x2, y2]; // Start swap animation. selObj1.AnimateMove(selObj2.transform.position, swapAnimSpeed); selObj2.AnimateMove(selObj1.transform.position, swapAnimSpeed); gameState = GameState.MoveCheck; } selObj1.ResetColor(); } }