Добрый день! у меня есть UI объект, который является Slider из него я сделал HPBar. Есть враги, но обычные 2д объекты, как к ним прикрепить мой UI элемент? мне надо, чтоб он был чуть выше над голвой врагов. Я хотел сделать HPBar дочерним объектом своих врагов, чтоб они двигались вместе, но столкнулся с проблемой, если я переношу свой UI элемент в дочерний к обычному, то он перестает показываться, т.к. я понял, что он не находится в canvas. Как быть?
Может я криво объясняю, но в куче игр есть ХПбар над головой, вот как это сделать, совсем понять не могу, вернее оно работает, но именно чтоб было над головой и двигалось за персонажем не знаю как сделать. Вся остальная механика работает
1) взять персонажа, пересчитать его координаты в экранные или даже лучше во viewport (там они от 0 до 1);
2) а дальше уже дело техники пересчитать в координаты на канвасе.
3) делать каждый кадр
4) профит
freeExec, проблема большая, говорят что поиск по тегу, чтоб ссылку задать потом занимает много ресурсов. Но если я делаю canvas дочерним к моему объекту и сразу вставляю все ссылки, то тогда получится нормальный префаб, но когда я заставляю спавнится монстров из префаба, то их hpbar будет вращаться вместе с ними. Как можно это исправить?
Lesh48, можно инструкцию как правильно сделать HPbar? вот у меня canvas и на нём UI элементом сделал Hp bar, как быть дальше? прикрепить его как дочерний к объекту и потом в префаб и каждый раз создавать канвасы вместе с объектами? как поступать? как лучше и паврильнее сделать это
yraiv, как лучше я уже написал: один канвас в котором накиданы бары. каждый бар следить за своим персонажем и двигается в зависимости от его координат.
using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour
{
public Transform target;
Camera cam;
void Start()
{
cam = GetComponent<Camera>();
}
void Update()
{
Vector3 screenPos = cam.WorldToScreenPoint(target.position);
Debug.Log("target is " + screenPos.x + " pixels from the left");
}
}
Выдаёт MissingComponentException: There is no 'Camera' attached to the "Canvas" game object, but a script is trying to access it.
You probably need to add a Camera to the game object "Canvas". Or your script needs to check if the component is attached before using it.
Ты элемент интерфейса, расположенный на листе перед камерой, хочешь позиционировать относительно объектов в игре, может стоит сделать спрайт HPBar над нужным тебе объектом(спрайт должен быть ребёнком) и не мучиться с этим расположением?