/// <summary>
    /// Initialises the component.
    /// </summary>
    public void Start()
    {
        this.planeZ = new Plane(Vector3.back, Vector3.zero);

        // Get a refernce to the terrain's touchable component
        GameObject terrain = GameObject.Find("Terrain");
        this.terrainTouchable = terrain.GetComponent<TouchableComponent>();
    }
    /// <summary>
    /// Get the component that lies at the given screen position.
    /// </summary>
    /// <param name="touchPosition">The screen position of the touch.</param>
    /// <param name="touchable">The touchable component.</param>
    /// <param name="hitPoint">The point at which the component was touched in world coordinates.</param>
    /// <returns>The touchable component; Null if touchable object exists at the postion.</returns>
    private bool TryGetTouchedComponent(Vector2 touchPosition, out TouchableComponent touchable, out Vector3 hitPoint)
    {
        // Cast a ray into the scene at the touched point
        Ray ray = Camera.main.ScreenPointToRay(touchPosition);

        // See if an actor was hit
        // TODO

        // No actors were hit. See where the ray hits the terrain on the Z = 0 plane
        float distance;
        if (this.planeZ.Raycast(ray, out distance))
        {
            touchable = this.terrainTouchable;
            hitPoint = ray.GetPoint(distance);
            return true;
        }

        touchable = null;
        hitPoint = Vector3.zero;
        return false;
    }