Ребят помогите пожалуйста Выделение объекта Raycast

Ребят, как реализовать чтобы при нажатии на врага вверху экрана появлялось его хп? ниже скрипт в котором по нажатию на врага выделяется противник кружком под ногами, а по нажатию в любое другое место он исчезает, хочу сделать тоже самое только чтобы появлялось Хп противника при нажатии на него, и при клике в другое место таргет с врага слетал, ну и оставить выделение противника кружком который сейчас в этом скрипте. HealthBar для противника сделал и убрал с него галочку в инспекторе. Данный скрипт повесил на пустой объект на сцене

using UnityEngine;
using System.Collections;

public class MainSelect : MonoBehaviour {

    public LayerMask layerMask;
    public GameObject _select;
    public GameObject _enemyHP;
    private static GameObject  selectObj, enemyObj;
    private LayerMask layerMaskInvert;

    private void Start()
    {
        _enemyHP = GetComponent<GameObject>();

    }
    void Awake()
    {
        // дополнительная маска нужна, чтобы рейкаст игнорировал выбранные слои и слой по умолчанию Ignore Raycast
        layerMaskInvert = layerMask.value | 1 << 2; // копируем выбранные слои и добавляем к ним еще один
        layerMaskInvert = ~layerMaskInvert; // инвертируем маску
    }



    void Select() // выбор объекта
    {
        GameObject obj = GetObject();
        if(obj == null) // сброс
        {
            Destroy(selectObj);
            Destroy(enemyObj); 
            selectObj = null;
            enemyObj = null;
            return;
        }
        if(!selectObj) selectObj = Instantiate(_select) as GameObject; 
        selectObj.transform.parent = obj.transform;
        selectObj.transform.position = GetPosition(obj.transform.position, layerMaskInvert);

        /*
        if(.......);
        { 
            не могу понять какое условие нужно записать чтобы по нажатию на врага появлялось его хп вверху экрана
        }
        */
    }


    GameObject GetObject() // получаем объект 
    {
        GameObject obj = null;
        RaycastHit hit;
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        if(Physics.Raycast(ray, out hit, Mathf.Infinity, layerMask))
        {
        obj = hit.transform.gameObject;
        }
        return obj;
    }

    Vector3 GetPosition(Vector3 position, LayerMask layers) // находим поверхность под объектом
    {
        Vector3 result = position;
        RaycastHit hit;
        Ray ray = new Ray(position, Vector3.down);
        if(Physics.Raycast(ray, out hit, Mathf.Infinity, layers))
        {
            result = hit.point + hit.normal * 0.07f;
        }
        return result;
    }

    void Update()
    {
        if(Input.GetMouseButtonDown(0))
        {
            Select();
        }
    }
}

Ответы (0 шт):