Ребят помогите пожалуйста Выделение объекта 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();
}
}
}