Exemple #1
0
    /**************************************************
    * Gets the interactuable entity closest to the GameObject
    * passed by parameter.
    *
    * Returns an Interactuable object.
    **************************************************/
    public static Interactuable GetClosestInteractuableEntity(GameObject player)
    {
        Interactuable[] closeInteractEntities;
        closeInteractEntities = GameObject.FindObjectsOfType <Interactuable> ();
        if (closeInteractEntities.Length > 0)
        {
            Interactuable closest          = null;
            Vector3       playerPosition   = player.transform.position;
            float         previousDistance = Mathf.Infinity;
            foreach (Interactuable interactuableEntity in closeInteractEntities)
            {
                Vector3 currentPosition = interactuableEntity.transform.position;
                float   currentDistance = Vector3.Distance(playerPosition, currentPosition);
                if (currentDistance < previousDistance)
                {
                    closest          = interactuableEntity;
                    previousDistance = currentDistance;
                }
            }
            if (previousDistance < distanceToInteract)
            {
                GUIManager.activateInteractuablePopup();

                return(closest.GetComponent <Interactuable>());
            }
            else
            {
                GUIManager.deactivateInteractuablePopup();

                return(null);
            }
        }
        else
        {
            return(null);
        }
    }