Ok Incase anyone else is wondering how to achieve this using the NGUI components. Here is my solution, a little ghetto but it works perfectly!

First, I had to change the code in the UICamera Script so that OnDrag gets the finters position instead of the delta.
Then when you have the finger position, rotate the hole UI setup so that the camera is pointing down at the floor.
Next, I have a button and on this button I have the following script.
using UnityEngine;
using System.Collections;
public class DiskController : MonoBehaviour {
public Camera GuiCam;
public Transform lookatObject;
private bool isPressed = false;
void OnPress(bool pressing){
Debug.Log ("pressing = "+ pressing);
isPressed = pressing;
}
void OnDrag(Vector2 delta){
if(isPressed){
Ray ray = GuiCam.ScreenPointToRay(delta);
RaycastHit hit;
if(Physics.Raycast(ray, out hit)){
lookatObject.transform.position = hit.point;
}
}
}
}
All that does is position an object where ever the finger pushes while on the button.
Then there is a game object inside of that button that while zeroed out has its local directions lined up with the global directions and on that game object I attached the following script.
using UnityEngine;
using System.Collections;
public class RotateControlDisk : MonoBehaviour {
public Transform player;
Vector3 target;
void Update ()
{
target
= new Vector3
(player
.position.x,
this.transform.position.y, player
.position.z); transform.LookAt(target);
}
}
And that works like a charm.
Cheers Unity Community!