void Update()
    {
        floorPosition = new Vector3(transform.position.x, 0.0f, transform.position.z);

        if(interactables.Count > 0)
        {
            Vector3 interactableFloorPosition = Vector3.zero;

            foreach(Interactable i in interactables)
            {
                interactableFloorPosition = new Vector3(i.transform.position.x, 0.0f, i.transform.position.z);
                i.DistanceToPlayer = (interactableFloorPosition - floorPosition).magnitude;
            }

            // Get nearest interactable
            nearestInteractable = interactables.OrderBy(o=>o.DistanceToPlayer).ToList()[0];

            // If player encountered a new nearest interactable
            if(nearestInteractable != prevNearestInteractable)
            {
                nearestInteractable.SetNearestInteractable();

                if(prevNearestInteractable != null)
                {
                    prevNearestInteractable.UnsetNearestInteractable();
                }
            }
        }
        else
        {
            nearestInteractable = null;

            if(nearestInteractable != prevNearestInteractable)
            {
                if(prevNearestInteractable != null)
                {
                    prevNearestInteractable.UnsetNearestInteractable();
                }
            }
        }

        if(nearestInteractable != null)
        {
            nearestInteractable.HandleUse();
        }

        prevNearestInteractable = nearestInteractable;

        #if UNITY_EDITOR

        if(nearestInteractable != null)
        {
            Debug.DrawLine(transform.position, nearestInteractable.gameObject.transform.position, Color.white);
        }

        #endif
	}