private GridObject GetSelectableObject(Touch touch) { var touchPosRay = _mainCam.ScreenPointToRay(touch.position); bool hasHit = Physics.Raycast(touchPosRay, out var hit, selectableLayer); if (hasHit) { if (_selectedObj != null) { if (hit.transform.CompareTag("LeftRotator")) { _selectedObj.RotateLeft(); return(_selectedObj); } if (hit.transform.CompareTag("RightRotator")) { _selectedObj.RotateRight(); return(_selectedObj); } _selectedObj.Deselect(); _selectedObj = null; } var moveObj = hit.transform.parent.GetComponent <GridObject>(); if (moveObj.isSelectable) { return(moveObj); } } return(null); }